Zeitnahme von sehr kurzen Zeitintervallen
-
Hallo,
ich müsste in einer Applikation die Zeit zwischen zwei Ereignissen nehmen. Wie mach ich das am besten, vor allem weil die Zeitintervalle sehr kurz sein könnten, so um die 20ms.
Kann mir da jemand nen Tipp geben. Hab von nem MIDI-Timer gehört, oder reicht da ein normaler Timer auch aus?
-
Mein Tip:
QueryPerformanceCounter
QueryPerformanceFrequeny
-
also du hast ja 2 ereignisse
nachdem ersten ereignis
startest einen timer
dieser speichert die akt zeit ab ( mit microsek. )
bevor das 2te ereignis kommt rufst wieder den timer auf
der holt sich wieder die akt zeit und subtrahiert von der ersten, dann haste die zeit
du kannst es mit 2 oder 3 zeitvariablen machen
musst auch ein flag setzen zum bsp. das er beim ersten nur das eine macht und beim 2ten mal die subtraktiondann setzt das flag wieder so das er wieder nur das eine macht dann das andere
also ich wuerds mit 2 zeitvariablen machen und einem flag
aber es gibt auch ne Funktion die das fuer dich uebenimmt.
musst mal googeln
damit setzt du ne zeit und misst die zeit wieder
dann muss du gar nichts selber mit timern machen ( programmieren )

-
SaM (Gast) schrieb:
Mein Tip:
QueryPerformanceCounter
QueryPerformanceFrequenygenau die meinte ich

-
wie geht das mit den query-Befehlen
-
Wofür brauche ich einen Timer wenn man die Zeit zw. 2 Ereig. stoppen will.
Ein Timer ist ein ereign. welches nach einer bestimmten Zeit ausgelöst wird und nicht zum Zeitstoppen geeignet.
Eine Routine starttime stoptime reicht.starttime();
machwas
stoptime()beide Zeiten merken und diff ausrechen.
-
Hab ne schöne Klasse die das macht - leider im Büro

LARGE_INTEGER liStart, liStop; double qpfScale = 0.0; // 1 x: LARGE_INTEGER liFreq; if (!QueryPerformanceFrequency(&liFreq)) { // nicht unterstützt: Universe.Collapse(); } qpfScale = 1.0 / liFreq.QuadPart; // Start: QueryPerformanceCounter(&liStart); // .... // Stop: QueryPerformanceCounter(&liStop); double timeInSeconds = (liStop.QuadPart-liStart.QuadPart) * qpfScale;unter vorbehalt von Fehlern

-
ums das ganze nicht weiterhin in 2 foren zu beantworten
http://www.fun-soft.de/showtopic.php?threadid=7829