ログインフォームを使用し、シリアルポートを使用して Arduino にアクセスするプロジェクトを作成しています。アプリケーションの起動時に Arduino に文字列を送信し、デバイスからの応答を待って、ログイン ユーザー名とパスワードが正しいことを確認する前に、操作の準備ができていることを確認する必要があります。ユーザー名とパスワードをチェックする Login という名前のクラスと、jssc 実装を含む serial という名前の 2 つのクラスを作成しました。
私はライブラリ Java シンプル シリアル コネクタを使用しており、例はHEREにあります。
public class PortReader implements SerialPortEventListener {
@Override
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR() && event.getEventValue() > 0) {
try {
synchronized(this){
String receivedData = serialPort.readString(event.getEventValue());
System.out.println("Received response from port: " + receivedData);
serialPort.closePort();
}
}
catch (SerialPortException ex) {
System.out.println("Error in receiving response from port: " + ex);
}
}
}
}
そして、この関数は Login クラスにシリアル オブジェクトを作成します。
try {
reader.connect(comReader);
writer.connect(comWriter);
//Message to Arduino, wait response.
writer.serialWrite("1");
synchronized(writer){
try{
writer.wait();
}
catch(Exception e){
e.printStackTrace();
}
}
} catch (Exception ex) {
lblMensaje.setText("Fallo de conexion serial.");
System.out.println(ex);
}
Arduino にデータを正常に送信して応答を受け取りましたが、その値を Login クラスに渡す方法がわかりません。私が得るのはnull値か何もありません。私は待機メソッドを使用してみました.ログインの新しいインスタンスをシリアル内に渡し、ゲッター変数を介してメソッドを公開しようとしましたが、これまでのところ何も機能していません.
SerialEvent 変数を呼び出し元のクラスに渡す正しい方法は何ですか? また、そのクラスは、ログイン フォームの比較を続行するためにシリアル イベントが終了したことをどのように認識しますか?