JSerialComm не читает всю строку из Arduino - PullRequest
0 голосов
/ 08 ноября 2019

Я использую jSerialComm с моим Java-приложением для получения данных от Arduino. Однако Java-программа читает только входящие «байты». Это не хорошо, потому что мой Arduino печатает длинную строку, и я хочу, чтобы приложение Java считывало всю строку, не теряя никакой информации. Мой Arduino отправляет строку данных дважды в секунду.

Я нахожусь на Windows 10 с JDK 13, используя IntelliJ, Adruino IDE 1.8.10.

В настоящее время строка очень длинная с возможностьюразмер меняется, поэтому я не могу просто прочитать определенное количество байтов.

В настоящее время я даже печатаю строку с # в начале и * в конце. Мой дизайн в настоящее время как-то теряет данные, получая только приемлемую строку, может быть, 1 из 10 отправленных строк.

    byte[] newData = new byte[comPort.bytesAvailable(0];
    int numRead = comPort.readBytes(newData, newData.length);
    stringBuffer = new String(newData,0,numRead);
    if (stringBuffer.startsWith("#"))
    {
         serialString+=stringBuffer;
         while (!stringBuffer.endsWith("*")
         {
              numRead = comPort.readBytes(newData, newData.length);
              stringBuffer = new String(newData,0,numRead);
              serialString+=stringBuffer;
         }

         //double check it is the proper format
         if (serialString.startsWith("#") && serial.String.endsWith("*")
         {
              //do stuff
         }
         serialString = "";
    }

Есть ли метод, кроме readBytes (), который я могу использовать? Я знаю, что могу использовать getInputStream (), но я не знаю, куда идти.

Заранее большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...