【问题标题】:Reading from a USB keyboard in python with a timeout超时从python中的USB键盘读取
【发布时间】:2014-03-08 09:55:30
【问题描述】:

我的 Python 脚本(通过 SSH 启动)如何从连接的 USB 键盘读取一行? 它应该在超时的情况下执行此操作。

我有一个充当键盘的读卡器,当检测到卡时,它将卡 ID 作为单行发送。 在 shell 中使用 cat /dev/tty0 效果很好,但我正在寻找一种在我的 Python 脚本中执行此操作的方法。

【问题讨论】:

    标签: python keyboard raspberry-pi


    【解决方案1】:

    数据很可能以 HID 协议 USB 设备的形式出现。您可以使用 sourceforge 中的 PYUSB 模块来访问原始数据,然后对其进行解释。

    import usb.core
    import usb.util
    
    dev = usb.core.find(idVendor=0x0abc, idProduct=0x0123)
    if dev is None: raise ValueError("Device not found")
    dev.set_configuration()
    endpoint = device[0][(0,0)][0]
    for attempts in xrange(10):
        try:
            data = device.read(endpoint.bEndpointAddress, endpoint.wMaxPacketSize)
        except:
            data = None
    if data is None: raise RuntimeError("no data found")
    print 'got data', data
    

    您需要获得访问设备的权限。它会在超时时引发异常

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2016-07-04
      • 2016-10-28
      相关资源
      最近更新 更多