Moin!
Ich bin zur Zeit dabei ein Stepper-Programm zu schreiben, dass zu einem gewissen Timecode ein Ereignis auslöst. Es gibt nur eine Form von Ereignis, das ist hier im Prinzip mal egal.
Also z.B. (Zeit in ms)
2000 Step
2500 Step
...
Ihr wisst was ich mein
Also, auf jeden Fall sollten diese Ereignisse möglichst Zeitgenau ausgelöst werden, d.h. wenn ich 1562 eingebe, sollte das Ereginis auch ziemlich genau da ausgelöst werden.
Bisher hatte ich mir das ganze wie folgt überlegt:
Ich lasse in einem Thread eine while-schleife laufen, die in etwa wie folgt aussieht:
Delphi-Quellcode:
while 1 do
begin
lTime := GetMicroTime; //lTime ist eine lokale Variable, die erst hier verwendet wird
Time := Time + (lTime - prevTime); // prevTime ist noch vom vorherigen Durchlauf definiert
prevTime := lTime;
sleep(1);
end;
in Time ist dann der aktuelle Timecode gespeichert. Würde ich jetzt vor sleep noch ein Ereignis auslösen, könnte ich in diesem prüfen, ob ein Step ausgelöst werden muss.
Die Frage ist: Geht das auch CPU-Freundlicher? Das ganze soll auf einem 233MhZ-PC laufen.
Gruß
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer