[問題] libusb 讀寫入

看板C_and_CPP (C/C++)作者 (Maiko)時間12年前 (2013/11/10 10:14), 編輯推噓4(4011)
留言15則, 6人參與, 最新討論串1/1
我最近需要使用USB去寫入與讀取某台機器 他是使用USB介面 我爬文看到 可以使用 libusb-win32 來進行溝通 自己亂搞一通 終於能成功編譯 一開始拿範例檔(bulk.c)和我的 USB滑鼠與鍵盤 來試試 雖然取得的資訊不懂 但感覺可以收到 硬體傳回的資訊 換我的機器的 VIP與PID open, set_configuration, claim_interface 都有成功 但 寫入function 出現 : libusb0-dll:error [_usb_reap_async] timeout error 讀取function 出現 : libusb0-dll:error [submit_async] submitting request failed, win error: The parameter is incorrect 猜想讀取function 應該是傳入參數有錯誤 我試著改 EP_IN 這個 define 我把它改成0x82 錯誤結果 卻變成 libusb0-dll:error [_usb_reap_async] timeout error 不過 我想 應該是我寫入沒有成功 才導致機器沒回傳結果 最後read才timeout 但唯獨 我寫入不管怎麼試都沒用 一直會timeout 並沒有寫入字串給機器 我是用 範例的 usb_bulk_write 與 usb_bulk_read 已經自己Try 好幾天了 都沒進展 希望有經驗的大大們 可以給我點建議 萬分感激 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.132.251

11/10 11:43, , 1F
你確定usb device當下的mode是你預期的嗎?
11/10 11:43, 1F

11/10 12:37, , 2F
改個標題 大T
11/10 12:37, 2F

11/10 16:52, , 3F
應該沒錯 我在 open 裡面加入已開VIP與PID 的訊息
11/10 16:52, 3F

11/10 21:52, , 4F
0x82這值哪來的?
11/10 21:52, 4F

11/10 23:41, , 5F
b大 我查google似乎有人有改這個 想說改看看 反正也沒轍了!
11/10 23:41, 5F

11/11 01:08, , 6F
0x82可能是指EP2 is IN
11/11 01:08, 6F

11/11 01:43, , 7F
灌usbview、bushound,這是windows下玩USB 看資訊、封包
11/11 01:43, 7F

11/11 01:44, , 8F
另外,鍵盤滑鼠不一定有bulk pipe,我不知道在windows下
11/11 01:44, 8F

11/11 01:46, , 9F
libusb是怎麼呼叫到windows API,但是你可以找libusb API
11/11 01:46, 9F

11/11 01:48, , 10F
有關interrupt out/in pipe的部分~
11/11 01:48, 10F

11/11 01:49, , 11F
另外,數值0x82 bit7代表usb direction,1為in~
11/11 01:49, 11F

11/11 01:51, , 12F
你可能要用usbview先搞清楚你的裝置有幾個endpoint,他們
11/11 01:51, 12F

11/11 01:53, , 13F
的type 跟方向性等等資訊再來寫code~
11/11 01:53, 13F

11/11 08:10, , 14F
同樓上 搞清楚哪個EP再寫 另外你要OUT的話 應該不會是8開頭
11/11 08:10, 14F

11/11 08:11, , 15F
也就是a大說的 bit7應該會為 '0'
11/11 08:11, 15F
文章代碼(AID): #1IVklzyc (C_and_CPP)
文章代碼(AID): #1IVklzyc (C_and_CPP)