首页 » 技术分享 » E-Prime 连接其他设备 接受外在设备的信息 与 送出信息到外在设备 ( 例如:E-prime 设置端口发送数据到Neuroscan)

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 
 

转载自原文链接, 如需删除请联系管理员。

原文链接:E-Prime 连接其他设备 接受外在设备的信息 与 送出信息到外在设备 ( 例如:E-prime 设置端口发送数据到Neuroscan),转载请注明来源!

1