请教C++实现USB通信的问题

haifeng3326 2014-07-22 05:02:26
需要使用C++实现接收外部设备通过USB传输过来的数据,我用vs2005写了代码,用HidD_GetHidGuid,SetupDiGetClassDevs,CreateFile,,,,这些函数,但是只能找到鼠标和键盘,其它设备找不到。
现在手头上只有一个扫描仪可以用来测试用,扫描仪的GUID直接赋值也不行,SetupDiEnumDeviceInterfaces返回值位false怎么解决啊?
...全文
361 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2014-07-23
  • 打赏
  • 举报
回复
SetupDiGetClassDevs 呼叫了函数 SetupDiOpenClassRegKeyEx 。 SetupDiOpenClassRegKeyEx 这个函数就是查看注册表的这个表项。 包含 DeviceClasses和 ControlClass。
c562731235 2014-07-23
  • 打赏
  • 举报
回复
首先定义一个static /*const*/ GUID GUID_DEVINTERFACE_USB_DEVICE = //{ 0x4D36E969, 0xE325, 0x11CE, { 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 }}; { 0xA5DCBF10L, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } }; //{ 0x36fc9e60L, 0xc465, 0x11cf, { 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00 } }; 但是因为是自定义设备,所以这个GUID_DEVINTERFACE_USB_DEVICE 得网上找找,不是那么好找的,然后在用HId 设备类的方法去操作你的设备,当然前提是你的设备得是有驱动的,不然你是没法找到的。 hid类的方法,可以网上找个hid.cpp 文件下载看看,就是设备的打开 deviceopen和关闭设备deviceclose。 如有还不有明白的,可以q我 :1447675135
Saleayas 2014-07-23
  • 打赏
  • 举报
回复
需要查看注册表。 比如 DeviceClass . HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\DeviceClasses\\ 很多。
Saleayas 2014-07-23
  • 打赏
  • 举报
回复
HidD_GetHidGuid 返回的是这个。 DEFINE_GUID(HID_GUID, 0x4D1E55B2, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30);
modyaj 2014-07-23
  • 打赏
  • 举报
回复
设备管理器里面能找到这个 端口吗
Saleayas 2014-07-23
  • 打赏
  • 举报
回复
不要用这个HidD_GetHidGuid 。 这个返回的都是 HID 类。 使用你指定的 类。
haifeng3326 2014-07-23
  • 打赏
  • 举报
回复
我写的代码只能查到HID类设备,请问怎么才能查找到非Hid类的设备啊

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧