在Windows上与usb HID设备通信的最佳USB库是什么?

时间:2008-11-11 07:00:46

标签: c++ windows usb hid

图书馆应该;

- 易于使用,几行客户端代码应该完成很多工作 - 尽可能与平台无关。 (如果未来港口到其他平台)
- 有C ++绑定。
- 成熟稳定的

我还希望通过回调通知大多数HID事件。

我考虑过以下方案:

* libhid - (不幸的是?)这是GPL,不能在我的申请中使用 * WDK - 对我来说似乎有点低级别。我不需要那种控制 * atusbhid - 这具有适当的抽象级别,但与Windows消息传递循环紧密相关

你们中有没有其他选择可以提供?

6 个答案:

答案 0 :(得分:7)

看看hidapi:它是C,它回答了C ++绑定问题(有效:)),是跨平台的,并且拥有非常宽松的许可证。似乎没有回调,但是......

答案 1 :(得分:5)

如果libhid适合你,那么可能要做的就是编写一个应用程序(你会使用GPL),它使用libhid与设备通信,然后通过TCP连接提供你需要的任何东西。您的真实应用程序将通过TCP连接以执行它所需的操作。这显然会造成巨大的性能损失。

此应用程序实际上是libhid和您的应用程序之间的“垫片”。在这种情况下,垫片将存在合法而非技术原因。

我不是说这是一个好主意,只是这是一个想法。

答案 2 :(得分:2)

Trace系统的HIDmaker软件套件是一个选项。

优点: - 易于使用(非常适合学习如何为USB HID编程) - 以各种项目格式生成工作应用程序源代码(Visual Studio,Borland) - 为主机和设备生成稳定的示例代码(根据我的经验稳定) - 高性能(如果HID甚至可以说首先具有高性能)

缺点: - 仅适用于Microsoft Windows - 使用它自己的USB库我认为(ActiveX)

答案 3 :(得分:2)

考虑自己滚动。您将完全控制界面,平台独立性等级。即使一个项目是GPL,你也可以将它作为自己的配方,并作为一个测试平台来发现你自己的问题。

答案 4 :(得分:2)

看看这段代码:

http://khason.net/blog/read-and-use-fm-radio-or-any-other-usb-hid-device-from-c

它为您提供了一些与HID设备通信的简单类。归结为,获取设备的别名(类似于\?\ HID#Vid_nnnn& Pid_nnn#.......)并使用CreateFile打开它。您可以在HKML \ SYSTEM \ CCS \ Control \ DeviceClasses {4d1e55 ...} \

下获取设备的别名

Vid和Pid是设备的供应商ID和产品ID(请检查设备管理器)。

答案 5 :(得分:2)

Windows有几个USB HID Host驱动程序。易于使用的动态链接库来自http://embedded24.net。 Visual Studio 2010还包含几个示例应用程序(C ++,C#和VB)。