文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注。
E-prime 是一款基于 VB 语言进行编程的软件,与其他心理学常用编程软件(matlab,python,R 等)不同的是,E-prime 并不是使用纯代码的一款软件,而是以图形界面(GUI)呈现,可实现代码和 GUI 的结合,这就大大降低了其使用门槛。这里主要分享 E-Prime 中一些常用的 inline 语句。inline 语句要和 E-Prime 中的 label 控件搭配使用,感兴趣的小伙伴可以看看这篇文章干货分享|E-prime 3入门手册,有非常详细的步骤。
打开端口命令的语句

Stimulus.OnsetSignalEnabled = True(表示打开控件Stimulus的端口);
Stimulus.OnsetSignalPort = &H378(表示控件Stimulus的端口为H378);
Stimulus.OffsetSignalEnabled = True (表示关闭控件Stimulus的端口);
Stimulus.OffsetSignalPort = &H378(表示关闭控件Stimulus的端口为H378);
或者,用以下语句:

Stimulus.OnsetSignalData = c.GetAttrib("ciji")表示向ERPs发送控件Stimulus的刺激信号(Mark),这个刺激信号需从List控件中的“ciji”进行调用。
设计刺激界面或空屏随机呈现的语句
①设计刺激界面随机呈现,且随机呈现时间为500-1000ms,可用以下语句:
set Stimulus.duration= random (500,1000)

②设计空屏随机呈现(一般trial之间会设置一个随机空屏,有助于防止实验过程中出现期待效应),且随机呈现时间为800-1000ms,可用以下语句:
set blank.duration= random (800,1000)

注:这里的 Stimulus 或 blank 是指控件名称(可自定义名称,inline语句中的控件名称须与你想要随机的控件名称一致)。
选择语句
选择语句通常会结合 if 命令来使用,例如,根据被试判断自己是否还需要再次练习或进入正式实验、练习时的正确反应的概率达到指定要求跳转至正式实验等等,就需要用到 if 语句来实现。(Mark 必须用数字,且为 256 以内的自然数,大于 256 的数字将无法识别)
①实验过程中一般会给被试一些练习试次,让被试了解实验过程中如何进行按键反应。若被试准备好开始正式实验,要求按 q 键,若继续练习,则按p键。
If Practice.Resp = "p" Then
GoTo label1
Else
GoTo label2
End If
②若练习过程中的正确率高于 90%,则开始正式实验,否则继续练习。
If (N/Practice.Size) < 0.90 Then
N=0
GoTo label1
Else
GoTo label2
End If
③若练习过程中的正确率高于 90%,且反应时小于 500 毫秒,则开始正式实验,否则继续练习。
MeanRt=TotalRt/N
CorrectPercent=CorrectN/N*100
If CorrectPercent>90 And MeanRt<500 Then
GoTo label2
Else
GoTo label1
End If
④若被试的反应为“F”或“J” ,则分别 Mark 为“1”或“2” ;没有作出反应则 Mark 为“3”。
If Answer.resp = "F" Then
writePort &H378,1
ElseIf Answer.resp = "J" Then
writePort &H378,2
Else writePort &H378,3
End If
⑤若被试的反应为“1”或“2” ,则分别 Mark 为“1”或“2” ;没有作出反应则 Mark 为“3”。
If Answer.resp="1" Or Answer.resp="2" Then
WritePort &H378,c.GetAttrib("Answer.resp")
Else WritePort &H378,3
End If
被试中场休息语句
实验 block 比较多的话,一定要让被试进行适当的休息。否则有可能会因为疲劳效应等因素导致实验的准确性受到影响。中场休息可以用 GUI 界面的控件实现,也可以用 inline 语句实现。
Dim N As Integer
relax.duration=0
relax.text=""
N=N+1
If N=60 Then
relax.duration=CLng("-1")
relax.text= "休息一下吧,按空格键继续!"
N=0
End If
注:Dim N As Integer 表示定义一个正数变量,用于计算试次数。如果要在多少个试次后进行中场休息,就需要提前定义一个变量,便于随着试次数累加计数。relax 是指休息控件,该控件里面无需填写内容,所以 relax.text 的初始赋值为"",引号里不用填写内容,且无空格。当执行试次加和后,如被试做完 60 个试次进行休息,则 relax.text 的""里赋值休息提示语句。休息后的计数器归零。
网友评论