Все, что вы получаете, это поток и SerialPortEvent.DATA_AVAILABLE, когда данные доступны в потоке. Что вы можете сделать, это добавить уровень косвенности и создать свой собственный слушатель, который будет вызываться, когда пройдено 6 символов, и просто передается в байтовом массиве с более чем 6 символами. Я добавил, где вы должны вставить код ниже. Реализация зависит от вас.
public void serialEvent(SerialPortEvent event) {
switch (event.getEventType()) {
case SerialPortEvent.BI:
case SerialPortEvent.OE:
case SerialPortEvent.FE:
case SerialPortEvent.PE:
case SerialPortEvent.CD:
case SerialPortEvent.CTS:
case SerialPortEvent.DSR:
case SerialPortEvent.RI:
case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
break;
case SerialPortEvent.DATA_AVAILABLE:
byte[] readBuffer = new byte[20];
try {
while (inputStream.available() > 0) {
int numBytes = inputStream.read(readBuffer);
}
// partition readBuffer into chunks of 6 bytes
...
registeredListener.dataReceived(sixByteByteArray);
} catch (IOException e) {
}
break;
}
}