2015-12-11 1 views
3

Я использую Psychopy v1.82.01 (просмотр кодера) на компьютере под управлением Windows 7 для запуска эксперимента FMRI. Я хотел бы прочитатьData() из параллельного порта (для записи нажатий кнопок и для получения триггера из сканера для синхронизации). Однако, когда я использую readData() или readPin(), все контакты кажутся низкими ('0').PsychoPy: невозможно прочитать данные с параллельного порта

Для проверки работоспособности Я попытался прочесть данные из порта в презентации (чтобы проверить работоспособность/правильный адрес устройства/etc), и это распознает нажатия кнопок. Как ни странно, если я нахожусь в оболочке PsychoPy (используя readData() и readPin()), а Presentation открыт, при открытии окна «тест порта» это работает! Кроме того, если я отправлю данные в порт из презентации, я могу прочитать это в PsychoPy (так что я уверен, что мой код в порядке). Функции setData() работают нормально, мне просто трудно читать данные.

код я использую:

from psychopy import parallel 
button = parallel.ParallelPort(0x2010) 

while True: 
    if button.readPin(5) !=0: 
     break 

print 'value received' 

Я не супер уверен, с параллельными портами, или «за кулисами» работы параллельных функций, но это, кажется, что есть какая-то проблемы с доступом при чтении порта, который переопределяется, когда Presentation получает доступ к порту, но функции, которые я использую из PsychoPy, не могут справиться самостоятельно? Это возможно?

Любые идеи о том, с чего начать исправление этого, будем очень благодарны!

+0

Используете ли вы драйвер DLPortIO или InpOut32? Это 32-разрядная или 64-разрядная операционная система? – hoechenberger

+0

Я использую 32-битную систему и драйвер InpOut32. – Emma

ответ

1

Наконец-то он работает! В случае, если у кого-либо есть подобные проблемы, в файле _inpout32.py (/parallel/_inpout32.py) в функции «init» есть команда переключиться на нулевой бит 5 регистра управления. Я скопировал эту команду, а также включили его в SetData() функцию, а затем в readData() я изменил это так, бит 5 является высокой (входные аргументы базовый адрес + 2 и 32):

self.port.Out32(self.base + 2, 32) 

Возможно, вызвали больше непредвиденных проблем, но пока это, похоже, работает!

Смежные вопросы