【问题标题】:Capturing input from usb device in Linux在 Linux 中从 USB 设备捕获输入
【发布时间】:2013-01-28 14:50:11
【问题描述】:

所以,经过一番搜索......找到了以下方法来捕获我的 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: ')

【问题讨论】:

    标签: python linux usb pipe device


    【解决方案1】:

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

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

    【讨论】:

    • 嗯... QR 扫描仪,没有我做任何事情,它自己将结果输出到它可以的地方(主要是终端,因为它总是打开)...所以它只是抓住那个输出的问题
    • 我的猜测是你的 linux 发行版以某种方式加载了扫描仪的驱动程序
    • 您可以尝试使用 lsmod 或 lsusb 获取有关它的更多信息,这应该会显示加载了哪个驱动程序。这将允许您找到更多关于它的文档
    • 这个 USB 设备,一旦插入就会被识别。lsusb => Bus 001 Device 007: ID 05f9:2216 PSC Scanning, Inc. 它在扫描仪内部完成的复杂事情(转换代码)然后是简单的输出......所以没有什么大谜团或繁重的驱动程序编码来让它工作
    • 您需要了解,虽然扫描仪可能会进行大量处理,但拥有 USB 兼容设备是一项相当复杂的任务。 usb.org/developers/devclass_docs/HID1_11.pdf。该驱动程序将隐藏很多复杂性,并为您提供一个不错的 /dev 界面,供您以后使用。
    猜你喜欢
    • 2011-09-12
    • 2013-10-22
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多