2008-11-11 166 views
16

图书馆应该;什么是与Windows上的USB HID设备进行通信的最佳USB库?

-易于使用,少量客户端代码应该完成很多
- 尽可能保持平台独立。 (在未来端口到其他平台的情况下)
- 具有C++绑定。
-Be mature and stable

我也想通过回调得到大多数HID事件的通知。

我曾考虑以下方案:

* libhid - (可惜?)这是GPL,不能在我的应用程序中使用。
* WDK - 似乎对我的使用有点低级别。我不`吨需要那种控制的
* atusbhid - 这有抽象的适当水平,但被牢牢地拴在Windows消息循环

做任何你有什么其他办法来提供?

+0

我通过测试发现,libusb-win32-src-1.2.6.0没有初始化struct usb_bus的设备元素。请尝试别的。 – Frank 2015-12-26 04:16:15

回答

5

如果libhid为你工作,那么也许我们该做的是写一个应用程序(你会GPL),它使用libhid交谈设备,然后向您提供通过TCP连接需要什么。您的真实应用程序将通过TCP进行连接以满足需要。这显然是一个巨大的性能影响。

这个应用程序将有效地libhid和你的应用程序之间的“垫片”。在这种情况下,垫片会存在法律而非技术上的原因。

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

2

从跟踪系统HIDmaker软件套件是一个选项。

优点: - 易于使用(外观极好学习如何为USB HID编程) - 生成一个不同的项目格式(Visual Studio中,Borland公司) 工作应用程序的源代码 - 生成稳定的示例代码为主机和装置(在我的经验稳定) - 高性能(如HID,甚至可以说已经摆在首位高性能)

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

+0

所以实际上,它只是为您提供一个C++绑定到他们的ActiveX控件。此外,它的目的是在各种微控制器的硬件端生成代码。这对我来说似乎有点矫枉过正。 – 2008-11-14 10:29:53

2

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

+0

我在C#和C++/CLI中创建了我自己的HID库。您可以参考WDK。 – 2013-03-12 17:37:07

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(检查设备管理器)。

2

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

7

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

+0

如果libhid由于授权而不是选项,绝对是最好的选择。 – patrickvacek 2013-10-23 14:00:55