дело не в буфере. Передача идет последовательно по одному символу, причем заметно медленнее, чем контроллер обычно может обрабатывать принятые данные. Ваш кусок кода быстро выгребает все, что есть в буфере, Serial.available() возвращает 0 (ибо следующий символ еще не успел придти), и цикл чтения на этом завершается.
Определяйте окончание передачи пакета как-нибудь иначе.
Да такая проблема была, но тогда было так, что считывался первый байт. Но при следующем цикле loop, считывались остальные. Я это решил вставив delay(2), сейчас же обрезается конец посылки, и при прохождении одного цикла loop, когда действие снова доходит до считывания данных с ком порта, там данных никаких нет, буфер пуст. Если бы проблема была в высокой скорости считывания то в буфере бы остались данные, которые извлеклись бы в следующем цикле loop
Добавлено after 1 hour 11 minutes 49 seconds:Поясню еще, отправителем является GPS модуль отправляет RAW данные, я подцепился к ком порту и смтрел что доходит а что обрубается, вот код прошивки arduino (wemos d1 если быть точнее):
Код:
void setup() {
// start serial port:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
}
void loop() {
Serial.println( "++++++++++++++++++BEGIN++++++++++++++++");
int i=1;
while (Serial.available() > 0) {
byte inChar = Serial.read();
Serial.print("#"+ String(i)+ ": ");
Serial.println(inChar, HEX);
i=i+1;
delay(5);
}
Serial.println( "________________END_________________");
}
скриншот ниже демонстрирует, что происходит какая-то ерунда под конец посылки.