900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 调用 usb_control_msg 返回错误值 -32 Broken pipe 对 hidraw write时 返回错误值 -32 Broken pipe

调用 usb_control_msg 返回错误值 -32 Broken pipe 对 hidraw write时 返回错误值 -32 Broken pipe

时间:2019-03-29 12:35:49

相关推荐

调用 usb_control_msg 返回错误值 -32  Broken pipe   对 hidraw write时 返回错误值 -32  Broken pipe

-------------------Step 1---------------------

如题,使用 libusb 对 hid 类设备进行控制传输的时候,有时会遇到此错误,但是实际上传输是成功的,用usb分析仪等工具和程序中验证,比如发送数据成功后,让设备返回给主机,主机读取数据后验证数据正确性。由此看来,该错误是内核返回出现了错误,并不是指实际的通讯异常。

现在在使用其他HID类设备在进行测试,发现有些HID类设备不会出现类似的报错,因此写程序模拟该设备通讯过程,尝试与主机通讯,依然返回错误值 -32, Broken pipe。该原因还在跟踪,待续~

-------------------Step 2---------------------

经过验证与跟踪,发现是由于主机设备回复的数据包出错导致的,回复的数据包PID没有与前面的输出过程交替造成的。也即正常数据传输过程中数据包是 DATA0 和 DATA1 不停交替的,如果回复的数据包PID未交替,那么主机认为没有正确响应,因此返回了之前的错误码-32, Broken pipe。更改设备程序,回复交替 PID,问题解决。

如果遇到了不是该情况,可以给我邮件或者评论。遍历了国内外大小论坛,真正解决问题的办法很少,遇到此问题,一起进行探讨研究。有问题给我留言吧~:-D

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。