我有一个 Arduino 程序,它通过蓝牙向 Java 程序发送一个字节数组。
Java 程序在 JSSC 上接收数据。该数组长 72 个字节(18 个浮点数为 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这是我在这个论坛的第一个问题。希望我遵守了规则。