鉴别
每个设备都有一个(唯一的)供应商和产品 ID。这些由 usb.org 提供(出售)以识别设备。您可以使用 libusbx 之类的库来枚举所有连接的设备,然后选择具有您要查找的供应商和产品 ID 的设备。
HID 描述符
HID 描述符的目的实际上是取消驱动程序。HID 描述符是描述设备的通用方式,因此您无需在每个系统/架构/etc/ 的驱动程序上浪费时间。(与 JVM 相同的概念。)
报告
您将使用输入、输出或功能报告来读取或写入您的设备。您在输入或功能报告上向您的设备发送一个流。我相信这通常是 8 个字节。其中只有一个是您要编写的单个字符。HID 描述符包含整理报告所需的所有信息。尽管我正在努力寻找相关链接来澄清这一点。
潜在图书馆
为了保持开放的心态,这里列出了我熟悉的所有库以及一些关于它们的信息。
libusb-0.1
首先是 libusb-0.1。我相信这曾经是许多 Linux 内核和 Windows 的首选并内置于其中。它非常易于使用,并且有很多文档。但是,所有者从未更新,并且多年未编辑。它仅支持同步传输。(如果发生错误,程序可以在等待传输时无限等待。)
libusbx
接下来是 libusbx。这是今天大多数人的建议,我同意。它是由那些对 libusb-0.1 的所有者感到沮丧的人发布的。该代码更轻量级、最新,重要的是不需要像 libusb-0.1 和 libusb-1.0 那样的 root 权限(稍后讨论)。它支持同步或异步传输。
libusb-1.0
然后是 libusb-1.0。这是多年来对 libusb-0.1 的第一次更新。它与 libusb-0.1 不兼容。这与 libusbx 在同一天发布,作为报复(我假设)并试图纠正缺乏更新内容并保护用户群。它支持同步或异步传输。
隐藏.h
最后,还有隐藏库。这是建立在 libusb 之上的另一个抽象层。但老实说,我认为这真的很令人困惑,而且它只会增加不必要的开销。
一些好的资源
了解 HID 描述符
控制消息传输文档(非常好的链接 IMO)
滚动你自己的 HID 描述符
用于传输的 HID 报告的良好视觉效果
bmRequestType 常量列表(你需要这个或类似的)
一个使用 libusbx 和 libusb-0.1 与 DigiSpark 对话的简单终端应用程序
我知道这不是您正在寻找的东西,但也许它会让您入门!