Medición del tiempo de reacción - asegurando la exactitud de los datos

0

Tengo la intención de escribir un programa que mida el tiempo de reacción. Todavía no estoy seguro del lenguaje de programación que usaré. El programa se utilizará como parte de un experimento de psicología. Idealmente, me gustaría que se ejecute bajo Windows.

Pero antes de comenzar con el esfuerzo de escribir el programa, me gustaría tener confianza en que los datos del tiempo de reacción resultantes serán precisos en unos pocos milisegundos. Un conocido me ha dicho que en Windows no es realmente posible programar eventos de manera precisa, independientemente de los procesos en segundo plano (análisis antivirus, etc.). En primer lugar, ¿es eso cierto? En segundo lugar, si es cierto, ¿cómo puedo solucionar este problema? ¿Uso Linux, o ...?

Alex Chernavsky
fuente
He visto programas como este antes. Un psicólogo que supe compró uno del estante. Pero con unas pocas semanas de experiencia en programación, deberías poder escribirlo tú mismo si lo dedicas.
surfasb
El programa que tengo en mente tendrá algunas características especiales que son exclusivas del problema que se está investigando. Es poco probable que un programa comercial se adapte a mis necesidades.
Alex Chernavsky

Respuestas:

2

Para garantizar datos precisos, necesita una sistema operativo en tiempo real . Linux por defecto no es mejor que Windows, pero se puede configurar con un kernel en tiempo real (IIRC).

Para obtener detalles sobre cómo escribir un programa de este tipo, le sugiero que consulte en stackoverflow.com.

Ahora, en la práctica, también obtendrá resultados razonablemente precisos en Windows. La programación del proceso solo afectará muy poco a los resultados. La mayoría de los programas antivirus se ejecutan en espacio de usuario, lo que significa que están en igualdad de condiciones con su aplicación. Tu mejor apuesta es intentar y ver.

Krumelur
fuente
Gracias por los consejos. Usted escribió: "Lo mejor que puedes hacer es tratar de ver". El problema es que no tengo una forma independiente de verificar la exactitud de los resultados, excepto comparándolos con algunos valores teóricos de la literatura. Creo que lo que haré es instalar una versión de Linux en tiempo real en una máquina de repuesto que tenga a mano, y luego intentar escribir el programa en algún lenguaje que esté disponible en Linux. Quizás también escriba el mismo programa en Windows (mi entorno preferido) y vea si los resultados son comparables.
Alex Chernavsky
En algún momento, solo tiene que tomar una decisión; de lo contrario, llegará a un punto en el que preguntará en qué parte de los registros de pulsaciones de teclas como una pulsación, yo diría que use cualquier sistema operativo y tome promedios de algunas ejecuciones.
Hugoagogo
1

El hardware dedicado de adquisición de datos puede realizar mediciones precisas según lo que permita su presupuesto, independientemente del sistema operativo y el idioma. Estoy más familiarizado con el hardware y el software de National Instruments, pero hay otros proveedores.

rblake
fuente
-1

Creo que no es muy problemático. Usé GFA-Basic ver: https://dl.dropbox.com/u/25791210/gb32.zip

Mi programa (el más simple) se ejecuta de la siguiente manera:

Dim x, y, z As Integer
Dim ttt, tijd As Double

nogeens:
Print AT(5, 5); "wait"
Print "                    (press 'p' when screen goes black)"
Pause 50
Print AT(5, 5) ; "READY ??  "

Pause 40 + Rnd * 20

ttt = Timer
For y = 1 To 550
  Line 0, y, 1000, y
Next
While InKey$ <> "p"
Wend
tijd = Timer - ttt
Cls

If tijd < .1
  Print "FALSE START",
  Print "Press 'p' just AFTER you have seen the screen blackened  !!"
  Print "press 'q'to try once again"
Else
  Print AT(5, 5); tijd
  Print "press 'q'to try once again"
EndIf

While InKey$ <> "q"
Wend
Cls
GoTo nogeens
Josh
fuente
Si desea actualizar su respuesta, use la editar enlace debajo de la publicación, no publique otra respuesta.
Der Hochstapler
Esto no aborda la sobrecarga del sistema operativo y no puede garantizar resultados precisos dentro de unos pocos ms.
ChrisInEdmonton