私は、シリアルポートを使用するC ++プログラム(より正確には、Borlandの「コンポーネント」)をJavaに「変換」しています。そのプログラムはスレッドを使用してシリアルポートをリッスンし、指定された「イベント文字」の1つ(キャリッジリターン、ACK、NACKなど)を受信したとき、またはユーザーが定義した数の文字を受け取ります。
Javaで変換しようとしているときに、スレッドについて少し学び、半分機能するようにしました。リスニングスレッドからメインスレッドにイベントを発生させる方法をまだ理解する必要があります...そして、ユーザーが閉じたり、再開したり、変更したりできるため、エグゼキューターの存在を学びました。これは正しい方法のようです。ポートを複数回使用し、毎回新しいスレッドを作成することは悪い習慣のようです。
したがって、Javaの並行性の海で何日も苦労する前に、「生の」スレッドに多くの作業を費やした後、アドバイスと、おそらく少しのサンプルを求めます。
シリアルリスナーを作成するには、どの種類のオブジェクト(さまざまな種類のエグゼキューターがあると思います)を使用する必要がありますか。
- 受信したchars配列を渡すためにメインスレッドにイベントをスローすることができます
- 一時停止して再起動できます(一時停止中に別の入力ストリームを指すことができます...つまり、一時停止中にそのメソッドの一部を呼び出すことができます)
- 不要な場合は破棄されます(ユーザーは代わりにソケットを使用することを選択できるため、リスナーは不要になります)
?これらのポイントのいくつかが選択するオブジェクトに依存しているかどうかは本当にわかりません。そのため、もう一度すべてをやり直すのを避けるために、すべてをリストしました。
ありがとう。