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.
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