我正在尝试使用 pyusb 和 libus1 作为后端在 USB 转以太网设备上执行批量读写操作。编码:
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 没有收到来自设备的响应的问题。但这真的只是一个疯狂的猜测。我有点迷失在这里,我会很感激任何帮助!