求助:Python向BrainVision发送EEG触发信号的问题(适配OpenSesame)
关于Python向BrainVision Recorder发送EEG触发信号的技术求助
现有配置与实现方式
- 刺激呈现平台:OpenSesame(无内置触发发送支持,通过Python代码实现)
- 硬件配置:串口转并口代理
- 串口连接代码:
import serial serialport = serial.Serial('COM3')
- 触发信号发送方式:以二进制格式发送,例如发送触发信号时执行
serialport.write(b'1')
遇到的核心问题
- 触发信号转换规则不符预期:执行
serialport.write(b'1')时,BrainVision Recorder中显示的触发信号为S 49,而非预期的S 1,具体对应规律见附录。 - 无法连续发送相同触发信号:首次执行
serialport.write(b'1')时能正常显示触发信号,但后续重复执行同一代码(无论次数)均无触发信号显示。
已尝试同时打开并口,问题仍未解决。
附录:Python发送内容与BrainVision标记的对应关系
数字类发送内容的对应规律
- BrainVision显示的标记值为发送内容最后一位数字的ASCII码(数字0-9的ASCII码为48-57)
- 仅识别发送内容的最后一位,多位数字仅取最后一位转换
示例:
serialport.write(b'0') --> 'S 48' serialport.write(b'1') --> 'S 49' serialport.write(b'2') --> 'S 50' serialport.write(b'3') --> 'S 51' serialport.write(b'4') --> 'S 52' serialport.write(b'5') --> 'S 53' serialport.write(b'6') --> 'S 54' serialport.write(b'7') --> 'S 55' serialport.write(b'8') --> 'S 56' serialport.write(b'9') --> 'S 57' serialport.write(b'10') --> 'S 48' serialport.write(b'11') --> 'S 49' serialport.write(b'20') --> 'S 48' serialport.write(b'23') --> 'S 51'
非数字类发送内容的对应规律
- BrainVision显示的标记值为发送内容最后一位字符的ASCII码
- 仅识别发送内容的最后一位,多位字符仅取最后一位转换
- 无法显示ASCII码小于48或大于125的标记值
示例:
serialport.write(b'@') --> 'S 64' serialport.write(b']') --> 'S 93' serialport.write(b'a') --> 'S 97' serialport.write(b'm') --> 'S 109' serialport.write(b'z') --> 'S 122' serialport.write(b'@@') --> 'S 64'
内容的提问来源于stack exchange,提问作者Pablo Bernabeu
相关产品推荐
相关产品推荐

