我想编写一个Java应用程序,访问USB端口,读取和写入通过USB连接的设备。然而,我不知道在Java中该使用什么来实现这样的功能。我在网络上搜索并找到了一个叫做JUSB
的东西,但是所有的帖子似乎都比较旧。
目前,我正在使用RXTX
库,但有时会遇到某些同步错误。当我使用C#进行等效操作时,代码量要少得多,并且我不会遇到同样的同步错误。
我的问题是,最新版的JRE中是否内置了可用于访问USB端口的内容(并且与C#的等效代码一样容易)?
在Java中没有与C#的USB支持相当的东西。 jUSB和Java-USB两者都严重过时,可能无法用于任何严肃的应用程序开发。
如果你想实现一个跨平台的USB应用程序,最好的选择是编写一个抽象的JNI接口,与Linux、Mac和Windows本地库进行通信,并且你必须自己编写这些库。我建议使用LibUSB来处理Mac和Linux。如你所见,Windows也比较简单。我刚刚完成了一年的项目,正是采用这种方法,不幸的是这是唯一可行的跨平台解决方案。如果你不需要在Windows上实现,并且你的需求有限,你可以使用其中一个旧的Java库(jUSB或Java-USB)。但是,任何需要在Win32 / Win64上部署的项目都需要一个本地组件。
您可能想要了解usb4java - http://usb4java.org/index.html,它似乎支持Windows、Linux和Mac OS,并且在发布时看起来比较新。不幸的是,它是LGPL许可证,可能不适合商业开发。
Java通信API。它应该提供类似于C# System.IO.Ports 命名空间的功能。
如果您使用的是Mac电脑,可以通过/Volumes/目录访问USB设备。
例如:
如果您想要写入一个名为“Drive”的文件,那么文件路径应该是:
/Volumes/Drive/file.whatever
不确定其他平台如何实现,但这是我在Mac上找到的最简单的方法