图书馆应该;
- 易于使用,几行客户端代码应该完成很多工作
- 尽可能与平台无关。 (如果未来港口到其他平台)
- 有C ++绑定。
- 成熟稳定的
我还希望通过回调通知大多数HID事件。
我考虑过以下方案:
* libhid - (不幸的是?)这是GPL,不能在我的申请中使用 * WDK - 对我来说似乎有点低级别。我不需要那种控制 * atusbhid - 这具有适当的抽象级别,但与Windows消息传递循环紧密相关
你们中有没有其他选择可以提供?
答案 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)。