Problema comunicazione seriale tra Arduino due- datalogger strato3

Ciao a tutti,
per un progetto universitario ho bisogno di ricevere dati da un datalogger che mi da dati gps, di temperatura e pressione.
Il modulo che utilizziamo è questo https://www.stratoflights.com/downloads/datalogger_manual.pdf
Per scrivere il codice stiamo utilizzando le info contenute nel datasheet in particolare il flowchart che vi allego in immagine.
Il nostro problema è che non riusciamo a capire quando ci arriva l'intero 0x01 all'inizio della comunicazione e anche quando riceviamo i caratteri "\r\n" al termine della comunicazione.
Vi allego il codice che ho scritto cosi da farvi capire meglio.

datalogger.ino (873 Bytes)

domanda:
tu sei sicuro che la connessione lato Hw sia OK?

hai provato magari con una semplice eco da seriale 1 a seriale 0 e viceversa?

il programma non mi sembra molto lineare, ammetto che segua abbastanza bene il diagramma di flusso consigliato, ma non mi piace lo stesso

io preferirei una macchina a stati che tratta un carattere per volta

in effetti un paio di dubbi li ho, sul fatto che ti fanno prima leggere un int e dopo un char

bah, ci pensiamo dopo, per ora vediamo la storia della eco

comunque ho dato uno sguardo al programma e alcune cose non mi convincono, adesso sono sicuro

      do
      {
         Serial.println("ricevo dati");
         data_rcvd = Serial1.readString();   // read one byte from serial buffer and save to data_rcvd;
         Serial.println(data_rcvd);
         int len = data_rcvd.length();
      }
      while (data_rcvd.substring(len - 4) == "\r\n");

alla quarta riga, quando leggi la stringa dalla seriale secondo me devi fare

data_rcvd += Serial1.readString();   // read one byte from serial buffer and save to data_rcvd;

altrimenti le successive porzioni di stringa che ricevi si sovrappongono a quelle precedenti

anche alla sesta riga c'é qualcosa che non va
in C "moderno" e in C++ tu puoi creare ed inizializzare una variabile locale dove vuoi, ma perché lo fai in due punti differenti del programma?
se fai così sovrascrivi una variabile locale "interna" ad una locale più "esterna"

a spulciare ben bene il programma errori se ne trovano anche altri, che indicano una ben scarsa conoscenza del 'C'

ti posso solo dire: controlla con un programma che faccia da eco tra le due seriali

e questo riguardalo bene, che così com'è è "guasto assai"

e se lo riprendi "evira", "evira completamente", l'uso della classe String