Я пытаюсь работать с JSSC. Я создал свое приложение по этой ссылке:
https://code.google.com/p/java-simple-serial-connector/wiki/jSSC_examples
Мой обработчик событий выглядит так:
static class SerialPortReader implements SerialPortEventListener {
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR()){//If data is available
try {
byte buffer[] = serialPort.readBytes();
}
catch (SerialPortException ex) {
System.out.println(ex);
}
}
}
}
}
Проблема в том, что я всегда не получаю входящие данные одним куском. (У меня сообщение имеет длину 100 байт, я получаю 48 и 52 байта в 2 отдельных вызовах) - Другая сторона отправляет мне сообщения разной длины.
- В ICD, с которым я работаю, есть поле, которое сообщает нам длину сообщения. (от байта № 10 до байта № 13) - я не могу прочитать 14 байтов:
(serialPort.readBytes(14);,
проанализируйте длину сообщения и прочитайте остальную часть сообщения:
(serialPort.readBytes(messageLength-14);
Но если я это сделаю, у меня не будет сообщения одним куском (у меня будет 2 отдельных byte[] и мне нужно его одним куском (byte[]) без работы функции копирования.
- Является ли это возможным ?
При работе с Ethernet (SocketChannel) мы можем читать данные с помощью ByteBuffer. Но с JSSC мы не можем.
- Есть ли хорошая альтернатива JSSC?
Спасибо