[D7] Zeit zwischen Mausklicks messen

Hallo,

ich möchte ein kleines Proggi schreiben für einen Reaktions- und Geschicklichkeitstest. Dazu muss ich zB. die Zeit messen, die zwischen zwei Mausklicks vergeht. Dabei kann es durchaus auf Sub-Millisekunden-unterschiede ankommen.

Ich habe dazu eine kleine Schleife mit einer GetAsyncKeyState-Abfrage in einen Thread gepackt, dem Thread die höchste Priorität zugewiesen und messe mit QueryPerformanceCounter die Zeiten. In der Schleife wird sonst nix gemacht, außer die Zeit in einem Array zu notieren, wenn die Maustaste gedrückt wurde und abzufragen, ob der Thread terminiert wurde.

Im Prinzip klappt das - aber wie ich es auch anstelle: ich scheine eine zeitliche Auflösung von ca. 5 ms nicht unterschreiten zu können. Diese Auflösung ist mir viel zu schlecht.

Wahrscheinlich ist die Lösung sehr einfach - es muss doch machbar sein, mit 3 GHz-Rechnern auch auf einem nicht ausgelasteten Multithreading-System eine bessere Zeitauflösung hinzubekommen!

Liegts am Timer, an der Systemzeit-Zuweisung, oder an der Art, wie Windows Mausbotschaften verarbeitet?

Wie kann ich das Timing von Benutzereingaben (Maus od. Tastatur) genauer messen?

Kann mir da jemand helfen?

LG
Jochen

Wie kann ich das Timing von Benutzereingaben (Maus od.
Tastatur) genauer messen?

Kann mir da jemand helfen?

Hallo Jochen,

eher nein, denn Windows ist kein Echtzeitsystem und wird auch keines, wenn du einen 100 GHz-Prozessor reinsteckst. Die Diskussion wurde schon tausendemale geführt, es hat keinen Sinn, nochmal von vorn anzufangen, jeder Steuerungsentwickler weiss das.

Dazu kommt: PS/2-Mäuse senden überhaupt nur 80 bis 200 mal pro Sekunde ihren Status, d.h. der Zeitpunkt eines Klicks wird schon am Ort des Geschehens nicht besser als auf 5 ms aufgelöst, alle Verzögerungen durch die Software kommen dann noch hinzu. Ich glaube nicht, dass USB-Mäuse um so viel besser sind, dass deine Ansprüche erfüllt werden. M.a.W. selbst mit einem Echtzeitsystem könntest du zwar einen an einen Digitaleingang angschlossenen Schalter genau genug erfassen, nicht aber den Schalter in der Maus.

Gruss Reinhard