簡體   English   中英

Windows上的Java串行通信

[英]Java Serial Communication on Windows

我一直在尋找能夠與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年。

它們支持標准的Java串行API,以及它們自己的替代專有API。 我會堅持使用標准的API,除非你真的需要他們的標准API沒有,只是為了讓你的選擇保持開放。

我在過去五年左右一直在使用PureJavaComm 它是積極維護的,並且是純Java(通過JNA)實現。 由於缺乏維護和許多微妙的問題,RXTX讓我失望。

Java以其片狀串行I / O支持而臭名昭着。 在之前的工作中,我們嘗試了RXTX和SerialIO,用於從Teknic伺服控制器以56kbps流式傳輸數據的應用程序,並發現它們吞噬了CPU很多。 也許對於不需要從串行端口連續流式傳輸的應用程序,這兩個庫都很好,但我們並不認為串行端口的流I / O應該占用持續15-30%的CPU當需要響應的JVM中的其他線程非常需要機器時。

相反,我們用C ++創建了一個服務器,它將從伺服上的串口讀取數據流,轉換/打包並通過套接字連接將其發送到我們的Java應用程序。 C ++中串行I / O服務器上的CPU負載? 在最糟糕的情況下,勉強攀升至1%。

Java做得很好 - 在我看來,串行I / O不是其中之一,具體取決於應用程序的類型......

最終,你應該拿出我所說的一粒鹽,並試試RXTX和SerialIO(這是便宜的,比如java版本的50美元左右),如果它們滿足你的需求,那就去吧。 就個人而言,我堅持使用SerialIO,因為它受到支持並積極開展工作。 RXTX,不是那么多。

我編寫了一個開源Java庫,因為現有的Java庫都不符合我的需求(過時,封閉源代碼,難以修改,未維護,......)。

它被稱為JSerial,它是麻省理工學院許可的,你可以在這里了解更多: https//github.com/thibautd/JSerial

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM