Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Zeitstempel bestimmen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
17.06.2003, 16:18 Uhr
Dirk22



Hi,

ich habe folgendes Problem:
Ich lese Daten von der Schnittstelle ein, und bearbeite sie danach noch ein wenig. Gut, dies klappt alles und findet alles in einer Schleife statt, die läuft bis der Benutzer den Stopbutton drückt. Nun möchte ich die Zeit bestimmen, die zwischen zwei von der Schnittstelle ankommenden Datenrahmen liegt.

Also mal grob mein Aufbau bis jetzt:




C++:
bool Start = true;
SYSTEMTIME end, temp;
BYTE frame[100];
FILE* fp_save;

while(!StopClicked) //solange Stopbutton nicht gedrückt
{
    //Datenrahmen von RS232 wird in frame abgespeichert
    Daten_RS232(frame);
    GetSystemTime(&end);  //Systemzeit am Ende eines Datenrahmens
    if (Start)
    {
         zeitstempel = 0;
         fwrite(&zeitstempel,sizeof(int),1,fp_save);  
         Start = false;
    }
    else        
    {
          zeitstempel = (end.wSecond - temp.wSecond) * 1000 +
                    (end.wMilliseconds - temp.wMilliseconds);    
                            
          fwrite(&zeitstempel,sizeof(int),1,fp_trimble_save);
    }
    temp = end;
    //weiterer Code
}



Also, mein Ziel ist es den zeitlichen Abstand zwischen 2 von der Schnittstelle empfangenen Datenrahmen in ms zu ermitteln und in einer Datei abzuspeichern. Das Abspeichern in die Datei funktioniert und ist hier nicht von Bedeutung.
Ganz am Anfang soll natürlich der Wert 0 abgespeichert werden. Danach dann immer der zeitliche Abstand in ms zwischen 2 Datenrahmen.
Leider funktioniert mein Code nicht gut. Er liefert mir wirre Werte.
Ich hatte eigentlich vor immer die Zeiten von zwei Datenrahmenenden zu nehmen und diese dann voneinander abzuziehen. Dies soll mein Code darstellen. Aber er funktioniert nicht richtig und außerdem würde er so die Bearbeitungszeit für den restlichen Code, welcher noch anschliessend in der Schleife kommt, nicht berücksichtigen.

Ich hoffe, dass meine Frage verständlich genug formuliert ist. Ist leider ein ziemliches Wirrwarr geworden. Diese Frage ist mir aber wirklich wichtig. Und falls Verständnisprobleme wegen der Fragestellung auftreten, bitte einfach nachfragen.

Ihr könnt dieses Problem auch ganz anders angehen. Wie würdet ihr den zeitlichen Abstand zwischen 2 von der Schnittstelle empfangenen Datenrahmen bestimmen?

Vielen Dank im Voraus

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.06.2003, 16:55 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Hi Dirk,
wenn ich "nur" millisecunden" genauigkeit brauche mach ich das immer so:
wobei es vermessen wäre zu behaupten es wäre auf die ms genau


C++:
DWORD dw;
dw=GetTickCount();
//irgendwas machen
dw=GetTickCount()-dw;
CString cs;
cs.Format("%d",dw);
AfxMessageBox(cs);




Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.06.2003, 10:26 Uhr
Dirk22



Hi Heiko,

vielen Dank für deine Lösung. Allerdings habe ich jetzt noch etwas an meinem eigenen Code rumgemacht, und es scheint auch hinzuhauen. Dennoch ist es gut deine genannte Funktion zu kennen. Denn mit ihr kann man das gleiche etwas leichter und übersichtlicher machen.

Dirk
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: