Windows 上的 Java 串行通信

问题描述 投票:0回答:5

我一直在寻找可以与 Windows/Win32 上的串行设备通信的 Java API,但我检查过的许多 API 要么适用于 Linux,要么太过时,要么只是受到了批评。

有人可以向我推荐一个他们已经尝试过或知道的在 Windows XP 上很容易实现的吗?

java windows serial-port
5个回答
16
投票

几周前我开始寻找同样的东西,到目前为止我对多平台 RXTX 库非常满意。适用于任何 Windows、Linux 和 OS X。具有非常干净、易于理解的 API。

编辑:RXTX 也是开源的。


8
投票

毫无保留地,我推荐来自serialio.com的Java SerialPort(另见这篇博文);我在使用 Sun、IBM 和 RxTx 串行软件包时遇到了严重的稳定性问题。 SerialPort 在 24/7 生产中已经坚如磐石 5 年多了。

它们支持标准 Java 串行 API,以及他们自己的替代专有 API。不过,我会坚持使用标准 API,除非您确实需要他们拥有而标准 API 没有的东西,只是为了保持您的选择余地。


7
投票

过去五年左右我一直在使用 PureJavaComm。它得到积极维护,并且是纯 Java(通过 JNA)实现。 RXTX 由于缺乏维护和许多微妙的问题而让我失望。


3
投票

Java 因其不稳定的串行 I/O 支持而臭名昭著。在之前的工作中,我们在一个应用程序中尝试了 RXTX 和 SerialIO,该应用程序以 56kbps 的速度从 Teknic 伺服控制器传输数据,发现它们会大量占用 CPU。也许对于不需要从串行端口连续流式传输的应用程序来说,这两个库都很好,但我们不认为来自串行端口的流式 I/O 应该持续占用 15-30% 的 CPU当 JVM 中的其他线程非常需要响应时,可以使用该机器。

相反,我们用 C++ 创建了一个服务器,它将从伺服器上的串行端口读取数据流,对其进行转换/打包,然后通过套接字连接将其以 XML 形式发送到我们的 Java 应用程序。 C++ 中串行 I/O 服务器上的 CPU 负载?最糟糕的时候也勉强达到 1%。

Java 在某些方面做得很好 - 在我看来,串行 I/O 不是其中之一,具体取决于应用程序的类型......

最终,你应该对我说的持保留态度,尝试一下 RXTX 和 SerialIO(这非常便宜,java 版本大约 50 美元左右),如果它们满足你的需求,就使用它。就我个人而言,我会坚持使用 SerialIO,因为它受到支持并且正在积极开发。 RXTX,没那么多。


2
投票

我编写了一个开源 Java 库,因为现有的库都不符合我的需求(过时、闭源、难以修改、无法维护……)。

它叫做 JSerial,它是 MIT 许可的,您可以在这里了解更多信息:https://github.com/thibautd/JSerial

目前仅支持Windows,但我有计划支持Linux。如果需要,您可以使用最新的 Visual Studio 轻松修改本机部分。

© www.soinside.com 2019 - 2024. All rights reserved.