2015-12-11 34 views
3

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

为了进行完整性检查,我尝试从演示文稿中的端口读取数据(检查设备是否正常工作/正确的地址等),并确认按钮按下。奇怪的是,如果我在PsychoPy shell(使用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

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

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

有可能会造成更多不可预见的问题,但现在这似乎工作!