Я использую 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 (), но я не знаю, куда идти.
Заранее большое спасибо.