Caja SR
Acerca del plugin srbox
La caja de respuestas serie (SR) es una caja de botones, diseñada específicamente para la recolección de respuestas en experimentos psicológicos. La versión original, desarrollada por Psychology Software Tools, tiene 5 botones, 5 luces y se conecta a la PC a través del puerto serie. También existen dispositivos compatibles con SR Box de otros fabricantes, que pueden diferir en el número de botones y luces y suelen utilizar una conexión USB, que emula un puerto serie.
El plugin srbox para OpenSesame te permite usar la caja de respuestas serie o un dispositivo compatible en tus experimentos con OpenSesame.
Captura de pantalla
Establecer el nombre del dispositivo
De forma predeterminada, el plugin intenta detectar automáticamente tu SR Box. Si esto funciona, no tienes que cambiarlo. Si tu experimento se bloquea, OpenSesame ha elegido el puerto serie incorrecto y debes ingresar el nombre del dispositivo manualmente. En Windows, el dispositivo probablemente se llama algo así como
COM4
En Linux, el dispositivo probablemente se llama algo así como
/dev/tty0
Requisitos
Una caja de botones SR Box o compatible. No todas las cajas de botones son compatibles, consulta:
Usar la SR Box desde el código Python en línea
El objeto srbox
no existe cuando el plugin está en modo dummy.
instancia srbox
Si insertas el complemento srbox al comienzo de tu experimento, una instancia de srbox automáticamente pasa a formar parte del objeto del experimento y puede ser accedido dentro de un elemento de inline_script como srbox.
Nota importante 1:
Si no especificas un dispositivo, el complemento intentará autodetectar el puerto SR Box. Sin embargo, en algunos sistemas esto congela el experimento, por lo que es mejor especificar explícitamente un dispositivo.
Nota importante 2:
Necesitas llamar a [srbox.start] para poner el SR Box en modo de envío, antes de llamar a [srbox.get_button_press] para recopilar una pulsación de botón.
Ejemplo:
t0 = clock.time()
srbox.start()
button, t1 = srbox.get_button_press(allowed_buttons=[1, 2],
require_state_change=True)
if button == 1:
response_time = t1 - t0
print(f'¡El botón 1 fue presionado en {response_time} ms!')
srbox.stop()
get_button_press(allowed_buttons=None, timeout=None, require_state_change=False)
Recopila una pulsación de botón desde el SR box.
Parámetros
- allowed_buttons: Una lista de botones que son aceptados o
None
para aceptar todos los botones. Los botones válidos son enteros del 1 al 8. - timeout: Un valor de tiempo de espera en milisegundos o
None
para no establecer un tiempo de espera. - require_state_change Indica si se debe aceptar un botón ya presionado: (False), o si se acepta solo un cambio de estado de no presionado a presionado (True).
Devuelve
- Una tupla
(button_list, timestamp)
. Labutton_list
esNone
si no se ha pulsado ningún botón (es decir, ocurrió un tiempo de espera).
send(ch)
Envía un único caracter al SR Box. Envía '`' para apagar todas las luces, 'a' para encender la luz 1, 'b' para la luz 2 encendida, 'c' para las luces 1 y 2 encendidas, etc.
Parámetros
- ch: El caracter a enviar. Si se pasa un
str
, se codifica enbytes
utilizando la codificación utf-8.
start(self)
Activa el modo de envío, de modo que el SR Box comienza a enviar la salida. El SR Box debe estar en modo de envío cuando llamas a [srbox.get_button_press].
stop(self)
Desactiva el modo de envío, de modo que el SR Box deja de dar salida.