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(\
&打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(\
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 &这一组语句的含义可以到书中查找。
以上是控制实验流程的基本语句,可以满足大部分认知实验的要求。如有特殊需要,可以到水滴中搜索某些特定程序的写法。 希望对大家有所帮助,Good Luck!
相关推荐: