如何在java中访问USB端口

时间:2010-01-23 00:35:39

标签: java usb rxtx

我正在尝试编写一个访问usb端口的java应用程序来读取和写入通过usb连接的设备。我面临的问题是我不知道在java中使用什么来做这样的事情。我在网上搜索并找到了一个叫JUSB的东西,但所有的帖子看起来都很旧了。

目前我正在使用RXTX库,但有时会遇到一些同步错误。当我使用C#做相同的操作时,它需要的代码少得多,而且我不会遇到任何相同的同步错误。

我的问题是,我可以使用最新版本的JRE内置任何内容来访问USB端口就像等效的C#代码一样简单)?

6 个答案:

答案 0 :(得分:22)

在跨平台(Linux和Windows)上使用usb4java一年,效果很好。

请参阅:

http://usb4java.org/

它们非常活跃并且具有非常好的javax USB前端。

答案 1 :(得分:14)

在Java中没有任何东西等同于C#的USB支持。 jUSB和Java-USB都严重过时,可能无法用于任何严肃的应用程序开发。

如果您想要实现跨平台的USB应用程序,最好的办法是编写一个抽象的JNI界面,该界面与您自己必须编写的Linux,Mac和Windows本机库相对应。我会看LibUSB来处理Mac和Linux。正如您所见,Windows非常简单。我刚刚完成了为期一年的项目,不幸的是,这是唯一一个严肃的跨平台解决方案。如果您不必在Windows上实现并且您的需求有限,那么您可能会使用其中一个较旧的Java库(jUSB或Java-USB)。任何需要在Win32 / Win64上部署的东西都需要本机组件。

答案 2 :(得分:7)

请参阅jUSBusb4java库。

答案 3 :(得分:7)

您可能希望查看usb4java - http://usb4java.org/index.html它似乎支持Windows,Linux和Mac OS,并且在发布时似乎是合理的。不幸的是,LGPL可能不适合商业开发。

答案 4 :(得分:3)

Java Communications API。这应该提供与C#System.IO.Ports命名空间类似的功能。

答案 5 :(得分:-2)

如果您使用的是Mac,则可以通过/ Volumes /目录访问USB。

示例:

您要写入“驱动器”中的文件,因此文件路径为:

#include <iostream> #include <string> #include <algorithm> int main() { std::string s; std::cin >> s; std::string o ="ob"; for (char& v: s) { if (v == 'a' || v=='e' || v == 'i' || v == 'o' || v == 'u') s = s.insert(s.find(v),o); } std::cout << s << std::endl; }

不确定在其他平台上如何完成此操作,但这是我在Mac上找到的最简单的方法