如何在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端口[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java 从 USB 麦克风录制声音

关于STM32关闭SWD/JTAG接口的问题

如何访问 USB 驱动程序以直接发送命令? C#

443端口关闭,无法访问https类网页,该如何解决啊?

禁用443端口还能访问https吗?如果不能那为啥还要禁用

在 C# 中禁用 USB 端口访问智能手机内存(无组策略)