多个HID设备在不移动时滞后(PyUSB)

时间:2015-05-16 06:33:19

标签: python hid pyusb

我正在使用两个具有相同产品和供应商ID的HID设备(Logitech Attack 3控制器),因此它们使用总线和设备编号进行区分。

当我同时移动两个设备时,它们没有任何延迟地运行,但是当我只移动其中一个时,它非常迟钝。我认为这可能是由于USBError异常处理的一些延迟,每当其中一个设备没有移动时就会触发。如果第二个设备被取出,代码可以正常工作。

我认为这是有问题的代码:

while True:
  print "Hi"
  try:
    rData = rDev.read(endpointR.bEndpointAddress,endpointR.wMaxPacketSize)
    print "right"
    print rData
  except usb.core.USBError as e:
    rData = None
  try:
    lData = lDev.read(endpointL.bEndpointAddress,endpointL.wMaxPacketSize)
    print "left"
    print lData
  except usb.core.USBError as e:
    lData = None

提前致谢。

1 个答案:

答案 0 :(得分:1)

根据文档,read函数采用可选的关键字参数timeout,它指定超时(以毫秒为单位)。默认值为1000.由于您未提供此参数,因此函数可能需要1秒才能返回。显然,除非设备移动,否则该设备不会向主机(OS)发送数据,这意味着在这种情况下,读取功能将超时。所以你需要设置timeout关键字。另一种方法是将此代码移动到另一个线程,其中超时对用户来说是显而易见的。