![]() |
Auslösung von Ereignisen Timecodegenau
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:
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.
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; Die Frage ist: Geht das auch CPU-Freundlicher? Das ganze soll auf einem 233MhZ-PC laufen. Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz