调用 usb_control_msg 返回错误值 -32, Broken pipe, 对 hidraw write时 返回错误值 -32, Broken pipe
-------------------Step 1---------------------
如題,使用 libusb 對 hid 類設(shè)備進行控制傳輸?shù)臅r候,有時會遇到此錯誤,但是實際上傳輸是成功的,用usb分析儀等工具和程序中驗證,比如發(fā)送數(shù)據(jù)成功后,讓設(shè)備返回給主機,主機讀取數(shù)據(jù)后驗證數(shù)據(jù)正確性。由此看來,該錯誤是內(nèi)核返回出現(xiàn)了錯誤,并不是指實際的通訊異常。
現(xiàn)在在使用其他HID類設(shè)備在進行測試,發(fā)現(xiàn)有些HID類設(shè)備不會出現(xiàn)類似的報錯,因此寫程序模擬該設(shè)備通訊過程,嘗試與主機通訊,依然返回錯誤值 -32, Broken pipe。該原因還在跟蹤,待續(xù)~
-------------------Step 2---------------------
經(jīng)過驗證與跟蹤,發(fā)現(xiàn)是由于主機設(shè)備回復(fù)的數(shù)據(jù)包出錯導(dǎo)致的,回復(fù)的數(shù)據(jù)包PID沒有與前面的輸出過程交替造成的。也即正常數(shù)據(jù)傳輸過程中數(shù)據(jù)包是 DATA0 和 DATA1 不停交替的,如果回復(fù)的數(shù)據(jù)包PID未交替,那么主機認為沒有正確響應(yīng),因此返回了之前的錯誤碼?-32, Broken pipe。更改設(shè)備程序,回復(fù)交替 PID,問題解決。
如果遇到了不是該情況,可以給我郵件或者評論。遍歷了國內(nèi)外大小論壇,真正解決問題的辦法很少,遇到此問題,一起進行探討研究。有問題給我留言吧~:-D
總結(jié)
以上是生活随笔為你收集整理的调用 usb_control_msg 返回错误值 -32, Broken pipe, 对 hidraw write时 返回错误值 -32, Broken pipe的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴Java开发手册终极版
- 下一篇: matlab pn码捕获,直扩系统PN码