【问题标题】:PsychoPy: unable to read data from parallel portPsychoPy:无法从并行端口读取数据
【发布时间】:2015-12-11 17:43:53
【问题描述】:

我在 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 使用的功能无法自行管理?这可行吗?

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

【问题讨论】:

  • 您使用的是DLPortIO 还是InpOut32 驱动程序?这是 32 位还是 64 位操作系统?
  • 我使用的是 32 位系统和 InpOut32 驱动程序。

标签: python psychopy parallel-port


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多