Используя 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 ответ

  1. Объявить архивиста
  2. Получите байт от последовательного порта. Если полученный байт не является новой строкой, добавьте в arraylist, иначе преобразуйте arraylist в байтовый массив. Эти шаги необходимо выполнить в цикле while.
Другие вопросы по тегам