3

所以,经过一番搜索......找到了以下从我的 USB QR 码扫描仪捕获输入的方法。

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

它有效,但我仍然对上述方法有 2 个问题。

我在带有 Debian Wheezy 和 GUI 的 Raspberry 设备上,并且可以确认问题 2 发生在 GUI 上......还不知道没有 GUI 的系统上的输出

  1. 有什么更好的方法吗?
  2. 上面的方法,当我单击右键时,脚本会立即取消并输出所有已扫描的条目。这是为什么?

更新

我想我错过了解释上面代码的结果,因为它最终输出了 ASCII 字符,所以我最终做了以下事情:

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

1 回答 1

1

问题 1 确实取决于您的 QR 扫描仪。我认为你很幸运,它是这样工作的,因为大多数时候,USB 设备都有复杂的协议来与主机通信。例如,对于鼠标,您如何区分点击和鼠标移动?您需要某种数据格式来交换。

问题 2 可能是因为您的方法在 pipe.read() 处阻塞,等待输入。不知何故,只有右键单击才能结束 read() 函数并允许打印工作

于 2013-01-28T14:54:54.187 回答