从VB6访问USB HID

时间:2017-01-05 14:25:07

标签: vb6

我购买了一台测量空气中二氧化碳含量的设备。它每隔3秒通过USB报告一次值。我想用VB6处理这些值。

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

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

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

无论如何我想尝试一下,并试图引用HID.dll,但却发现VB6抱怨VB不能使用这个DLL。

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

2 个答案:

答案 0 :(得分:1)

如果您没有完整的供应商文档,这对于使用任何语言的胆小者来说都不是。在使用供应商的软件时,您可能不得不使用USB嗅探器捕获原始数据包。从那里开始进行刮擦和猜测的艰苦工作。

有关使用VB6编写的代码示例,请参阅[VB6] TEMPer Gold USB HID Thermometer Class以使用此类设备。尽管其他人已经发布了样本C代码并且在交换的USB数据包上发布了一些反复意见,但即使让它工作也需要大量工作。听起来你还有更多工作要做,除非别人已经为你做了一些繁重的工作。

HID.DLL不是ActiveX库。它没有嵌入的typelib。据我所知,也没有外部类型库。因此,无论如何都没有任何内容可供参考。

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

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

答案 1 :(得分:0)

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

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

所有这些都取决于DirectX,MS完全documented。文档不是VB6友好的,但通常可以解决它。