我有一个Arduino程序,它通过蓝牙将一个字节数组发送到Java程序。
Java程序在JSSC上接收数据。该数组长度为72个字节(18个浮点数为4个字节)。 JSSC如何识别传输结束,或者知道新的字节数组可用?
在大多数情况下,转移是正确的。但有时会收到废物。
我在这里找到了这个例子。
此 if(event.getEventValue()== 10) 表示换行符,但是bytearray没有换行符。
Arduino的:
Serial.write(bytearray,bytearray的大小);
爪哇:
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 ------------------------------------------------------------
有人能帮助我吗?
最好的问候威利
P.S。这是我在这个论坛上的第一个问题。希望我遵守规则。