我一直在寻找可以与Windows / Win32上的串行设备通信的Java API,但我检查过的许多API要么是用于Linux,要么过时,要么就是批评不好。
有人可以向我推荐他们已经尝试或知道的在Windows XP上易于实现吗?
答案 0 :(得分:15)
几周前我开始寻找同样的事情,到目前为止,我对多平台RXTX库非常满意。适用于任何Windows,Linux和OS X.具有非常简洁易懂的API。
编辑:RXTX也是开源的。
答案 1 :(得分:8)
我毫不保留地推荐来自serialio.com的Java Serial Port;我在Sun,IBM和RxTx系列包中遇到了严重的稳定性问题。 SerialPort已经全天候生产,并且已经超过5年了。
它们支持标准的Java串行API,以及它们自己的替代专有API。我会坚持使用标准的API,除非你真的需要他们的标准API没有,只是为了让你的选择保持开放。
答案 2 :(得分:4)
过去五年左右,我一直在使用PureJavaComm。它是积极维护的,并且是纯Java(通过JNA)实现。由于缺乏维护和许多微妙的问题,RXTX让我失望。
答案 3 :(得分:3)
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,不是那么多。
答案 4 :(得分:2)
我已经编写了一个开源Java库,因为现有的Java库都不符合我的需求(过时,封闭源代码,难以修改,未维护,......)。
它被称为JSerial,它是麻省理工学院授权的,你可以在这里了解更多:https://github.com/thibautd/JSerial!
目前仅支持Windows,但我计划支持Linux。如果需要,可以使用最新的Visual Studio轻松修改本机部分。