[Risolto] Lettura e scrittura di un record, come struttura dati, da e su SD

nid69ita:
Basta usare un cast e la struct viene vista come un array di byte. E' una cosa normale che fai su PC in C ma anche su Arduino lo fai tranquillamente.
C Files I/O: Opening, Reading, Writing and Closing a file

Infatti stavo studiando e ho trovato che si può fare qualcosa del genere:

struct datastore {
  char a[a];
  unsigned int b;
  double c;
};

//SCRIVE 
struct datastore data1;
data1.a = "abcd";
data1.b = 1;
data1.c = 1.0;
File dataFile1= SD.open("datalog.dat", FILE_WRITE);
dataFile1.write((const uint8_t *)&data1, sizeof(data1));

//READ
struct datastore data2;
File dataFile2 = SD.open("datalog.dat", FILE_READ);
dataFile2.read((uint8_t *)&data2, sizeof(data2));

//data2: contiene l'intera struttura (record)

Per me non è facilissimo capire questo:

(const uint8_t *)&data1

ma, se ho ben capito, è il puntatore all'indirizzo di data1 convertito in byte, quindi ritorna data1 (struttura) come un array di byte.
Corretto?
Spero di non aver detto una cavolata, ma mi piace capire quello che scrivo, altrimenti non imparo :slight_smile:

TIA
F