web-dev-qa-db-ja.com

Java Windowsでのシリアル通信

私はJava APIを探していましたが、チェックアウトしたAPIの多くはLinux用であるか、古すぎるか、または単に持っていました悪い評論家。

誰かが試してみたか、Windows XPに簡単に実装できることを知っていると誰かに勧められますか?

30
Steve

私は数週間前に同じものを探し始めました、そして今までマルチプラットフォーム [〜#〜] rxtx [〜#〜] ライブラリにとても満足しています。すべてのWindows、Linux、OS Xで動作します。非常にクリーンで理解しやすいAPIを備えています。

編集:RXTXもオープンソースです。

16
Murat Ayfer

予約なしでは、 Java Serial Port をserialio.comからお勧めします。 Sun、IBM、RxTxシリアルパッケージで安定性に重大な問題がありました。 SerialPortは、5年以上にわたって24時間年中無休で生産を行っています。

彼らは標準のJavaシリアルAPIだけでなく、独自の代替APIもサポートしています。ただし、標準のAPIにはないものを本当に必要としない限り、標準のAPIを使用します。オプションを開いたままにするためです。

8
Lawrence Dol

私は過去5年間ほど PureJavaComm を使用しています。これは積極的にメンテナンスされており、純粋なJava(JNAを介して)実装です。RXTXはメンテナンスの欠如と多くの微妙な問題のために私を失望させました。

5
Jason S

Javaは、不安定なシリアルI/Oサポートで有名です。前のジョブでは、Teknicサーボコントローラーから56kbpsでデータをストリーミングするアプリケーションに対して、RXTXとSerialIOの両方を試してみましたが、CPUをかなり混乱させることがわかりました。おそらく、シリアルポートからの継続的なストリーミングを必要としないアプリの場合、これらのライブラリはどちらも優れていますが、シリアルポートからのストリーミングI/OがCPUの15〜30%を持続的に消費するとは思われませんでした。応答性が必要なJVMの他のスレッドで必要になるマシン。

代わりに、C++でサーバーを作成し、サーボのシリアルポートからデータストリームを読み取り、変換/パケット化して、ソケット接続を介してXMLでJavaアプリに送信します。 C++でのシリアルI/OサーバーのCPU負荷は?最悪の場合でも1%にかろうじて忍び寄ります。

特定のことJavaはうまくいく-私の意見では、シリアルI/Oはアプリケーションのタイプによってはそれらの1つではありません...

結局のところ、私が言ったことを一粒の塩でも取り、RXTXとSerialIO(Javaバージョンの場合、50ドル程度の安価なもの)の両方を試してみて、それらが満たされていれば個人的には、SerialIOがサポートされており、積極的に取り組んでいるので、私はそれを使い続けます。

3

オープンソースJavaライブラリを作成しました。これは、既存のものがどれも私のニーズに合わないためです(古い、クローズドソース、変更が難しい、メンテナンスされていないなど)。

これはJSerialと呼ばれ、MITライセンスで提供されています。詳しくはこちらをご覧ください https://github.com/thibautd/JSerial

現在はWindowsしかサポートしていませんが、Linuxをサポートする計画があります。必要に応じて、最新のVisual Studioでネイティブパーツを簡単に変更できます。

2
Thibaut D.