You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整代码在OpenSesame中通过串口发送EEG触发信号?

问题描述

在OpenSesame中需向串口发送EEG触发信号至BrainVision记录仪,遇到两个问题:

  • 使用pySerial编写代码,所有参数已验证正确,但BrainVision未检测到触发信号,代码如下:
import serial
serialport = serial.Serial(port='COM4', baudrate=9600, timeout=1)
serialport.write (bytes ([101]))
  • 尝试安装psychopy-labhackers模块,安装成功并重启内核后无法导入,报错No module named labhackers,相关操作代码如下:
pip install psychopy-labhackers 
import labhackers

已将模块安装路径添加至OpenSesame路径,且实验室人员可在PsychoPy中正常使用该模块发送触发信号,确认串口功能正常。

解决方案

一、调整pySerial代码以发送触发信号

pySerial参数正确但无触发响应,大概率是信号格式或串口操作细节不符合BrainVision要求,可按以下方式修改:

  1. 添加串口初始化等待时间,确保硬件就绪
  2. 补充触发信号终止符(BrainVision设备常要求携带回车/换行符)
  3. 强制刷新串口缓冲区,保证数据完全发送
  4. 使用后关闭串口,避免端口占用

修改后的代码示例:

import serial
import time

# 打开串口,注意关闭其他占用该端口的程序(如LabHackers Device Manager)
serial_port = serial.Serial(port='COM4', baudrate=9600, timeout=1)
# 等待串口硬件初始化
time.sleep(0.5)
# 发送触发信号,添加回车符(13对应ASCII的\r),可根据BrainVision设置调整
serial_port.write(bytes([101, 13]))
# 强制刷新缓冲区,确保数据发送完成
serial_port.flush()
# 关闭串口释放资源
serial_port.close()

额外检查项:

  • 确认BrainVision记录仪的触发模式设为「串口触发」,且触发码匹配(比如是否要求ASCII码101,或十六进制0x65)
  • 发送前关闭所有占用目标串口的程序,避免端口冲突

二、修复psychopy-labhackers模块导入问题

报错No module named labhackers是因为模块导入路径错误,且需确保安装在OpenSesame的Python环境中:

  1. 正确导入路径:psychopy-labhackers需从psychopy.hardware下导入,而非直接导入labhackers,代码如下:
from psychopy.hardware import labhackers

部分版本可能需使用:

from psychopy_labhackers import labhackers
  1. 确保模块安装在OpenSesame的Python环境:OpenSesame可能自带独立Python环境,需用对应pip安装:
    • 在OpenSesame的代码块中执行以下代码,获取当前Python环境路径:
      import sys
      print(sys.executable)
      
    • 打开命令行,用该路径执行安装命令(示例路径需替换为实际输出):
      "C:\Program Files\OpenSesame\python.exe" -m pip install psychopy-labhackers
      
    • 安装完成后重启OpenSesame即可正常导入

内容的提问来源于stack exchange,提问作者Ivory

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:45:02