Это твой код? Что ты на самом деле пытаешься там делать? : Р
Для чтения с SerialPort вам необходимо объявить этот порт:
CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier("/dev/tty/USB0"); //on unix based system
Затем откройте соединение на этом порту:
SerialPort serialPort = (SerialPort) portIdentifier.open("NameOfConnection-whatever", 0);
Следующим шагом будет установка параметров этого порта (при необходимости):
serialPort.setSerialPortParams(38400, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
Это мой конфиг - ваш может отличаться соответственно:)
Теперь вы готовы прочитать некоторые данные на этом порту!
Чтобы получить данные, вам нужно получить входной поток serialPorts и прочитать из него:
InputStream inputStream = serialPort.getInputStream();
while (active) {
try {
byte[] buffer = new byte[22];
while ((buffer[0] = (byte) inputStream.read()) != 'R') {
}
int i = 1;
while (i < 22) {
if (!active) {
break;
}
buffer[i++] = (byte) inputStream.read();
}
//do with the buffer whatever you want!
} catch (IOException ex) {
logger.error(ex.getMessage(), ex);
}
}
Что я на самом деле здесь делаю, так это чтение из входного потока, используя метод read()
. Он будет блокироваться до тех пор, пока данные не станут доступны, или вернет -1, если достигнут конец потока. В этом примере я жду, пока не получу символ 'R', а затем считываю следующие 22 байта в буфер. И вот как вы читаете данные.
- Получение входного потока serialPorts
- использовать метод .read ()
- есть все внутри цикла и цикла выхода при отмене (в моем случае
active
может быть установлен в false другим методом и, таким образом, завершить процесс чтения.
надеюсь, это поможет