我正在运行带有图片的EEG实验,我通过并行端口发送触发器。我通过Psychopy构建器向我的代码添加了触发器,并将其同步到屏幕刷新。我使用光电二极管来测试图片是否与发送触发器完全相同时显示,并且我发现不规则延迟:触发器发送的时间比图像实际显示的时间早5ms到26ms。
我不认为图像尺寸是一个问题,因为我观察到延迟,即使我用小尺寸的白色图像替换图片。此外,在图片显示之前有一个ISI周期为半秒,应该有所帮助。技术人员告诉我,显卡或电缆应该不是问题。有没有人知道为什么我会得到这些延迟以及如何解决这个问题?
由于评论,我添加了一段发送触发器的代码:
# *image_training_port* updates
if t >= 4.0 and image_training_port.status == NOT_STARTED:
# keep track of start time/frame for later
image_training_port.tStart = t # underestimates by a little under one frame
image_training_port.frameNStart = frameN # exact frame index
image_training_port.status = STARTED
win.callOnFlip(image_training_port.setData, int(triggers_image_training))
if image_training_port.status == STARTED and t >= (4.0 + (0.5-win.monitorFramePeriod*0.75)): #most of one frame period left
image_training_port.status = STOPPED
win.callOnFlip(image_training_port.setData, int(0))
答案 0 :(得分:0)
实际上,这很可能是由于显示器本身造成的。尝试在不同的监视器中交换。
说明:平板显示器经常做一些"后处理"在框架像素上使它们看起来更漂亮(对于平板电视,几乎所有人都这样做)。后处理不仅因为它会改变您仔细校准的刺激而不需要,而且因为如果执行时间超过几毫秒,它会引入延迟。 PsychoPy(或任何软件)无法检测到这一点 - 它只能知道帧在图形卡级别被翻转的时间,而不是之后发生的事情。