当一个不移动时多个HID设备的滞后(PyUSB)



我使用具有相同产品和供应商id的两个HID设备(罗技攻击3控制器),因此它们使用其总线和设备编号进行区分。

当我同时移动两个设备时,它们没有任何延迟,但当我只移动其中一个时,它是非常延迟的。我认为这可能是由于USBError异常处理的一些滞后,每次设备不移动时都会触发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

根据文档,read函数有一个可选的关键字参数timeout,它以毫秒为单位指定超时时间。默认值是1000。由于没有提供此参数,该函数可能需要1秒才能返回。显然,除非设备移动,否则它不会向主机(操作系统)发送数据,这意味着在这种情况下,读取函数将超时。因此需要设置timeout关键字。另一种方法可能是将此代码移到另一个线程中,这样用户就不会明显地看到超时。

相关内容

  • 没有找到相关文章

最新更新