我目前正在研究需要读取键盘输入的嵌入式系统(实际上 - 它需要读取键盘模拟的条形码扫描器)。
我正在使用带有Debian Squeeze的SheevaPlug作为硬件部分,我正在使用一个非常基本的init脚本来触发一个负责执行业务逻辑的python程序。
这是需要读取键盘输入的脚本。
我们已经开发了基本上功能齐全的计算机的开发版本,屏幕和东西,它工作得很好 - 但它不是真的可以接受 - 但是在这里我并没有真正理解什么是错的(虽然我承认我有点期待它)。
所以我想知道在init启动时如何以某种方式将键盘连接到我的脚本的STDIN。
或者,如果有人知道一个允许我完全绕过问题并直接从input / eventX读取的python库,我会感兴趣。
提前致谢
答案 0 :(得分:1)
试试这个(但要小心/ dev / input / event0可以改为代替重新插入多个USB HID设备):
import struct
inputDevice = "/dev/input/event0" #keyboard on my system
inputEventFormat = 'iihhi'
inputEventSize = 16
file = open(inputDevice, "rb") # standard binary file input
event = file.read(inputEventSize)
while event:
(time1, time2, type, code, value) = struct.unpack(inputEventFormat, event)
print type,code,value
event = file.read(inputEventSize)
file.close()
def getUSBHIDs(self):
s=getExecOutput('cat /proc/bus/input/devices')
events=[]
for i in range(len(s)):
m=re.search('^.*Handlers=kbd.*event(?P<name>[0-9]+).*$',s[i])
if m:
events+=['/dev/event'+m.group('name')]
return events