我目前正在开发一个需要读取键盘输入的嵌入式系统(实际上 - 它需要读取模拟键盘的条码扫描器)。
我在硬件部分使用了带有 Debian Squeeze 的 SheevaPlug,并且我使用了一个非常基本的初始化脚本来触发负责执行业务逻辑的 python 程序。
就是那个需要读取键盘输入的脚本。
我们开发的版本基本上是功能齐全的计算机,带有屏幕和其他东西,它工作得很好 - 但它不是真的可以接受 - 但在这里我真的不明白哪里出了问题(虽然我承认我有点期待它)。
所以我想知道如何在 init 启动脚本时以某种方式将键盘连接到脚本的 STDIN。
或者,如果有人知道一个 python 库可以让我完全绕过这个问题并直接从 input/eventX 读取,我会很感兴趣。
提前致谢
最佳答案
试试这个(但要小心/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
关于python - 在 Linux 初始化脚本中使用 STDIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7181181/