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 subtraktion

    dann 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
    QueryPerformanceFrequeny

    genau 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


Anmelden zum Antworten