首先可参考黄扬名老师的《E-Prime 第一次用就上手》,我把参考书里面的内容截图如下:
其次可参考:http://blog.sina.com.cn/s/blog_b43ab1510102vvh3.html
这篇博客,这篇博客讲了E-prime程序怎样与脑电进行交互。
fangkuang.OnsetSignalEnabled = True
fangkuang.OnsetSignalPort = &H378
fangkuang.OffsetSignalEnabled = True
fangkuang.OffsetSignalPort = &H378
stimilus.OnsetSignalEnabled = True
stimilus.OnsetSignalPort = &H378
stimilus.OffsetSignalEnabled = True
stimilus.OffsetSignalPort = &H378
fangkuang3.OnsetSignalEnabled = True
fangkuang3.OnsetSignalPort = &H378
fangkuang3.OffsetSignalEnabled = True
fangkuang3.OffsetSignalPort = &H378
stimilus3.OnsetSignalEnabled = True
stimilus3.OnsetSignalPort = &H378
stimilus3.OffsetSignalEnabled = True
stimilus3.OffsetSignalPort = &H378
InLine2:
WritePort &H378,0
stimilus.OnsetSignalData = c.GetAttrib("code")
InLine3:
set blankexp.duration=random(700,900)
InLine4:
If stimilus.resp="1" Then
writePort &H378,11
ElseIf stimilus.resp="2" Then
writePort &H378,12
ElseIf stimilus.resp="3" Then
writePort &H378,13
End If
InLine7:
set blankpra.duration=random(700,900)
InLine9:
WritePort &H378,0
stimilus3.OnsetSignalData = c.GetAttrib("code")
InLine10:
If stimilus3.resp="1" Then
writePort &H378,11
ElseIf stimilus3.resp="2" Then
writePort &H378,12
ElseIf stimilus3.resp="3" Then
writePort &H378,13
End If
InLine11:
If stimilus3.resp="1" Then
writePort &H378,11
ElseIf stimilus3.resp="2" Then
writePort &H378,12
ElseIf stimilus3.resp="3" Then
writePort &H378,13
End If
-----------------------------------------------------------------------------------------------
1 dim N as integer
public N as integer &定义一个正数变量,用于计算trial数。比如需要在多少个trial后结束程序或进行休息,就需要提前定义一个变量,以便随着trial数累加计数。该变量一般在script窗口中定义,public是定义全局变量的,不过在此用dim也可以。
2 set SOA.duration=random(800,1200) &设定随机时间。前面是相应控件的名称,该语句相对于控件property中的设置会优先执行。这个必须写在相应控件的前面。
3 target1.OnsetSignalEnabled = True
target1.OnsetSignalPort = &H378
target1.OffsetSignalEnabled = True
target1.OffsetSignalPort = &H378 &开端口,就是准备向其他设备如ERP、fMRI发送trigger,使之能够记录到EPrime中的mark。每个要打mark的控件都要写这样一组语句。一般也是在script中写。
4 writePort &H378,0
target1.OnsetSignalData = c.getattrib("tmark")
&打mark。前一句是将系统记录归零,如果不归零,可能会打上一些莫名其妙的,让人头疼的幽灵mark,相信有些滴友有所体会。引号中的tmark是要调用的list中的属性,即事先在list中定义该控件在不同条件下的mark,然后引用,这样还是比较方便的,适合一些有规律的mark。这个写在target1控件前面的inline中。mark必须用数字,并且只能用256个自然数,大于256的数字就不能识别了。
5 if target1.Acc = 1 then
writePort &H378,7
elseif target1.Acc = 0 then
writePort &H378,8
else writePort &H378,9
end if &也是打mark,这个是直接根据反应打mark的。.Acc也可以换成.RESP等在logging中收集信息的项目。writePort &H378,后面的数值就是mark。注意:elseif是写在一起的。上例中7和8是并列的,9是在被试没有反应时打的mark。但是此时ACC一般记为0,所以可能打的mark是8而不是9.
6 relax.duration=0
relax.text=""
N=N+1
if N=50 then
relax.duration=CLng("-1")
relax.text="休息一会 按任意键继续"
N=0
end if &中场休息。relax是休息控件,里面什么也不需要写,所以relax.text的初试赋值只是“”,引号里面什么也不写,也没有空格。然后执行trial加和,当做完50个trial后进行休息,此时relax中输入提示休息的语句。休息后计数器要归零,重新计数。
曾老师的书中提到另一组休息语句:
如让被试在做完40个trial休息一下. public N as integer &同样需要先在script中定义全局变量N。
N = N + 1
if N mode 40 = 0 then
goto label1
else
goto label2
end if &这一组语句的含义可以到书中查找。
最后可以参考E-prime程序示例《ERP接口的真实示例》,谢谢E-Prime大佬的无私分享
链接:https://pan.baidu.com/s/1k-Z200-gbIzUw6KlrwpDCw
提取码:8k63
转载自原文链接, 如需删除请联系管理员。
原文链接:E-Prime 连接其他设备 接受外在设备的信息 与 送出信息到外在设备 ( 例如:E-prime 设置端口发送数据到Neuroscan),转载请注明来源!