2017-01-05 147 views
0

我购买了测量空气中二氧化碳含量的设备。它每3秒通过USB报告数值。我想用VB6处理这些值。从VB6访问USB HID

插入设备后,我在硬件管理器中找到它,列为人机界面设备(HID)。

通过检查相关条目我知道,我将它插入Port_#0003.Hub_#0003。在事件选项卡中,我读取了名为USB \ VID_04D9 & PID_A052 \ 1.40的设备已配置,并且它的类GUID是{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}。没有RS/232的实现,至少我没有看到,所以MS COMM Control是没有用的(无论如何16个允许的端口号都尝试过)。

通过搜索关于用[VB6]标记的HID的信息,我得到的唯一信息是直接使用HID API是PITA。

无论如何,我想试试看,并试图引用HID.dll,只发现VB6抱怨VB无法使用此DLL。

有什么方法可以访问我的设备以获取和处理通信数据?我如何开始这项创业?

+0

当你说“引用”DLL时,你的意思是“将它作为参考添加”?如果它不是一个COM DLL,则需要为任何包含的函数添加声明。是否有一个记录在案的API?它是用C编写的吗? –

+0

吉姆,是的,我试图添加它作为参考。但是,它是为HID编写的产品,鼓励MS使用。看到这个描述:https://en.wikipedia.org - 这个页面声称,“你可以使用Windows内置的HID(人机接口设备)驱动程序与符合USB的HID类规范的设备进行通信。需要自定义驱动程序;设备使用Windows中包含的驱动程序,使用任何支持调用API函数的编程语言“:http://janaxelson.com/hidpage.htm/wiki/USB_human_interface_device_class – Herb

+0

第一个链接应为:https: //en.wikipedia.org/wiki/USB_human_interface_device_class – Herb

回答

0

我看到Jan Axleson有一个链接(注释中的同一页)到VB6实现,但页面上的所有链接都被破坏 - 它们只是重新加载页面。如果你能跟踪下来,我相信它会满足你的需求。

在任何情况下,您都可以使用任何支持HID的设备与DirectInput。实例DirectX8,然后DirectInput8,然后DirectInputDevice。枚举设备使用GetDIDevices.Acquire感兴趣的设备(您的HID设备)并探索其功能。

这一切都取决于DirectX,这是由MS完全documented。该文档不是VB6友好的,但通常可以将其解决。

+0

谢谢吉姆。但是,DirectX8无法在Win 8.1上安装,并且说它需要Win 9x,...,Vista。 – Herb

+0

@Herb只需安装适用于您的操作系统(11?)的最新DX版本。所有早期的接口应包含在新版本中,否则会有相应的接口。 –

1

如果您没有完整的供应商文档,这不适用于使用任何语言的心灵模糊。您可能不得不在使用供应商软件时使用USB嗅探器捕获原始数据包。从那里开始艰辛的抓挠和猜测。

查看[VB6] TEMPer Gold USB HID Thermometer Class查看以VB6编写的代码以使用此类设备的示例。尽管其他人已经在交换的USB数据包上发布了示例C代码和一些反思,但即使让它工作也有很大的减少和尝试。这听起来像你会有更多的工作要做,除非别人已经为你做了一些繁重的工作。

HID.DLL不是一个ActiveX库。它没有嵌入typelib。据我所知,没有外部typelib可用。因此,无论如何都没有任何参考。

不仅如此,它甚至不是一个COM库,而是一个原始的普通旧标准DLL。

我认为你可能会远远超过你的头。除非供应商提供API库,否则你可能会走运,除非你有时间和工具来进行必要的研究和开发。如果供应商提供体面的低级文档,它会节省一些努力,但这似乎不大可能,因为他们很少这样做。

+0

感谢您让我开始。我不会将你的答案标记为解决方案,直到我取得一些认真的进展,我希望我会这样做。 +1 – Herb