Vai al contenuto
PLC Forum


Salvare Una Struttura Dati


walterword

Messaggi consigliati

supponiamo che ho nel mio sistema dei dati

La rappresentazione potrebbe essere una struttura , per esempio

struct dato{

float dato1;

float dato2;

int dato3

}

dato dati;

salto la parte di scrittura delle variabili .

A questo punto vorrei salvare su eeprom o flash o spedire in seriale i dati

Tutte queste opzioni richiedono un buffer di bytes .

come potrei quindi "trasformare" la mia struttura mista in un buffer di bytes ?

grazie

walter

Link al commento
Condividi su altri siti


ifachsoftware

Walter : non hai detto che cosa usi per la prova comunque se hai un micro con un sistema operativo (es : rabbit) che supporti un file system , li gestisci con le direttive standard del C tipo fopen(...) , fclose(..), fwrite(...).

Mentre se non hai un file system con l'istruzione sizeof() ottieni le dimensioni della struttura ; poi punti al primo byte e scrivi per x bytes fino alla dimensione che ti ha ritornato il sizeof....

Ciao :)

Link al commento
Condividi su altri siti

diciamo che non uso il rabbit , ma un comune micro con compilatore in C

Ok ma la funzione sizeof restituisce il numero di bytes che compongono la struttura

E poi quando li devo leggere ?

Dovrebbere essere due algoritmi o funzione per scrivere e leggere tale struttura

in "formato array di bytes " .

Dico bene ?

ciao

walter

Link al commento
Condividi su altri siti

Ci vorrebbe qualcosa del genere credo

struct dato
{
    float dato1;
    float dato2;
    int dato3;
} dati;

byte i, datox;
byte* pDati;
byte size = sizeof(dati);  
pDati = (byte*)&dati;  //Punta al primo byte di dati
for(i=0; i< size; ++i)
{
    datox = *(pDati+i); // Legge
    *(pDati+i) = datox; // Scrive
}

Ciao.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...