Я намерен написать программу, которая будет измерять время реакции. Я еще не уверен насчет языка программирования, который буду использовать. Программа будет использоваться в рамках психологического эксперимента. В идеале я бы хотел, чтобы он работал под Windows.

Но прежде чем приступить к написанию программы, я хотел бы иметь некоторую уверенность в том, что полученные данные о времени реакции будут точными с точностью до нескольких миллисекунд. Один знакомый сказал мне, что в Windows невозможно точно определить время событий, независимо от фоновых процессов (антивирусное сканирование и т.д.). Прежде всего, это правда? Во-вторых, если это правда, как мне обойти эту проблему? Я использую Linux или ...?

3 ответа3

2

Чтобы гарантировать точные данные, вам нужна ОС реального времени. Linux по умолчанию не лучше, чем Windows, но Linux может быть сконфигурирован с ядром с поддержкой реального времени (IIRC).

Подробности о том, как написать такую программу, я предлагаю вам спросить на stackoverflow.com.

Теперь на практике вы получите достаточно точные результаты и под Windows. Планирование процесса очень мало повлияет на результаты. Большинство антивирусных программ работает в пользовательском пространстве, что означает, что они находятся в равных условиях с вашим приложением. Лучше всего попробовать и посмотреть.

1

Специальное оборудование для сбора данных может сделать измерения точными в соответствии с вашими бюджетами, независимо от операционной системы и языка. Я наиболее знаком с аппаратным и программным обеспечением National Instruments, но есть и другие поставщики.

-1

Я думаю, это не очень проблематично, я использовал GFA-basic see: https://dl.dropbox.com/u/25791210/gb32.zip

Моя (самая простая) программа работает следующим образом:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .