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シリアルポートをお勧めします。Sun、IBM、およびRxTxシリアルパッケージで重大な安定性の問題が発生しました。SerialPortは、5年以上にわたって24時間年中無休で堅実な生産を続けています。
これらは、標準のJavaシリアルAPIと、独自の代替独自のAPIをサポートしています。ただし、オプションを開いたままにするために、標準のAPIにはないものが本当に必要な場合を除いて、標準のAPIを使用します。
私は過去 5 年ほどPureJavaCommを使用しています。これは積極的に維持されており、純粋な Java (JNA 経由) の実装です。RXTX は、メンテナンスの欠如と多くの微妙な問題のために、私をがっかりさせました.
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 がサポートされており、積極的に取り組んでいるため、SerialIO を使い続けたいと思います。RXTX、それほどではありません。
私はオープンソースの Java ライブラリを作成しました。これは、既存の Java ライブラリがどれも私のニーズに合わないためです (時代遅れ、クローズド ソース、変更が困難、メンテナンスされていないなど)。
これは JSerial と呼ばれ、MIT ライセンスを取得しています。詳細については、 https ://github.com/thibautd/JSerial をご覧ください。
現在は Windows のみをサポートしていますが、Linux をサポートする計画があります。必要に応じて、最新の Visual Studio でネイティブ部分を簡単に変更できます。