E-Prime 連接其他設備 接受外在設備的信息 與 送出信息到外在設備 ( 例如:E-prime 設置端口發送數據到Neuroscan)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章