3

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

为了进行完整性检查,我尝试从 Presentation 中的端口读取数据(以检查设备是否正常工作/地址正确/等),这可以识别按钮按下。奇怪的是,如果我在 PsychoPy shell 中(使用 readData() 和 readPin())并且 Presentation 处于打开状态,并且“端口测试”窗口打开,那么它确实有效!另外,如果我从 Presentation 向端口发送数据,那么我可以在 PsychoPy 中读取它(所以我相当有信心我的代码很好)。setData() 函数工作正常,我只是难以读取数据。

我正在使用的代码是:

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

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

print 'value received'

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

任何关于从哪里开始解决此问题的想法将不胜感激!

4

1 回答 1

1

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

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

可能会导致更多无法预料的问题,但现在这似乎有效!

于 2015-12-17T12:17:42.650 回答