Com ポートと通信できるように JSSC API を実装しました。「N\r\n」のようなコマンドを送信します
通常のハイパーターミナルで受け取るものは次のようになります。
0100071CA79215021803164442180000
0100071C9F5415021803164514520000
0100071CDF5115022106142956600000
ノック
しかし、JSSC API で同じことをすると、これを受け取ります (最初のコードのみ)
010
0071CA79
2150218
0316444
218
問題は、ビット部分をランダムに受け取り、コードの最後で一部を失うことです。しかし、それは重要ではありません。すべてのコードの最初の 12 桁だけが必要です。
問題は、ビットパーツではなくフルラインのみを受け取るように関数を取得するにはどうすればよいですか?
これはクラス Class PortReader2 implements SerialPortEventListener {
@Override
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR()&& event.getEventValue() > 2) {
try {
// получение ответа от порта
String receivedData = serialPort.readString();
System.out.println(receivedData.length() + ":" + receivedData);
}
catch (SerialPortException ex) {
System.out.println("Error in receiving response from port: " + ex);
}
}
}
}
これが送信部分です
public void sendCodeCommand(SerialPort serialPort) {
// writing string to port
try {
Thread.sleep(3000);
serialPort.writeBytes("N\r\n".getBytes());
} catch (SerialPortException | InterruptedException ex) {
Logger.getLogger(ComPortSendReceive.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("String wrote to port, waiting for response..");
}