messaggio splittato tra moduli LoRa con arduino

ciao a tutti, volevo chiedervi come sia possibile che sul monitor seriale di arduino il messaggio viene inviato per intero e correttamente mentre tramite moduli LoRa collegati ad arduino e al pc via adattatore seriale usb, il messaggio arriva in più messaggi come se fosse splittato. allego il codice arduino e il codice del monitor seriale in c#

prova.txt (2.9 KB)

Buona sera,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del nostro regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Non ho esperienza di moduli LoRa ma posso darti un consiglio su quello che vedo nel tuo programma, anzi due il primo è che per allegare il programma puoi farlo inserendolo neglia ppositi tag code in modo che chi ti vuol aiutare possa fare copia incolla e provare o guardare più agevolmente il programma stesso.
Il secondo ben più importante su Arduino et simila stai alla larga dalla classe String per gestire le stringhe, è fonte di sicuri mal di testa per errori e blocchi improvvisi a cui è difficile ricondursi per dire se c'è un errore o se la causa è l'overflow nella memoria dovuta al fatto che su una MCU non hai il garbage collector che rpulisce la memoria quando dellochi le stringhe, converti il tutto nel classici array di car del C e abituati per il futuro a usarli sempre al posto delle stringhe, se fai una ricerca sul forum troverai un sacco di post di questo genere

... aggiungerei solo ... verifica quale sia la massima lunghezza di un messaggio LoRa perché, se magari quello che invii è troppo lungo, viene forse spezzato in più messaggi ::slight_smile:

Guglielmo

ho provato ad utilizzare gli array di char ma la situazione non cambia.. la lunghezza del messaggio dubito possa essere poichè nei test ho utilizzato pochi caratteri come messaggio

Invece di fare quattro

Serial.print("X")

di un carattere solo prova a farne usa sola con l'inero array di char

char prova[5] = "Ciao";
Serial.print(prova);

Nota che il messaggio è composta da 5 caratteri per via del carattere di terminazione