我在Ubuntu上使用libusb并试图通过异步批量传输发送4个字节的数据。我能够成功执行以下步骤:1。
libusb_alloc_transfer
分配转移。 libusb_fill_bulk_transfer
填写批量转帐。libusb_detach_kernel_driver
分离内核驱动程序。libusb_claim_interface
声明接口。libusb_submit_transfer
提交转移。libusb_attach_kernel_driver
重新附加内核驱动程序。然后代码将运行,直到传输超时并调用回调函数。启用libusb debug会提供以下消息:
[10.033374] [000026fe] libusb:debug [handle_events] timerfd被触发[10.033375] [000026fe] libusb:debug [libusb_cancel_transfer] transfer 0x55555576de80
[10.036908] [000026fe] libusb:debug [disarm_timerfd]
[10.036919] [000026fe] libusb:debug [handle_events] poll()3 fds,超时时间为0ms
[10.036921] [000026fe] libusb:debug [handle_events] poll()返回1
[10.036924] [000026fe] libusb:debug [reap_for_handle] urb type = 3 status = -2 transferred = 0
[10.036926] [000026fe] libusb:debug [handle_bulk_completion]处理批量urb的完成状态-2 1/1
[10.036927] [000026fe] libusb:debug [handle_bulk_completion]异常收获:urb status -2
[10.036928] [000026fe] libusb:debug [handle_bulk_completion]异常收获:上次处理URB,报告
[10.036930] [000026fe] libusb:debug [usbi_handle_transfer_cancellation]检测到超时取消
[10.036931] [000026fe] libusb:debug [disarm_timerfd]
[10.036932] [000026fe] libusb:debug [usbi_handle_transfer_completion] transfer 0x55555576de80有回调0x7ffff7bd4c78
问题:
答案 0 :(得分:0)
在libusb邮件列表上的人员的帮助下(注册https://sourceforge.net/projects/libusb/lists/libusb-devel)我能够识别问题。
根据他们提出的问题,我被迫重新检查了一些基本假设,特别是我用来发送数据的端点地址。我试图从IN端点发送数据。特别是,我正在检查端点地址的第0位而不是第7位。