2009-04-22 11 views
2

私は、javax.commを使用してcomポートからデータを読み取るアプリケーションを持っています。javax.comm:デバイスが切断されたときのエラー

私が午前問題は、私はから読んでいるデバイスが予期せずに切断された場合、私は「WaitCommEvent:エラー5」と言うコンソールでエラーが出るということです

私は周りを見回したとすることはできませんしているがこれに関する有用な情報を見つける。私はすべてのnotifyOn *メソッドをtrueに設定しているので、すべてのイベントを受け取るべきだと思うが、私はこのイベントをキャッチしていない。

出力されるエラーメッセージは、自分のコードのどこにもないので、どこかのjavax.commパッケージ内にある必要があります。誰も私がどのようにこのエラーを処理するように私はCOMポートが正常に終了することができます教えてもらえますか?

ありがとうございます!

答えて

2

誰もがこれに興味があれば、解決策を見つけました。私はjavax.comm APIを使用していましたが、問題を解決するためにrxtx api(http://rxtx.qbang.org/wiki/index.php/Main_Page)に置き換えました。コードを変更する必要はありませんでしたが、デバイスが切断されると、 "Underlying input stream returned zero bytes"というメッセージでIOExceptionが発生しました。私はそのメッセージを処理し、新しいスレッドを開始します。新しいスレッドでは、port.close()とport.removeEventListener()を呼び出します。これら2つの呼び出しは、新しいスレッドで実行する必要があります。そうしないと、アプリケーションがハングします。

2

私たちは、javax.commを動作させるのに多くの時間を費やしてきました。私たちのケースでは、問題を引き起こしていたCOMドライバ(いくつかのWindows 7コンピュータ)が見つかりました。 、これは解決策になるかもしれないドライバも問題であり、あなたは、Windows 7またはおそらくVistaを使っている(とあなたは多産/ LOGILINKのserielケーブルを使用している)場合は:) http://www.akosta.dk/category/technical-notes/

はあなたにそれを得るホープ作業!

2

この質問はほぼ2歳ですが、多分もう一つの可能​​な解決策を必要とします:

私はjava.commと同じ問題を抱えていた:「WaitCommEvent:エラー5」 場合に、このメッセージは、複数回表示されますCOMポートが切断されていますが、 ですが、SerialPortオブジェクトは閉じられていません。

私の解決策は、SerialPortのIOストリームの読み書きが例外をスローした場合、SerialPortオブジェクトを閉じることでした。

関連する問題