阅读端点时PyUSB超时

时间:2018-02-27 05:31:40

标签: python usb endpoint libusb pyusb

我使用PyUSB访问Ocean Optics Spectroscopy Unit并收集数据。以前,我曾经认为主要访问是通过FTDI芯片进行的,但是在使用Wireshark对USB嗅探通过其他Windows计算机上的专有软件发送的命令后,它似乎是通过QE65000的0x01和0x82端点。

我模仿了Wireshark捕获中发现的批量数据的发送/接收,但每次尝试读取端点0x82时,我都会得到以下结果:

usb.core.USBError: [Errno 60] Operation timed out

此外,看起来好像在Wireshark上读取端点时,返回的数据包长度为2588字节,而为0x82端点列出的最大数据包大小为512字节。以下是我用来尝试读取端点的代码,传入in和out端点的数组,设备和超时作为参数。

def read_endpoint(dev, ep, timeout = 7520):
    endpoint = ep[1]
    data = dev.read(endpoint.bEndpointAddress,endpoint.wMaxPacketSize)
    return(data)

1 个答案:

答案 0 :(得分:0)

Operation timed out表示您在端点上没有阅读任何内容。也许您必须先向设备写入命令。例如,对于大容量存储设备,您首先在out端点上编写命令:

device.write(ep[0], unhexlify(b"555342430f3100006000000080000603000000600000000000000000000000"), timeout=timeout)

然后您阅读答案。

数据包大小定义了交换的数据包的大小,但是,什么也没有设备通过多个数据包发送或接收命令。