Linux libusb "TIMEOUT -116" libusb_send返回值为-116 error解决方法

Linux下libusb开发遇到如下问题

在Linux下用libusb进行usb_write_bulk()函数调用时,但usb_read_bulk()函数却会出现:

libusb0-dll:[_usb_reap_async] timeout error 的错误提示 返回值为-116 接收不到usb传来的数据

此问题原因有很多种,需一一分析!

解决方法

第一步:排除设备配置错误

检查usb设备的配置模式、接口设置、传输方式等参数使用是否正确,如不确定,可多试试其他模式参数。在此,我推荐一款软件usbtreeview来查看usb设备的详细参数!

若第一步过后,问题还没解决,可采取第二步

第二步:确定发送的指令是否正确,并确定usb设备会产生响应数据

确定发送的指令是否正确,并确定usb设备会产生响应数据。在此,我推荐一款抓包软件Bus Hound来查看usb设备和电脑的交互数据,确定usb设备是否有数据传送过来。

若第二步过后,问题还没解决,可采取第三步

第三步:使用异步的方法进行USB的批量传输

异步的方法进行USB的批量传输,比如使用usb_reap_async_nocancel()函数进行数据传输。

或 采用开辟专用线程,并将usb_read_bulk()函数中的超时参数设置为:-1(即无限等待)。

若第三步过后,问题还没解决,可采取第四步

第四步:检查USB设备

检查硬件设备,确保usb设备程序没有问题,usb设备的元器件没有问题,usb数据传输线没有问题,usb插口重新插入一下...以确保usb设备硬件没有问题。

若第四步过后,问题还没解决,那就继续去别处找找原因吧...

参考链接

https://blog.csdn.net/karizhang/article/details/51829079

https://blog.csdn.net/nolatin/article/details/27094299

https://bbs.csdn.net/topics/392043088?list=lz

你可能感兴趣的:(libusb)