作者jiannan1828 (我也不愿意)
看板C_and_CPP
标题[问题] USB通讯问题
时间Sun Oct 16 20:17:50 2016
开发平台(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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1476620286.A.B11.html
1F:→ stupid0319: GetLastError看看 10/16 20:41
2F:推 petercoin: 去抓hidapi,里面的enum那部分看一下 10/16 21:08
目前遇到的问题是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
3F:推 stupid0319: 你buffer有8个char,下一行怎麽会写9个,这样会溢位吧 10/18 16:39
长度改成九个, 仍然返回23, 无法送出,
看起来跟他无关
※ 编辑: jiannan1828 (220.128.199.139), 10/18/2016 18:58:00
解决了
感谢S大, 发现是传入长度不符, 因此发送失败
感谢
※ 编辑: jiannan1828 (220.128.199.139), 10/18/2016 19:23:14