从VB6访问USB HID

从VB6访问USB HID,vb6,Vb6,我买了一个测量空气中二氧化碳含量的装置。它每3秒通过USB报告一次值。我想用VB6处理这些值 插入设备后,我在硬件管理器中找到它,它被列为人机界面设备(HID) 通过检查相关条目,我知道我将其插入了端口0003.Hub#0003。在events选项卡中,我看到名为USB\VID_04D9&PID_A052\1.40的设备已配置,其类GUID为{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}。没有RS/232实现,至少,我没有看到任何实现,因此MS COMM控件没有任何

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

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

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

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

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

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

我看到它有一个指向VB6实现的链接(注释中的同一页),但页面上的所有链接都被破坏了——它们只是重新加载页面。如果你能找到它,我相信它会满足你的需要

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


所有这一切都取决于DirectX,它完全是由微软提供的。这些文档不支持VB6,但通常是可以解决的。

如果没有完整的供应商文档,这不适合心虚的人使用任何语言。在与供应商的软件一起使用时,您可能必须使用USB嗅探器来捕获原始数据包。从那里开始了抓挠和猜测的艰苦工作

有关使用VB6编写的用于此类设备的代码示例,请参见。尽管其他人已经发布了示例C代码,并对交换的USB数据包进行了反复思考,但要想让它发挥作用还是需要很多努力。听起来你还有更多的工作要做,除非别人已经为你做了一些繁重的工作

HID.DLL不是ActiveX库。它没有嵌入类型库。据我所知,也没有外部类型库可用。因此,无论如何,没有什么可以设置引用

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


我想你可能会陷入困境。除非供应商提供API库,否则您可能会运气不佳,除非您有时间和工具进行必要的研究和开发。如果供应商提供像样的低级文档,这将节省一些精力,但这似乎不太可能,因为他们很少这样做。

当你说“引用”DLL时,你的意思是“将其添加为引用”吗?如果它不是COM DLL,则需要为任何包含的函数添加声明。是否有文档化的API?它是用C写的吗?Jim,是的,我试图添加它作为参考。但是,它是为HIDs编写的产品,女士鼓励使用。请参见以下描述:-本页声称,“您可以使用Windows内置的HID(人机界面设备)驱动程序与符合USB HID类规范的设备通信。不需要自定义驱动程序;设备使用Windows中包含的驱动程序。使用任何支持调用API函数的编程语言。“:第一个链接应为:谢谢Jim。但是,DirectX8未能在Win 8.1上安装,并表示它需要Win 9x、…、Vista。@请安装适用于您的操作系统(11?)的最新DX版本。所有早期的接口都应该包含在新版本中,否则会有等效的接口。谢谢你让我开始。在我取得一些重大进展之前,我不会把你的答案作为解决方案,我希望我会取得进展+1.