在Linux init脚本中使用STDIN

时间:2011-08-24 19:32:41

标签: python linux stdin init

我目前正在研究需要读取键盘输入的嵌入式系统(实际上 - 它需要读取键盘模拟的条形码扫描器)。

我正在使用带有Debian Squeeze的SheevaPlug作为硬件部分,我正在使用一个非常基本的init脚本来触发一个负责执行业务逻辑的python程序。

这是需要读取键盘输入的脚本。

我们已经开发了基本上功能齐全的计算机的开发版本,屏幕和东西,它工作得很好 - 但它不是真的可以接受 - 但是在这里我并没有真正理解什么是错的(虽然我承认我有点期待它)。


所以我想知道在init启动时如何以某种方式将键盘连接到我的脚本的STDIN。

或者,如果有人知道一个允许我完全绕过问题并直接从input / eventX读取的python库,我会感兴趣。



提前致谢

1 个答案:

答案 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