这是两行代码,使用C++中的libusb执行中断传输:

libusb_fill_interrupt_transfer(transfer_receive, handle, LIBUSB_ENDPOINT_IN | USB_INTERFACE_OUT, buffer_receive, sizeof(buffer_receive), cb_in, &usb_data, 30000);
r = libusb_submit_transfer(transfer_receive);

如何在带有PyUSB的Python中执行相同的操作?

最佳答案

有函数interruptWrite(self, endpoint, buffer, timeout = 100)interruptRead(self, endpoint, size, timeout = 100),请参见

https://github.com/walac/pyusb/blob/master/usb/legacy.py
interruptRead()函数类似于C++代码(轮询设备以进行中断,从设备的中断IN端点接收中断数据)

C++中的LIBUSB_ENDPOINT_IN | USB_INTERFACE_OUT(|是按位OR)类似于使用指定的USB中断接口(interface)USB_INTERFACE_OUT从其指定的端点LIBUSB_ENDPOINT_IN查询数据

在后台,PyUSB使用相同的功能(write())进行批量,中断和同步传输,只有控制传输具有特殊的语法。 interruptWrite()interruptRead()也使用write()函数抽象基础的本机USB传输器类型



来源:https://github.com/walac/pyusb/blob/master/docs/tutorial.rst

通常,设备只有在有未决的中断时才响应中断传输,因此主机会通过中断传输来轮询设备以查找中断。这在发送中断请求(传输)并等待接收答案的C++代码中变得很明显

http://mvidner.blogspot.com/2017/01/usb-communication-with-python-and-pyusb.html

关于python - 将libusb代码移植到Python:中断传输,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43351244/

10-15 04:50