Salve a tutti, sto cercando di creare un file binario a lunghezza fissa con arduino mega, ethernet shield con un microsd da 4gb, ma non riesco nemmeno a scrivere e leggere correttamente una sola variabile, questo è il codice che ho usato:
aprendo il file con un editor esadecimale sembra scritto giusto, ma al momento di leggere non c'è verso di leggere il valore corretto.
Ringrazio in anticipo.
Praticamente il secondo serial.print ti scrive 0?
Con l'editor esadecimale cosa leggi sul file?
Il byte 123 (0x7b) o cos' altro?
Secondo me il problema è che se rivuoi indietro un tipo int, devi prima creare un array di 4 byte (tanta è la lunghezza in byte del tipo int Arduino) e scriverla con sd.write(array, 4)
Per tagliare la testa al toro, definisci le tue variabili di tipo byte o char,vedrai che cosi funziona
niki77:
Praticamente il secondo serial.print ti scrive 0?
Con l'editor esadecimale cosa leggi sul file?
Il byte 123 (0x7b) o cos' altro?
Secondo me il problema è che se rivuoi indietro un tipo int, devi prima creare un array di 4 byte (tanta è la lunghezza in byte del tipo int Arduino) e scriverla con sd.write(array, 4)
Per tagliare la testa al toro, definisci le tue variabili di tipo byte o char,vedrai che cosi funziona
Si, nel file cfg.bin si legge un byte 0x7b, ma non riesco in nessun modo a leggerlo e riportarlo in una variabile. Dovrei quindi fare il casting in array di byte fissi prima di scrivere?
Non dovrebbe funzionare anche senza questo passaggio?
La SD non è un hard disk con lo sketch fatto così rovini la sheda sd, hanno un limite di scrittura anche loro soprattutto se scrivi sempre nello stesso punto
Elimina il file
Crea il file
scrivi il byte
Elimina il file
Crea il file
scrivi il byte
...
...
perchè non lo fai nel setup, se è solo una prova
la SD è formattata in FAT??
metti questo controllo al posto di SD.begin(4)
if (! SD.begin(4)) {
Serial.println("Error cannot initialize SD card!");
}
qui dici:
ma non riesco nemmeno a scrivere e leggere correttamente una sola variabile
e poi subito dopo
aprendo il file con un editor esadecimale sembra scritto giusto, ma al momento di leggere non c'è verso di leggere il valore corretto.
Lo scrive il dato o non lo scrive?
sei sicuro che questo sketch fatto così ti crea il file?