我在Windows7电脑上使用computer v1.82.01 (编码器视图)来运行一个fMRI实验。我想从并行端口使用readData() (用于记录按钮按下和从扫描仪接收触发器以进行同步)。但是,当我使用readData()或readPin()时,所有引脚似乎都保持低('0')。
为了检查是否正常,我尝试了从显示的端口读取数据(以检查设备是否正常工作/地址是否正确等),这可以识别按下的按钮。奇怪的是,如果我在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'我对并行端口或并行函数的“幕后”工作不是很有信心,但似乎在读取端口时存在某种访问问题,当呈现访问端口时,该问题会被覆盖,但我从PsychoPy使用的函数不能自己管理?这可行吗?
任何关于从哪里开始解决这个问题的想法都将不胜感激!
发布于 2015-12-17 20:17:43
终于让它工作了!如果其他任何人有类似的问题,在并行文件(/ _inpout32.py /_inpout32.py)的函数'init‘中,有一个切换到控制寄存器的零位5的命令。我复制了此命令,并将其包含在setData()函数中,然后在readData()中,我将其更改为位5为高(输入参数是基地址+ 2和32):
self.port.Out32(self.base + 2, 32)可能导致了更多不可预见的问题,但现在看来这是可行的!
https://stackoverflow.com/questions/34229458
复制相似问题