私の質問が明確ではなくて申し訳ありません。私が取り組んでいるコードをいくつか与えるべきでした。次のリンクを参照してください。
http://www.arduino.cc/playground/Interfacing/Java
基本的に、このサンプル コードは、一部の関数で "synchronized" キーワードを宣言することにより、シリアル ポートでイベント ベースの通信を行う従来の rxtx の例とは異なります。私が取り組んでいる唯一の部分は、シリアルイベントリスナー内です:
public synchronized void serialEvent(SerialPortEvent oEvent) {
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
////////////////////////////////////
1) I will parse the incoming data into an integer array
2) this array will be shared with other classes, let me
explain some of them below.....
////////////////////////////////////
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
機能 A: この共有配列のデータを使用して 2D/3D グラフィックを実行するアプレット。
機能 B: GUI は、共有配列から計算されたいくつかの数値を jframe のテキストエリアに出力/印刷します。また、ボタンで Function A アプレットを開くこともできます。しかし、GUI にはいくつかのボタンがあり、関数 A のいくつかの変数を変更して、関数 A によって共有配列を処理するための異なる動作を引き起こします。
これは私が欲しいものです:
シリアルデータが入ってきてデータ配列に解析されると....
1) 関数 B は、このデータ配列に関連付けられた数値をすぐに出力します。ユーザーがボタンをクリックして機能 A アプレットを表示した場合にのみ、機能 A は 2D/3D グラフィックを表示します。
2) 機能 A と B の両方がアクティブな場合、それら自体の変数は受信シリアル データと共に変更される可能性があります。
関数 A と B が、serialEvent() で変更されたときに共有データ配列の変更をすぐにキャッチするようにします。最も簡単な方法は、データ配列を参照として渡し、次の受信データが利用可能になる前に各関数を呼び出すことです。しかし、グロドリゲスが以前に言及した問題があります. 機能 A または B の進行中に、受信データが失われる可能性があります。私は何年も前に Java で MVC について何かをしましたが、それは温度を表示するために異なるクラスまたは GUI 間でオブザーバブルを使用していました。テキストボックスに温度を入力すると、スライダーのある他の GUI が入力温度に変わります。ここでスライダーを変更すると、他の GUI の温度が数値で変更されます。シリアルイベントは、ここでこのアプリケーションを思い出させます。ここで適用するのが最善の方法なのか、それとも私がやりたいことを正確に行うためのより良い簡単な方法があるのか どうかはわかりません.
再度のご理解とご協力をお願いいたします。