寻找虚拟USB HID驱动程序

4
我们为轮椅设计了一种特殊的通信工具,用于控制灯光等。我们使用Z-wave。我们有一个应用程序,可以通过PC控制这些设备。
不幸的是,该应用程序需要一个USB驱动器。我们的设计不允许连接USB驱动器。相反,我们使用串行接口模块,通过蓝牙和虚拟串口链接到PC。我们知道该应用程序使用HID标准windriver。(没有第三方驱动程序涉及)
我们想知道是否可以使用HID“包装”驱动程序来模拟USB标识符和PnP,以使应用程序认为已连接驱动器,并将蓝牙虚拟串口数据链接到应用程序。

抱歉,我忍不住了:http://en.wikipedia.org/wiki/Minnie_Driver - Artelius
3个回答

5

是的,我相信这是可能的,可能会很有趣,从未想过用PC模拟HID设备。你们组里有没有驱动程序开发经验?如果没有,准备迎接陡峭的学习曲线。

问题:你所说的“USB stick”是指包含指令的USB闪存驱动器,还是像标题所示的某种类型的HID设备,比如鼠标或游戏手柄?

不过,无论哪种情况,都可以编写驱动程序来模拟它与PC的连接。但你们公司/项目是否有必要让你们提升到能够完成这个任务的水平,这才是主要问题。这肯定不是一个周末就能完成的代码。


亲爱的戴尔, 我们之所以打电话给您,是因为我们团队中没有相关经验。 这个USB存储器实际上是一个无线电收发器,它只需要与应用程序建立9600 bd的串行连接即可。由于它被封装成USB存储器的形式,应用程序通过USB(HID)驱动程序寻找串行连接。 - jacob
好的,如果您将收发器替换为通用的USB HID设备,例如鼠标,它是否可以工作?您还可以在PC上使用收发器来控制鼠标/键盘吗? - Dale
收发器充当PC应用程序和Z-wave家庭网络之间的接口。它具有串行链接,而应用程序期望USB。我们无法修改应用程序,因此我们正在寻找中间解决方案。谢谢, 雅各布 - jacob

3

1

这很有趣... 我想了解更多有关您现有设备的信息,即“USB存储器实际上是一种无线电收发器”。

它如何连接到计算机?是通过 USB 电缆(作为虚拟 COM 端口)连接的吗?还是像以下链接中提到的那样使用任何 USB-UART(USB-RS232)适配器(http://www.ftdichip.com/Products/Cables/USBRS232.htm),即 USB-串行适配器位于您的收发器和计算机之间。

如果您的设备直接连接到PC的USB端口(作为虚拟COM端口),那么我有一个解决方案。我们需要开发一个内核模式WDM或WDF USB HID mini驱动程序,安装我们的驱动程序后,您的虚拟COM端口设备将被PC主机和PC应用程序视为USB HID设备。在这个HID mini驱动程序中,我们可以在HID报告描述符中定义一个自定义顶级HID集合,所以无论您告诉应用程序期望设备作为USB HID设备,都可以通过Windows HID API调用轻松通信,如HidD_GetFeature、HidD_SetFeature、HidD_GetInputReport、HidD_SetOutputReport,甚至ReadFile和WriteFile函数也会起作用。
但是,如果您的收发器有RS232 D9端口,则可能需要在PC和收发器之间插入USB-串行适配器,就像我之前说的那样。在这种情况下,我们需要开发一个带有HID报告描述符中自定义顶级HID集合的UMDF USB Hid minidriver。这个驱动程序将完全是一个虚拟驱动程序,并附加到设备管理器上,与实际的虚拟COM端口一起使用。HID兼容的应用程序将与这个虚拟驱动程序通信,并将收发器视为USB HID设备,尽管它实际上是一个COM端口。UMDF驱动程序将负责虚拟COM端口和HID应用程序之间的通信。

如果您有任何疑问或需要进一步澄清,请告知我。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接