【发布时间】:2008-11-05 03:30:12
【问题描述】:
我一直在寻找可以与 Windows/Win32 上的串行设备通信的 Java API,但我检查过的许多 API 要么适用于 Linux,要么过于过时,要么受到了不好的批评。
有人可以向我推荐一个他们已经尝试过或知道在 Windows XP 上易于实现的软件吗?
【问题讨论】:
标签: java windows serial-port
我一直在寻找可以与 Windows/Win32 上的串行设备通信的 Java API,但我检查过的许多 API 要么适用于 Linux,要么过于过时,要么受到了不好的批评。
有人可以向我推荐一个他们已经尝试过或知道在 Windows XP 上易于实现的软件吗?
【问题讨论】:
标签: java windows serial-port
几周前我开始寻找同样的东西,到目前为止,我对多平台 RXTX 库感到非常满意。适用于任何 Windows、Linux 和 OS X。具有非常干净、易于理解的 API。
编辑:RXTX 也是开源的。
【讨论】:
毫无保留,推荐来自serialio.com的Java Serial Port;我在使用 Sun、IBM 和 RxTx 串行包时遇到了严重的稳定性问题。 5 年多来,SerialPort 一直在 24/7 全天候生产中坚如磐石。
它们支持标准的 Java 串行 API,以及它们自己的替代专有 API。不过,我会坚持使用标准 API,除非你真的需要标准 API 不需要的东西,只是为了让你的选择保持开放。
【讨论】:
在过去五年左右的时间里,我一直在使用PureJavaComm。它得到积极维护,并且是纯 Java(通过 JNA)实现。由于缺乏维护和许多微妙的问题,RXTX 让我失望了。
【讨论】:
Java 因其不稳定的串行 I/O 支持而臭名昭著。在之前的工作中,我们尝试将 RXTX 和 SerialIO 用于从 Teknic 伺服控制器以 56kbps 传输数据的应用程序,发现它们会大量占用 CPU。也许对于不需要从串行端口连续流式传输的应用程序,这两个库都很好,但我们不认为从串行端口流式传输 I/O 应该持续占用 15-30% 的 CPU当 JVM 中需要响应的其他线程非常需要机器时。
相反,我们用 C++ 创建了一个服务器,该服务器将从伺服器上的串行端口读取数据流,对其进行转换/打包,然后通过套接字连接以 XML 格式将其发送到我们的 Java 应用程序。 C++ 中串行 I/O 服务器上的 CPU 负载?在最坏的情况下勉强爬到 1%。
Java 在某些方面做得很好——在我看来,串行 I/O 不是其中之一,具体取决于应用程序的类型......
最终,您甚至应该对我所说的持保留态度,并尝试 RXTX 和 SerialIO(这很便宜,Java 版本大约 50 美元),如果它们满足您的需求,那就去吧.就我个人而言,我会坚持使用 SerialIO,因为它受到支持并正在积极开发中。 RXTX,没那么多。
【讨论】:
我编写了一个开源 Java 库,因为现有的库都不符合我的需求(过时、闭源、难以修改、未维护……)。
它被称为 JSerial,它是 MIT 许可的,您可以在此处了解更多信息:https://github.com/thibautd/JSerial!
目前只支持 Windows,但我有支持 Linux 的计划。如果需要,您可以使用最新的 Visual Studio 轻松修改本机部分。
【讨论】: