PsychoPy:无法从并行端口读取数据

时间:2015-12-11 17:43:54

标签: python psychopy parallel-port

我在Windows 7计算机上使用Psychopy v1.82.01(编码器视图)来运行fMRI实验。我想从并行端口读取data()(用于记录按钮按下以及从扫描器接收触发器以进行同步)。但是,当我使用readData()或readPin()时,所有引脚似乎都保持低电平('0')。

为了进行健全性检查,我尝试从Presentation中的端口读取数据(检查设备是否工作/正确的地址/等),这可以识别按下按钮。奇怪的是,如果我在PsychoPy shell(使用readData()和readPin())并且Presentation已打开,并打开'port test'窗口,那么它确实有效!此外,如果我从Presentation发送数据到端口,那么我可以在PsychoPy中读到这个(所以我相当自信我的代码很好)。 setData()函数工作正常,我只是难以读取数据。

我使用的代码是:

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

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

print 'value received'

我对并行端口或并行功能的“幕后”工作并不十分自信,但似乎是在读取端口时存在某种访问问题,在Presentation访问时会被覆盖端口,但我从PsychoPy使用的功能无法自行管理?这可行吗?

任何关于从哪里开始修复此问题的想法都将非常感谢!!

1 个答案:

答案 0 :(得分:1)

终于搞定了!如果其他人有类似的问题,在函数' init '的_inpout32.py文件(/parallel/_inpout32.py)中有一个命令切换到控制寄存器的第5位。我复制了这个命令并将其包含在 setData()函数中,然后在 readData()中我改变了这一点,因此第5位为高(输入参数是基址+ 2,和32):

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

可能会引发更多不可预见的问题,但现在看起来似乎有用了!