Vai al contenuto
PLC Forum


Puntatore Char Che Punta A Una Variabile Float


Neway

Messaggi consigliati

Ho a mia disposizione una bella struttura dati fatta in questa maniera

typedef struct{         //Dichiaro la struttura standard dello stato del sistema
    float x;
    float v;
    float a;
    float v_ang;
    float a_ang;
    float rotazione_rad;   
}StrStato;

StrStato stato;                     //Dichiaro "stato" come variabile di tipo StrStato
Voglio salvare queste sei variabili in una memoria FRAM esterna così come sono. Il compilatore C18 mette le strutture all'interno della memoria RAM in celle consecutive, come fosse un array. La cosa più logica sarebbe, invece di spezzare i byte con operazioni bitwise, di copiarli così come sono byte per byte. Per questo ho pensato che si può dichiarare un puntatore di tipo char che punti alla variabile x e di salvare tutta la struttura byte per byte (in tutto 24 byte) facendo avanzare il puntatore di un byte alla volta, così:
char *pnt_alla_struttura;
pnt_alla_struttura = &stato.x;

for(i = 0; i < 24; i++){
    EEPROM_write(i, *pnt_alla_struttura);
}
Provando a far ciò il compilatore mi dice molto simpaticamente:
Error [1131] type mismatch in assignment

riferendosi alla riga in cui assegno al puntatore l'indirizzo di stato.x

C'è un modo di risolvere la questione o il C è sordo per operazioni del genere?

Grazie mille!

Link al commento
Condividi su altri siti


Devi effettuare un CASTING per riportare il tipo di puntatore a quello richiesto

char *pnt_alla_struttura;

pnt_alla_struttura = (char*) &stato.x;

pnt_alla_struttura si aspetta un tipo char* e quindi devi forzarlo al tipo desiderato

RT

Link al commento
Condividi su altri siti

Grazie mille! ora va. Ci avevo provato, ma sconoscevo che per fare il casting di un puntatore servisse l'asterisco così (char*).

mai trovato un forum più efficiente!

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...