Windows上的Java串行通信

我一直在寻找一个可以与Windows / Win32上的串行设备进行通信的Java API,但是我已经检查过的很多API都是针对Linux的,也是过时的,或者只是有不好的评论。

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

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

编辑:RXTX也是开源的。

毫无保留,我推荐从serialio.com上的Java串行端口 ; 我在Sun,IBM和RxTx串行包中遇到了重大的稳定性问题。 SerialPort在全年无休的生产中已经稳定了5年以上。

他们支持标准的Java串行API,以及他们自己的替代专有API。 虽然我会坚持使用标准的API,除非你确实需要标准的API,只是为了让你的选择保持开放。

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,不是那么多。

过去五年来我一直在使用PureJavaComm 。 它被主动维护,并且是一个纯粹的Java(通过JNA)实现。 RXTX让我失望,因为缺乏维护和许多微妙的问题。

我写了一个开放源码的Java库,因为没有一个现有的库符合我的需求(过时的,封闭的,难以修改,不维护的…)。

这就是所谓的JSerial,这是麻省理工学院许可,你可以在这里了解更多: https : //github.com/thibautd/JSerial !

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