我尝试使用带有libus1作为后端的pyusb在USB-to-Ethernet设备上执行批量读写操作。 代码:
dev = usb.core.find(idVendor=..., idProduct=...)
if dev.is_kernel_driver_active(0) is True:
dev.detach_kernel_driver(0)
usb.util.claim_interface(dev, 0)
dev.set_configuration()
read_endpoint = dev[0][(0,0)][0]
write_endpoint = dev[0][(0,0)][1]
data = ...
write_endpoint.write(data)
data = read_endpoint.read(read_endpoint.wMaxPacketSize, timeout = 1000)
在Ubuntu上,这对于阅读和写作都非常有效。在OSX(10.10.5)上,写操作正在运行(正在发送数据包),但是读取不起作用(我不断超时)。 我知道设备收到的数据包是因为:1)当我在Ubuntu中运行它时它起作用2)指示传入数据包的LED闪烁。
dmesg仅显示以下内容:
AppleUSBEHCI::Found a transaction past the completion deadline on bus ..., timing out! (Addr: ..., EP: ...)
哪种情况让我觉得OSX没有收到来自设备的回复的问题。但这真是一个疯狂的猜测。我有点迷失在这里,我很感激任何帮助!