timer



  • es tut gar nichts

    die OnReadSlave ist in einem fenster die vom ein haptfenster aufgerufen werden soll.



  • unsigned __int64 counts  = QueryPerformanceCounter()
    

    gibt dir die Counts seit Systemstart

    unsigned __int64 freq  = QueryPerformanceFrequency()
    

    gibt dir die Counts pro Sekunde zurück.
    Damit kannst Du Dir eine Timer-Klasse basteln, die auf ein paar µs genau ist.



  • 1310-Logik schrieb:

    Damit kannst Du Dir eine Timer-Klasse basteln, die auf ein paar µs genau ist.

    Soweit zur Theorie...



  • Nur wers selber testet weiss es genau, schon klar.
    Ich hab etwas mehr als 3Mio Counts pro Sekunde..mir reicht das..und um 10ms zu timen reichts auch..

    quelle: [urlhttp://www.mvps.org/directx/articles/selecting_timer_functions.htm]mvps[/url]
    wurd letztens hier geposted, konnt den thread aber nicht mehr finden..



  • 1310-Logik schrieb:

    Ich hab etwas mehr als 3Mio Counts pro Sekunde..mir reicht das..und um 10ms zu timen reichts auch..

    Um die Genauigkeit deiner Methode zu ermitteln, solltest du den maximalen Abstand zwischen zwei aufeinanderfolgenden Aufrufen ermitteln. Die Anzahl der Aufrufe pro Sekunde sagt ungefähr gar nichts über die Genauigkeit aus aus.



  • gibs Vielleicht bei vc++ eine wait funktion mit dem man sagen kann zb.warte50ms dann......



  • MFK schrieb:

    1310-Logik schrieb:

    Ich hab etwas mehr als 3Mio Counts pro Sekunde..mir reicht das..und um 10ms zu timen reichts auch..

    Um die Genauigkeit deiner Methode zu ermitteln, solltest du den maximalen Abstand zwischen zwei aufeinanderfolgenden Aufrufen ermitteln. Die Anzahl der Aufrufe pro Sekunde sagt ungefähr gar nichts über die Genauigkeit aus aus.

    demnach weniger als 5µs
    http://www.mvps.org/directx/articles/selecting_timer_functions.htm
    wurd letztens hier geposted, konnt den thread aber nicht mehr finden..

    edit: url geflickt



  • 1310-Logik schrieb:

    demnach weniger als 5µs

    Was heißt "demnach"? Hast du das gemessen?

    Ich rede vom maximalen Abstand, nicht vom durchschnittlichen.



  • nein ich habs nicht selbst getestet (sagte ich bereits), werds auch heut nicht mehr tun, keine Zeit.

    Was heißt "demnach"? Hast du das gemessen?

    Hast Du Dir den link angesehn? Ich bezog mich darauf.
    Ich meine die Zahlen sind überzeugend...
    Und selbst wenns 500µs dauert, für 10-50ms reichts und ist wohl auch besser als der Multimedia Timer.



  • 1310-Logik schrieb:

    Hast Du Dir den link angesehn? Ich bezog mich darauf.

    Auch das sagt nichts über die Genauigkeit deiner Methode aus.

    Es ist egal, wie lange der Aufruf der Timerfunktion dauert. Windows ist kein Echtzeitbetriebssystem. Es gibt keinerlei Garantie, dass der Thread, der in deiner Messmethode steckt, nicht auf unbestimmte Zeit angehalten wird. Schon wenn im normalen Betrieb dein Thread gerade nicht "dran" ist, können da etliche Millisekunden verstreichen, von denen du nichts mitbekommst.



  • MFK schrieb:

    1310-Logik schrieb:

    Hast Du Dir den link angesehn? Ich bezog mich darauf.

    Auch das sagt nichts über die Genauigkeit deiner Methode aus.

    Es ist egal, wie lange der Aufruf der Timerfunktion dauert. Windows ist kein Echtzeitbetriebssystem. Es gibt keinerlei Garantie, dass der Thread, der in deiner Messmethode steckt, nicht auf unbestimmte Zeit angehalten wird. Schon wenn im normalen Betrieb dein Thread gerade nicht "dran" ist, können da etliche Millisekunden verstreichen, von denen du nichts mitbekommst.

    Das kommt aber auf die Thread Priorität an und darauf, was noch alles im Hintergrund läuft. Für "simple" Anwendungens sollte es reichen (für Games und sowas), wissenschaftliche Messungen im Nanosekunden Bereich kann man mit Windows natürlich nicht machen.
    Die WM_TIMER Message steht aber ganz hinten an, und wird daher wohl als letztes in Frage kommen. Und darum mehm ich die bestmögliche Art zu timen, die mir bekannt ist. Du kannst mich aber gern aufklären obs noch was anderes gibt.



  • 1310-Logik schrieb:

    Für "simple" Anwendungens sollte es reichen (für Games und sowas),

    Es geht hier aber offenbar weder um eine simple Anwendung noch um ein Spiel. Es geht anscheinend ums zeitkritische Ansteuern einer Hardware:

    Switi schrieb:

    das Ereignis ReadSlave muss nach zehn Millisekunden auslöst werden.

    Und das kann deine Methode nicht, weil sie keine maximale Antwortzeit garantieren kann.



  • MFK schrieb:

    1310-Logik schrieb:

    Für "simple" Anwendungens sollte es reichen (für Games und sowas),

    Es geht hier aber offenbar weder um eine simple Anwendung noch um ein Spiel. Es geht anscheinend ums zeitkritische Ansteuern einer Hardware:

    Switi schrieb:

    das Ereignis ReadSlave muss nach zehn Millisekunden auslöst werden.

    Und das kann deine Methode nicht, weil sie keine maximale Antwortzeit garantieren kann.

    Also, womit macht man den sowas? 😕



  • Ich würde das in Hardware oder mit einem hinreichend schnellen Echtzeitbetriebssystem machen.



  • MFK schrieb:

    Ich würde das in Hardware oder mit einem hinreichend schnellen Echtzeitbetriebssystem machen.

    "in Hardware"..meinst Du direkt die clock ansprechen?
    wie geht das denn? wär interessant..


Anmelden zum Antworten