Möchte die Daten aus der Datei OV.H auslesen und gewisses Parameter in ein Array übertragen.
Das Array sieht so aus:
myMsg.DATA[0]=0x40;
myMsg.DATA[1]=0x07;
myMsg.DATA[2]=0x20;
myMsg.DATA[3]=0x00;
myMsg.DATA[4]=0x00;
myMsg.DATA[5]=0x00;
myMsg.DATA[6]=0x00;
myMsg.DATA[7]=0x00;
Das OV sieht so aus:
struct ov_eintrag ov[MAX_OV_INDEX] =
{{0, 0, RO, 0, 0, 0, 0},
{0x2007, 0, RWZ, 2, 400, 3200, 2000}, //Maximalstrom
{0x2008, 0, RW, 2, 0xCFC0, 0xFFC0, 0xFFC0}, //Offset Iststrom 1
{0x2009, 0, RW, 2, 800, 1200, 1024}, //Korrektur Iststrom 1
möchte z.B. die Daten 0x2007 gesplittet ins Array [2](20) und [1](07)
die "0" in [3] und die "2000" also "0x7D0" in [5](07) und [4](D0).
Wie mach ich das am einfachsten????
Thx im Voraus
Programmieren - alles kontrollieren 4.936 Themen, 20.625 Beiträge
int i;
i=1;//gibt den arrayindex an (im bsp. also von 0 bis mind. 3)
myMsg.DATA[1]=ov[i].index & 255;
myMsg.DATA[2]=(ov[i].index >>8) & 255;
//wenn index>0xffff dann gehen informationen verloren
myMsg.DATA[3]=ov[i].sub_index;
myMsg.DATA[4]=ov[i].def_wert & 255;
myMsg.DATA[5]=(ov[i].def_wert >>8) & 255;
//wenn def_wert>0xffff dann gehen informationen verloren
Je nach definition von myMsg.DATA könnten evtl. noch warnungen kommen (signed vs. unsigned).
mr.escape
i=1;//gibt den arrayindex an (im bsp. also von 0 bis mind. 3)
myMsg.DATA[1]=ov[i].index & 255;
myMsg.DATA[2]=(ov[i].index >>8) & 255;
//wenn index>0xffff dann gehen informationen verloren
myMsg.DATA[3]=ov[i].sub_index;
myMsg.DATA[4]=ov[i].def_wert & 255;
myMsg.DATA[5]=(ov[i].def_wert >>8) & 255;
//wenn def_wert>0xffff dann gehen informationen verloren
Je nach definition von myMsg.DATA könnten evtl. noch warnungen kommen (signed vs. unsigned).
mr.escape