我正在努力寻找能够获取通过 USB 连接的任何设备的输入的 Java API。我找到了 jUsb,但它似乎已被弃用且陈旧。
我想要的是:
- 独立于平台的 API(适用于 Unix、Windows、Mac)
- 可以从任何设备获取输入的 API(实际上我想将操纵杆连接到我的 USB 端口)
我们的 USB 传感器也有同样的问题:没有 100% Java 解决方案。您将始终需要使用另一种语言编写的特定于操作系统的代码(并且可以访问本机 API)。
我们发现的最便携的解决方案是实现一种网关,它将通过 localhost TCP 套接字封装 USB 数据。我们有 3 个网关实现(OSX、UNIX 和 Windows),它们将调用本机 API 来与 USB 设备交互。Java 代码将通过 TCP 网关发送/接收 USB 流量。我们已经做了一些基准测试,我们测量到纯 C++ 代码和 Java 实现之间的总体差异小于 10 毫秒(对于 45 毫秒的大型事务),而一旦你有一个开放的通道,延迟可以忽略不计(没有影响)。
过去我使用过libusb。 不简单,但如果你足够扎根,你可以获得多个操作系统和 Java 绑定的驱动程序。
您需要先安装可以检测到您的设备的设备驱动程序。
在设备管理器 -> 端口(COM 和 LPT)中,您可以看到您的设备连接到的端口。例如 COM1/COM2/COM3
您可以编写代码以添加侦听器事件以从这些端口读取数据。有许多库可用于处理 COM 端口。此链接可能对您有用。
我使用 comm.jar 从手持扫描仪设备读取输入。