我一直在寻找可以与 Windows/Win32 上的串行设备通信的 Java API,但我检查过的许多 API 要么适用于 Linux,要么过于过时,要么只是受到了不好的批评。
有人可以向我推荐一个他们已经尝试过或知道在 Windows XP 上易于实现的产品吗?
我一直在寻找可以与 Windows/Win32 上的串行设备通信的 Java API,但我检查过的许多 API 要么适用于 Linux,要么过于过时,要么只是受到了不好的批评。
有人可以向我推荐一个他们已经尝试过或知道在 Windows XP 上易于实现的产品吗?
几周前我开始寻找同样的东西,到目前为止,我对多平台RXTX库非常满意。适用于任何 Windows、Linux 和 OS X。具有非常干净、易于理解的 API。
编辑:RXTX 也是开源的。
毫无保留,我推荐来自 serialio.com 的Java Serial Port ;我在使用 Sun、IBM 和 RxTx 串行包时遇到了严重的稳定性问题。SerialPort 在 5 年多来一直在 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 库,因为现有的 Java 库都不符合我的需求(过时、闭源、难以修改、未维护……)。
它被称为 JSerial,它是 MIT 许可的,您可以在这里了解更多信息:https ://github.com/thibautd/JSerial !
目前只支持 Windows,但我有支持 Linux 的计划。如果需要,您可以使用最新的 Visual Studio 轻松修改本机部分。