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.941 Themen, 20.708 Beiträge
Das posten von quellcode ist nicht ganz unproblematisch. Immer wenn < im code auftaucht, kann das als beginn eines HTML-tags gedeutet werden. Das kann zu löchern im sourcecode führen.
Deshalb ist es erforderlich, vor dem posten alle < durch < zu ersetzen.
Damit einrückungen sichtbar bleiben, müssen am zeilenanfang die leerzeichen oder tabs durch eine passende anzahl von ersetzt werden.
Aus z.b.
for(i=0;i<MAX_OV_INDEX;i++)
foo();
wird dann
for(i=0;i<MAX_OV_INDEX;i++)
foo();
ohne diese anpassung käme das raus:
for(i=0;i foo();
Soweit ich es aber aus dem HTML-sourcecode erkennen kann, soll wohl das hier stehen:
for(int i=0;i<MAX_OV_INDEX;i++){ //i gibt den Arrayindex
myMsg.DATA[1]=ov[i].index;
myMsg.DATA[2]=ov[i].index >>8;
myMsg.DATA[3]=ov[i].sub_index;
myMsg.DATA[4]=ov[i].def_wert;
myMsg.DATA[5]=ov[i].def_wert >>8;
}
Das bedeutet, dass nacheinander alle ov nach myMsg.DATA[] gefüllt werden, ohne dass dann damit etwas passiert. Das ist vermutlich sehr sehr schnell erledigt, selbst bei etwas größeren werten von MAX_OV_INDEX.
Ich war eigentlich der meinung, es hätte geklappt?
http://www.nickles.de/thread_cache/537887762.html
http://www.nickles.de/thread_cache/537885077.html
mr.escape