首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PsychoPy:无法从并行端口读取数据

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

Stack Overflow用户
提问于 2015-12-12 01:43:54
回答 1查看 408关注 0票数 3

我在Windows7电脑上使用computer v1.82.01 (编码器视图)来运行一个fMRI实验。我想从并行端口使用readData() (用于记录按钮按下和从扫描仪接收触发器以进行同步)。但是,当我使用readData()或readPin()时,所有引脚似乎都保持低('0')。

为了检查是否正常,我尝试了从显示的端口读取数据(以检查设备是否正常工作/地址是否正确等),这可以识别按下的按钮。奇怪的是,如果我在PsychoPy外壳中(使用readData()和readPin()),表示是打开的,“端口测试”窗口也是打开的,那么它就可以工作了!此外,如果我从Presentation发送数据到端口,那么我可以在PsychoPy中读取(所以我相当有信心我的代码是正确的)。setData()函数工作得很好,只是读取数据有点困难。

我使用的代码是:

代码语言:javascript
复制
from psychopy import parallel
button = parallel.ParallelPort(0x2010)

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

print 'value received'

我对并行端口或并行函数的“幕后”工作不是很有信心,但似乎在读取端口时存在某种访问问题,当呈现访问端口时,该问题会被覆盖,但我从PsychoPy使用的函数不能自己管理?这可行吗?

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

EN

回答 1

Stack Overflow用户

发布于 2015-12-17 20:17:43

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

代码语言:javascript
复制
self.port.Out32(self.base + 2, 32)

可能导致了更多不可预见的问题,但现在看来这是可行的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34229458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档