在Linux中捕获USB设备输入

3 投票
1 回答
5092 浏览
提问于 2025-04-17 13:56

经过一番搜索,我找到了一种方法,可以从我的USB二维码扫描仪获取输入。

import sys
pipe = open('/dev/input/event3', 'r')
while 1:
        for character in pipe.read():
                print(character)

这个方法是有效的,但我对上面的方法还有两个问题。

我在一台运行Debian Wheezy的Raspberry设备上,带有图形界面,并且可以确认第二个问题在图形界面上会出现……我还不知道在没有图形界面的系统上会有什么输出。

  1. 有没有更好的方法?
  2. 上面的方法,当我右键点击时,脚本会取消,并一次性输出所有已扫描的条目。这是为什么呢?

更新

我觉得我之前对上面代码的结果理解错了,最后它输出的是ASCII字符,所以我做了以下操作:

sys.stdin = open('/dev/tty')
a = raw_input('Scan: ')

1 个回答

1

第一个问题其实跟你的二维码扫描仪有关系。我觉得你很幸运,它能这样工作,因为很多时候,USB设备和主机之间的沟通协议都很复杂。比如说,使用鼠标时,你怎么区分点击和鼠标移动呢?你需要某种数据格式来进行交换。

第二个问题可能是因为你的方法在pipe.read()那里卡住了,它在等输入。似乎只有右键点击才能结束read()函数,这样打印才能正常工作。

撰写回答