Reaktionstest - beste variante?



  • hallo leute!

    ich baue einen reaktionstest in vc++. Es ist ein SDI Projekt und funktioniert so: Der user sieht ein Signal auf dem Bildschirm und muß so schnell wie möglich eine Taste drücken. Ich will dann die Zeit messen die der user für die Reaktion braucht.

    Erfahrungsgemäß liegt die Reakt. Zeit bei ca. 200 ms. Ich werde zum messen die QueryPerformanceCounter methode nehmen, obwohl da sicher auch clock() reichen würde nehme ich an.

    Mein Problem ist also nicht die messgenauigkeit sondern viel mehr die Systemauslastung!! Wenn andere Programme laufen, und der rechner langsahmer wird, verfälscht das ja auch die reaktionszeit oder? Was wäre denn die beste implementierungsmöglichkeit für so einen test?

    herzlichen dank schonmal.

    loop



  • Ich hab zwar noch nicht viel selber damit gearbeitet da ich fast nie irgendne Zeit messen muss oder sowas aber wie wärs wenn du die genaue Zeit wann das Signal aufgetaucht ist festsetzt und dann wenn der User drückt nochmal die genaue Zeit? Anschliessend vergleichst du diese beiden und rechnest aus wie lange er hatte.

    Nur ein Vorschlag...



  • wenn du deine methoden in einem threat ausfuehrst, dann kannst du die threatprioritaet auf 'sehr hohe prioritaet' setzen, was das ergebnis nur unter umstaenden genauer macht.

    Esco



  • danke esco, habe mittlerweile einen test durchgeführt und zwar nutze ich die oben genannte methode um die reaktionszeit zu messen und die ist auch sehr genau bei 100% systemauslastung.!

    Die zeitmessung ist also erledigt. nun denke ich nach wie ich die grafischen ereignisse (kreise blinken auf) realisieren kann. ich würde gerne setTimer() verwenden. Aber wird auch das bei starker auslastung funktionieren bzw. ist die basis für den timer die Windowszeit oder die systemClock?!? Es ist nämlichwichtig das alle ereignisse genau 1.5 secunden abstand haben.

    ISt da also setTimer geeignet oder gibts was besseres?!?

    danke schomal



  • Wenn der Reaktionstest anfängt merkst du dir die Zeit. Und wenn eine Taste gedrückt wurde kriegst du doch ne Nachricht und speicherst auch dort die Zeit. Und dann kannst du ja ganz einfach die Zeit ausrechnen. 🤡



  • nein das geht so nicht, ich muß ja auch feststellen ob jemand eine taste gedrückt hat ohne ereignis! da gibts glaube ich einen besseren weg. Weißt du was über die timer??



  • es gibt auch benutzereingabethreats.

    zu den timern: der integrierte timer ist relativ schlecht und hat bei mir fehler von bis zu 25% gebracht. auf www.codeproject.com kennt man dieses problem; dort gibt es mehrere timerklassen, die wesentlich genauer arbeiten.

    Esco



  • Wie soll man das bitteschön mit Timern machen?



  • Es reicht doch völlig aus, wenn man das mit CLOCKS_PER_SECOND macht :

    Man kann sich vor dem starten des Signals auf dem Bildschirm einen Zählerstand holen und in einer Variable vom Typ clock_t zwischenspreichern. Nach dem Drücken einer Taste ruft man wieder clock() auf und bildet die Differenz zum gemerkten Zählerstand. Um von dieser Differenz auf eine in Sekunden gemessene Zeit zu kommen, muss man den Wert noch durch die in <time.h> definierte Konstante CLOCKS_PER_SEC dividieren.

    Das reicht völlig aus und behindert sicherlich nicht viel die Systemauslastung...

    Gruß
    :: NoName ::



  • :: NoName :: schrieb:

    Es reicht doch völlig aus, wenn man das mit CLOCKS_PER_SECOND macht :

    Man kann sich vor dem starten des Signals auf dem Bildschirm einen Zählerstand holen und in einer Variable vom Typ clock_t zwischenspreichern. Nach dem Drücken einer Taste ruft man wieder clock() auf und bildet die Differenz zum gemerkten Zählerstand. Um von dieser Differenz auf eine in Sekunden gemessene Zeit zu kommen, muss man den Wert noch durch die in <time.h> definierte Konstante CLOCKS_PER_SEC dividieren.

    Das reicht völlig aus und behindert sicherlich nicht viel die Systemauslastung...

    Gruß
    :: NoName ::

    ich glaube, dass wird nicht funktionieren:

    l00P schrieb:

    ...Erfahrungsgemäß liegt die Reakt. Zeit bei ca. 200 ms...

    Esco


Anmelden zum Antworten