如何在java中访问USB端口[关闭]
Posted
技术标签:
【中文标题】如何在java中访问USB端口[关闭]【英文标题】:How to access USB ports in java [closed] 【发布时间】:2011-01-08 10:54:59 【问题描述】:我正在尝试编写一个访问 USB 端口以读取和写入通过 USB 连接的设备的 Java 应用程序。我面临的问题是我不知道在 java 中究竟使用什么来做这样的事情。我在网上搜索并找到了一个名为JUSB
的东西,但所有帖子似乎都相当老了。
目前我正在使用RXTX
库,但有时会遇到一些同步错误。当我使用 C# 进行等效操作时,它需要的代码要少得多,而且我不会遇到任何相同的同步错误。
我的问题是,最新版本的 JRE 中是否有内置的东西可以用来访问 USB 端口(就像等效的 C# 代码一样简单)?
【问题讨论】:
【参考方案1】:Java Communications API。这应该提供与 C# System.IO.Ports 命名空间类似的功能。
【讨论】:
System.IO.Ports 用于串行通信,除非 OP 暗示串行到 USB 接口?! 同意 -- System.IO.Ports 没有 USB 接口,仅用于 Com 端口。 如果您的 USB 设备暴露在 COM 端口上,那么您可以使用 System.IO.Ports。 泰勒:你试过了吗?它真的有效吗? 是的,我有一个每天都在使用的应用程序。 USB 设备是磁条卡的编码器。【参考方案2】:查看jUSB 或usb4java 库。
【讨论】:
Java-USB 仅适用于 Linux。如果这就是您所需要的,它可能会成功,尽管它似乎有一段时间没有更新。【参考方案3】:在 Java 中没有任何东西可以等同于 C# 的 USB 支持。 jUSB 和 Java-USB 都严重过时,可能无法用于任何严肃的应用程序开发。
如果你想实现一个跨平台的 USB 应用程序,最好的办法是编写一个抽象的JNI 接口,它可以与你必须自己编写的 Linux、Mac 和 Windows 本地库通信。我会看LibUSB 来处理Mac 和Linux。如您所见,Windows 非常简单。我刚刚完成了一个为期一年的项目,它就是这样做的,不幸的是,这是唯一一个严肃的跨平台解决方案。如果您不必在 Windows 上实现并且您的需求有限,则可以使用较旧的 Java 库之一(jUSB 或 Java-USB)。任何需要在 Win32/Win64 上部署的东西都需要原生组件。
【讨论】:
usb4java 怎么样?似乎是一个不错的选择。我与这个发展无关。【参考方案4】:您可能想看看 usb4java - http://usb4java.org/index.html 它似乎支持 Windows、Linux 和 Mac OS,并且在发布时似乎是相当最新的。不幸的是,它在 LGPL 下,因此可能不适合商业开发。
【讨论】:
如果您只想在代码中使用它们的 API(并且您拥有非 LGPL 许可证),那么与 LGPL 库的链接应该不是问题。 GPL 许可库是 copyleft 许可,强制您的代码许可也为 GPL 许可,无论您使用什么许可。【参考方案5】:在跨平台(Linux 和 Windows)上使用 usb4java 一年了,效果很好。
见:
http://usb4java.org/
他们非常活跃,并且有一个非常好的 javax USB 前端。
【讨论】:
【参考方案6】:如果您使用的是 Mac,则可以通过 /Volumes/ 目录访问 USB。
例子:
您想写入“驱动器”中的文件,因此文件路径为:
/Volumes/Drive/file.whatever
不确定在其他平台上是如何实现的,但这是我在 mac 上找到的最简单的方法
【讨论】:
只能访问驱动器。但是还有更多的 USB 设备以上是关于如何在java中访问USB端口[关闭]的主要内容,如果未能解决你的问题,请参考以下文章