Bluetooth経由でバイト配列をJavaプログラムに送信するArduinoプログラムがあります。
Java プログラムは JSSC でデータを受け取ります。配列の長さは 72 バイトです (18 個の float が 4 バイト)。JSSC が送信の終了を認識する方法、または新しいバイト配列が利用可能になったことを知る方法は?
ほとんどの場合、転送は正しいです。しかし、時々廃棄物が受け取られます。
ここでこの例を見つけました。
この if(event.getEventValue() == 10) は改行を意味しますが、bytearray には改行がありません。
アルドゥイーノ:
Serial.write(バイト配列、バイト配列のサイズ);
ジャワ:
class SerialPortReader implements SerialPortEventListener {
public void serialEvent(SerialPortEvent event) {
int dataNumber = 0;
try {
if(event.isRXCHAR()){
if(event.getEventValue() >= BYTE_NUMBER){
receivedByte = usbPort.readBytes(BYTE_NUMBER);
if(receivedByte != null) {
isRequestOK = true;
byte[] myArray = new byte[FLOATSIZE];
for(int i = 0, y = 0; i < receivedByte.length; i++, y++) { //i < receivedByte.length-1
if(myArray == null) {
y = 0;
myArray = new byte[FLOATSIZE];
}
if((i + 1) % FLOATSIZE != 0) {
myArray[y] = receivedByte[i];
}
else {
myArray[y] = receivedByte[i];
receivedValue[dataNumber] = ByteBuffer.wrap(myArray).order(ByteOrder.LITTLE_ENDIAN).getFloat();
myArray = null;
dataNumber++;
}
}
}
}
}
} catch (SerialPortException e) { } ///InvocationTargetException oder NullPointerException
}//--------------------------- End of serialEvent -------------------------------------------------------------
}//--------------------------- End of SerialPortReader ------------------------------------------------------------
誰でも私を助けることができますか?
よろしくウィリー
PS これは、このフォーラムでの最初の質問です。うまくいけば、私は規則に従っています。