7

最初に javax.comm を使用してシリアル ポート (COM4) に接続しようとしました。シリアルポートも開きませんでした。

次に、rxtx ライブラリ (rxtx-2.2pre2) を使用して接続しようとしました。接続してデータを書き込みますが、シリアルポートからデータを読み取りません。

javax.comm または rxtx ライブラリを使用するための JDK/プラットフォーム依存関係はありますか?

私は使用しています:

  • Windows XP SP3、
  • JDK1.6.0_22、
  • rxtx-2.2pre2、
  • USBからシリアルへのアダプター、
  • Portmon (by Microsoft) - シリアル ポートのアクティビティを監視します
  • ハイパーターミナル - COM ポートが実際に機能するかどうかを確認します。
  • http://rxtx.qbang.org/wiki/index.php/Two_way_communcation_with_the_serial_port - 読み取りと書き込みのチェックに使用するサンプル コード
4

3 に答える 3

1

私はこのコードを試し、成功しました。次の3つのファイルが必要です。

comm.jar
javax.comm.properties
win32com.dll

これらのファイルを特定のディレクトリに配置する必要があります。

comm.jar
in /java/jre6/lib/ext ,  /java/jdk_1.6.0.20/jre6/lib/ext , java/jdk_1.6.0.20/lib

win32com.dll
in /java/jre6/bin, /java/jdk_1.6.0.20/bin,  /windwos/System32

javax.comm.properties
in /java/jdk_1.6.0.20/lib, java/jre/lib , /java/jdk_1.6.0.20/jre/lib
于 2012-05-28T12:27:38.517 に答える
1

purejavacomm を試すことをお勧めします: http://www.sparetimelabs.com/purejavacomm/index.html

これは純粋な Java + JNA で書かれた javax.comm の実装であり、Windows と Linux 間の移植性の問題を完全に解決してくれました。また、OSX または FreeBSD (まだ試していません) でも動作し、Solaris など、JNA がサポートする他の OS に簡単に移植できるはずです。

もう 1 つの利点は、rxtx の場合のように DLL をインストールする必要がないことと、rxtx が Windows で時々持つ 100% CPU を食べるバグがないように見えることです。

于 2012-05-29T06:59:22.420 に答える
1

掘り下げた後、フロー制御モードを明示的に設定することで、これを自分で解決することができました。フロー制御が必要ない場合でも、明示的に設定するとFLOWCONTROL_NONE役立ちます。

Linux では同じ呼び出しは必要ありませんでした。

フロー制御をハードウェアに設定している場合、このモードで通知を受け取るにはRTSも明示的に設定する必要があると思います。(検証されていない)。

于 2012-05-22T13:24:54.923 に答える