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
Die aus ov?
Mit einer statischen variablen, in der der aktuelle stand vermerkt ist.
Z.b.:
int lastparam, actparam=0;
bool TimerSenden(){
SendParam(actparam);
actparam++;
if(actparam>=lastparam)//alle raus
return false;//es gibt nichts mehr zu senden, timer stoppen
return true;//noch nicht fertig
}
In lastparam muss die anzahl der parameter stehen und actparam muss am anfang einer übertragung auf 0 gesetzt werden.
TimerSenden() wird bei einem timer-event aufgerufen (z.b. bei WM_TIMER oder OnTimer()). Ich gehe davon aus, dass mindestens ein parameter zum senden vorhanden ist (wegen der abbruchbedingung).
SendParam() füllt aus ov[actparam] das array myMsg.DATA[] auf und sendet diese daten (wie auch immer).
Zu bedenken ist dabei, dass windoofs kein echtzeitsystem ist und es auch mal zu längeren (alles ist relativ!) hängern kommen kann. Bei linux oder MAC-OS ist das in etwa genau so.
mr.escape.