PsychoPy在64位操作系统上发送触发器

Mar*_*ter 6 python 64-bit triggers psychopy

我在Win7 64位操作系统上使用PsychoPy独立v1.81.00发送eeg录制触发器时遇到问题.我按照这里的描述,不会得到任何(更多)错误.但是,触发器不会显示在录制计算机上(Win7 32bit下的Brainvision录制器).

我做了什么:

  1. 通过InpOutBinaries_1500\Win32\InstallDriver.exe 下载并安装InpOutBinaries_1500
  2. 将其他文件(inpout32.dll,.h和.lib以及vssver2.scc)复制到我脚本的工作目录
  3. 尝试使用发送触发器代码 windll.inpout32.Out32(0x378, triggerCode)

触发代码没有显示在Brainvision Recorder中,但似乎在调用时设置正确print str(windll.inpout32.Inp32(0x378)).

感谢您的每一条建议或想法!

Mar*_*ter 9

我设法解决了这个问题.我不完全确定哪个步骤实际上切断了曲线,但我建议如下:

在演示计算机上下载并安装LPT Test Utility.

首先,inpout32.dll无论您使用32位还是64位操作系统,此程序都会自动安装.此外,它还可以帮助您监视和操作并行端口的引脚.如果使用标准地址(LPT1直通LPT3)不起作用,LPTX请手动选择并输入您的地址(请参阅此处在Windows PC上获取并行端口地址的位置).如果使用此程序未在您的录制计算机上显示触发器,则您遇到与PsychoPy无关的问题.

如果失败,(重新)安装并行端口驱动程序.使用Windows 7这不是必要的,但实际上解决了我的一个主要问题.如果仍然失败,可能是硬件组件(并行端口插头/卡,电缆,同步盒)损坏.

如果触发器使用"LPT测试实用程序"程序但不使用PsychoPy,则需要根据您的代码进行单独的故障排除.当然,您需要在PsychoPy代码中插入使用"LPT Test Utility"的端口地址.

from psychopy import core
from ctypes import windll

windll.inpout32.Out32(portaddress, triggerCode) #sends the trigger with triggerCode being an integer between 0 and 255
core.wait(0.05) #wait 50ms
windll.inpout32.Out32(portaddress, 0) #deletes the trigger i.e. resets the pins
Run Code Online (Sandbox Code Playgroud)

最好的祝愿,

马里奥