Acquisisco dati da un accelerometro, li salvo sulla SD nella forma
324 456 322
....
nel frattempo attraverso il bluetooth invio il valore di uno switch
0: arduino in lettura
1: errore in lettura
2: rimozione file
....
il problema è separare i valori del menu da quelli della lettura del file. Ho utilizzato caratteri di riconoscimento per attivare/disattivare scrittura file su cellulare ma i file ricevuti risultano "corrotti", sballati nelle posizioni, in quanto a volte due caratteri in una stessa riga ma il più delle volte uno (ovviamente, essendo byte to byte) a volte salta la riga, e sono generati dal seguente codice:
...
if (dataFile) {// apertura file ok
Serial.println("\nReading datalog.log...");
bluetooth.flush();
bluetooth.println("#");
while (dataFile.available()) {
bluetooth.println(char(dataFile.read())); // trasmetto le righe del file tramite bluetooth
}
bluetooth.flush();
bluetooth.println("|");
//delay(1000);
Serial.println("End reading datalog.log.");
sw = 5;
dataFile.close();
}
...
Ho provato a creare un'unica stringa con tutte le righe del file ma dal cellulare vengono ricevuti i primi tot caratteri ed il resto tutto perso.
Se invece invio esclusivamente i dati del file, row to row, non ho alcun problema.