首先可參考黃揚名老師的《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