【问题标题】:Lagging for multiple HID devices when one is not moving (PyUSB)当一个不移动时,多个 HID 设备滞后 (PyUSB)
【发布时间】:2015-07-28 03:37:02
【问题描述】:

我正在使用具有相同产品和供应商 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

提前致谢。

【问题讨论】:

    标签: python hid pyusb


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 2018-10-02
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多