Используя JSSC для чтения с последовательного порта. Как мне использовать inputtream
Я использую JSSC для связи с последовательным портом. Данные поступают по 1 байту за раз. Новая строка начинается с возврата каретки / перевода строки.
Длина строки является переменной. (Не более 82 символов)
Каждая строка начинается с #.
Поскольку данные поступают по 1 байту за раз, я должен собрать строку. Я попытался использовать bufferedreader и inputtreamreader из примера RXTX, но мне это не удалось.
Итак, мой вопрос, как мне собрать строку за байтом и обновить строку?
Мне нужно, чтобы это была 1 строка за раз, так как она будет проанализирована.
Я пробовал гуглить разные вещи: "пример jssc inputreader bufferedreader", "jssc inputreader serialPort.readString()" и т. Д.
//Array list declaration
static List<String> datat = new ArrayList<String>();
...
...
public void serialEvent(SerialPortEvent event) {
try {
String getdata = serialPort.readString(event.getEventValue());
//System.out.print(getdata);
String[] parts= getdata.split("\\r");
if(!datat.isEmpty()){
datat.set(datat.size() - 1, datat.get(datat.size() - 1) + parts[0]);
}
for (int i=1; i<parts.length; i++) {
if (parts[i].contains("\n")) {
if(!datat.isEmpty()) {
datat.clear();
System.out.println("data cleared");
}
} else if (!parts[i].equals("\\r") | !parts[i].equals("\\n")) {
datat.add(parts[i]);
System.out.println(datat);
}
}
}
catch (SerialPortException ex) {
}
}
}
1 ответ
- Объявить архивиста
- Получите байт от последовательного порта. Если полученный байт не является новой строкой, добавьте в arraylist, иначе преобразуйте arraylist в байтовый массив. Эти шаги необходимо выполнить в цикле while.