[問題] USB通訊問題 (已解決,感謝各位前輩)

看板C_and_CPP作者 (我也不願意)時間7年前 (2016/10/16 20:18), 7年前編輯推噓2(201)
留言3則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Windows 7 and Windows 10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) GCC (CodeBlock) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) Setupapi.dll, hid.dll, kernal32.dll 問題(Question): 請問各位前輩, 小弟目前需要與USB HID通訊, 看了幾本實作的書以及google的資料, 得到以下兩種實作方法: 1. call Setupapi.dll, hid.dll, kernal32.dll 2. 使用libusb-win32 1. 想請問各位有使用經驗的前輩是否有較推薦的方法? 2. 目前我呼叫SetupDiEnumDeviceInterfaces這個function, 第一關就直接沒有回應, 想請教各位前輩, 能否提點小弟錯誤發生的狀況 https://mega.nz/#!EhQl0ZrI!KUdcuqIVvGzi8ab1EQLRALTD-qwYQ03PFYMsn553QhA https://mega.nz/#!hgRmxb7R!ZK_DHhQCgOdc8DprNuh2yLruojJBEBPALuVFJ9OpNZM 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) int main(int argc, char* argv[]) { printf("Test Win32 StdAPI\r\n"); int index; HDEVINFO deviceInfo; GUID *GUID_CLASS_USB_HOST_CONTROLLER; PSP_DEVICE_INTERFACE_DATA deviceInfoData; PSP_DEVICE_INTERFACE_DETAIL_DATA deviceDetailData; for( index=0; pm_SetupDiEnumDeviceInterfaces( deviceInfo, 0, GUID_CLASS_USB_HOST_CONTROLLER, index, deviceInfoData); index++ ) { //pm_GlobalFree(deviceDetailData); } return 0; } 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.2.29 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1476620286.A.B11.html

10/16 20:41, , 1F
GetLastError看看
10/16 20:41, 1F

10/16 21:08, , 2F
去抓hidapi,裡面的enum那部分看一下
10/16 21:08, 2F
目前遇到的問題是CRC https://mega.nz/#!JpJyQCQY!FjMvOEyuAyWMduv4fmDh0gxcFQeFgnh7JSbapQCPiIA 程式碼如下: char fodata[8] = {0}; ULONG length = 8+1; if(!HidD_GetFeature(hidINTERFACE, fodata, length)) { printf(" XXX Could not write feature! Error Code = %d\n", GetLastError()); delete OutputReport; return false; } 請問各位前輩建議方向, 感謝 ※ 編輯: jiannan1828 (220.128.199.139), 10/18/2016 15:58:55

10/18 16:39, , 3F
你buffer有8個char,下一行怎麼會寫9個,這樣會溢位吧
10/18 16:39, 3F
長度改成九個, 仍然返回23, 無法送出, 看起來跟他無關 ※ 編輯: jiannan1828 (220.128.199.139), 10/18/2016 18:58:00 解決了 感謝S大, 發現是傳入長度不符, 因此發送失敗 感謝 ※ 編輯: jiannan1828 (220.128.199.139), 10/18/2016 19:23:14
文章代碼(AID): #1O0s_-iH (C_and_CPP)