(c) Struktur in Bytearray casten

baschtel

Grünschnabel
Hi da ich mich noch nicht wirklich gut mit C auskenne frag ich hier mal
in die Runde:

Ich habe eine Funktion "writeEeprom" die folgende Parameter benötigt:
writeEeprom(BYTE blockSelect, UINT16 startAddress, BYTE length, const
BYTE *pData)

blockset: gibt hier die Adressierung des entsprechenden EEPROMS an
startAddress: die Adresse wohin die Daten geschrieben werden sollen
length: wieviele Bytes gelesen werden sollen
*pData: Byte Pointer auf die zu schreibenden Daten

Die Funktion funktioniert auch super, wenn ich ein Byte Array also
BYTE abc[10]; (Natürlich angelegt also abc[0]=0x01...) wie folgt der
Funktion übergebe:

writeEeprom(0x07, 0, 0x0A, abc)

Mein Problem ist jetzt allerdings, dass ich eine Struktur habe, die ich
auf eeprom schreiben muss kurz:
typedef struct _CalData
{
/* reserve */
float reserve;

/* final fit */
float ff;

/* white fraction */
float fraction;
float bb[3];
}caldata

jetzt möchte ich diese Stuktur ins Eeprom schreiben aber wie
HILFE
 
Hallo,
probiere mal
Code:
caldata test;
test.reserve = 1.0f;
test.ff = 2.0f;
test.fraction = 3.0f;
test.bb[0] = test.bb[1] = test.bb[2] = 4.0f;

writeEeprom(0x07, 0, sizeof(caldata), (BYTE*)test);
Ich weiß aber jetzt nicht, was Argument 1 bedeutet (0x07).
 
Zuletzt bearbeitet:
Danke für die Antwort!
Ich konnte mein Problem wie folgt lösen
Code:
CalData oneDummyData = theDummyData[5]; /*theDummyData wurde vorher
beschrieben*/
writeEeprom(EEPROM_LM, 10, (BYTE)72,(BYTE *)&oneDummyData);
delayMs(20);

readEeprom(EEPROM_LM, 10, (BYTE)72); /*Lesen von 72 Bytes an der Adresse
10 im EEprom*/
delayMs(20);


IICBUFFERTYPE theBufferType = *pIicRxBuffer; /*RX Pointer auf
theBufferType */
CalData oneDummyDataRead;
oneDummyDataRead = *(CalData*)(theBufferType.Data); /*SChreiben der
Daten mit entsprechendem TypeCasting*/
So klappt das schreiben und lesen der Daten in das EEProm
Greez

Sebastian
 
Zurück