使用pyusb读取时操作超时

问题描述

我正在尝试使用 pyusb 库从 USB 设备读取数据。代码如下:

dev = usb.core.find(idvendor=0x57e,idProduct=0x337)
endpoint = dev[0][(0,0)][0]

dev.set_configuration()

#dev.write(dev[0][(0,0)][1],'test')

r = dev.read(endpoint.bEndpointAddress,endpoint.wMaxPacketSize)
print(r)

错误如下:

Traceback (most recent call last):
  File "g.py",line 138,in <module>
    test_inputs3()
  File "g.py",line 128,in test_inputs3
    r = dev.read(endpoint.bEndpointAddress,endpoint.wMaxPacketSize)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\core.py",line 1022,in read
    self.__get_timeout(timeout))
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py",line 869,in intr_read
    timeout)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py",line 954,in __read
    _check(retval)
  File "C:\ProgramData\Anaconda3\lib\site-packages\usb\backend\libusb1.py",line 602,in _check
    raise USBTimeoutError(_strerror(ret),ret,_libusb_errno[ret])
usb.core.USBTimeoutError: [Errno 10060] Operation timed out

以下是有关界面的一些信息:

接口 0:人机接口设备 ==================== bLength:0x9 (9 字节) bDescriptorType:0x4 接口 b接口编号:0x0 bAlternateSetting :0x0 bNumEndpoints :0x2 bInterfaceClass:0x3 人机接口设备 b接口子类:0x0 b接口协议:0x0 接口:0x0 端点 0x81:中断输入 ========================== bLength :0x7 (7 字节) bDescriptorType :0x5 端点 b端点地址:0x81 IN bmAttributes :0x3 中断 wMaxPacketSize : 0x25 (37 字节) b间隔:0x8 端点 0x2:中断输出 ========================== bLength :0x7 (7 字节) bDescriptorType :0x5 端点 b端点地址:0x2 OUT bmAttributes :0x3 中断 wMaxPacketSize :0x5 (5 字节) b间隔:0x8

我正在使用任天堂的 Switch 适配器和 WiiU 驱动程序 WUP-028。另外,我可以从 0x2 (dev.read(0x2,50000) 读取,而不是从 endpoint.bEndpointAddress 返回的 129,但返回的所有数据都是 0。如果我先写入设备,仍然会发生错误(正如一些 SO 帖子中所建议的那样)。我认为我可能从错误的位置读取,或者我可能需要先通过正确的写入来触发读取。

任何对帖子或文档的引用都是有帮助的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)