python - 在 Linux 初始化脚本中使用 STDIN

标签 python linux stdin init

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

我在硬件部分使用了带有 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/

相关文章:

linux - 安装在 AIX/Solaris/HPUX 上的 REDUX : How to overcome an incompatibility between the ksh on Linux vs.?

linux - 如何从独立的 GNU screen session 中邮寄命令的输出?

php - 如何从 PHP 脚本中将数据通过管道传输到可执行文件中?

python - 有多少独特元素的子序列是可能的?

python - 将 pandas 数据框中的空格替换为 NAN

linux - 自动快照并自动创建 AMI

Ruby:如何从文件或 STDIN 中读取压缩数据?

python - 如何根据其他列的值在数据框中创建新列?

Python - 使用 pyqtgraph 快速绘图(16ms)?

python - 在 pycharm 中使用标准输入