sending trigger to other devices locked on to the time of response

David McFarlane mcfarla9 at msu.edu
Mon Jul 11 18:53:01 UTC 2011


Hmm, another correction to this old thread.  As a result of an 
off-list discussion with Kenneth Campbell (School of Psychology, 
University of Ottawa, Canada), I see that in my post of 2 Sep 2010 I 
took some things for granted and left out some needed 
explanation.  So to clarify, that solution assumes two other things:

- Set the response Time Limit of the stimlus (e.g., StimText) to 
match how long you want to allow for a response (i.e., use "extended 
input" (see Appendix C of the E-Prime User's Guide)).  (This is 
implied in one of the later comments in the code excerpt, but is 
worth making more explicit.)

- If you want to allow the stimulus to complete its Duration after a 
receiving a response, then set the End Action of its input masks to (none).

Also, I now notice that the comment "... StimText will last at least 
as long its input mask Time Limit" is not quite correct, but at the 
moment I don't know quite how to accurately express the resulting 
interactions between Duration, Time Limit, End Action, and response, 
so I will leave that as an exercise for others.

Hope that helps,
-- David McFarlane, Professional Faultfinder


At 6/28/2011 12:15 PM Tuesday, David McFarlane wrote:
>Gosh, looking over this old thread, I see that I overinterpreted the 
>question and answered one more complex than the question asked.  I 
>addressed the question of how to send an output signal following a 
>response that did *not* terminate the stimulus (i.e., End Action = 
>(none), so stimulus finishes its Duration after the response).
>
>More likely the questioner had a simpler case in mind, i.e., a 
>self-paced stimulus where the response terminates the stimulus, and 
>then E-Prime sends an output signal.  For that simpler case, please 
>see discussion at 
>http://groups.google.com/group/e-prime/browse_thread/thread/ef0e5a8d8b87aa0c .
>
>-- David McFarlane, Professional Faultfinder
>
>
>At 9/2/2010 03:08 PM Thursday, you wrote:
>>Good timing -- It just so happens that I have been working on this 
>>very issue for a lab here.  You have to make the proper settings in 
>>your stimulus, and use a bit of inline code following the 
>>stimulus.  Here is the fully-commented inline code for my solution:
>>
>>
>>'/----------------------------------------------------------------------
>>' We wish to present a stimulus (in this case, StimText), get a
>>' response during that stimlus, and raise a signal as soon as the
>>' subject responds.
>>'
>>' To do that, we need to run this inline code during StimText.  We
>>' could simply set the Duration of StimText to 0 or so (depending on
>>' considerations such as leaving some time between stimulus .OnsetSignal
>>' and .OffsetSignal) and then our code would have to also handle
>>' further stimulus timing.  But with judicious use of Duration and
>>' PreRelease, E-Prime will automatically take care of stimulus timing
>>' for us.
>>'
>>' So instead we simply set the Duration of StimText as desired (which
>>' as a result automatically determines the target onset time for the
>>' next stimulus object), and we set the PreRelease of StimText to a
>>' suitably large value (preferably >= Duration, but perhaps less due
>>' to other considerations as mentioned earlier).  Now this code will
>>' start to run soon after the onset of StimText, and handle the
>>' reaction to the subject response.
>>'
>>' Finally, this code simply makes use of .IsPending() to detect the
>>' response (see the InputMask.IsPending topic in the online E-Basic
>>' Help).  Note that as a result StimText will last at least as long
>>' its input mask Time Limit, regardless of its Duration (if you just
>>' keep Time Limit at the default of "(same as duration)" then this
>>' will not pose a problem).
>>
>>Const  LptDataPort as Integer = &H0378  ' adjust this for your system
>>Const  SignalData as Integer = &HFF  ' adjust this for your device
>>Const  LoopDelay as Long = 2  'ms; set as small as possible for your
>>         ' system
>>
>>Do While StimText.InputMasks.IsPending()
>>         ' Some slower machines (such as my home laptop) need a delay so that
>>         ' EP can detect & handle input:
>>         Sleep LoopDelay
>>Loop
>>WritePort LptDataPort, SignalData
>>'\----------------------------------------------------------------------
>>
>>
>>This is fine as long as you limit the response to coming during the 
>>stimulus.  If you want to present a train of stimuli during the 
>>response period then you must do a little more.  I also have a 
>>solution for that, but it is rather intricate and too much trouble 
>>to go into here, so I hope this is good enough for now.
>>
>>-- David McFarlane, Professional Faultfinder
>>
>>
>>At 9/1/2010 02:38 AM Wednesday, Jaeyong Lee wrote:
>>>I was wondering if there is a way to send trigger signals locked on
>>>the response time.
>>>
>>>For instance,
>>>
>>>Stim.OnsetSignalEnabled = True
>>>Stim.OnsetSignalPort = &H378
>>>Stim.OnsetSignalData = 1
>>>
>>>
>>>WritePort &h378, 0
>>>
>>>the above code send triggers at the onset of the object "Stim".
>>>
>>>However, I am trying to figure out a way to send triggers at the time
>>>of response of "Stim".
>>>
>>>I would greatly appreciate all tips and advices from you.  Thanks.

-- 
You received this message because you are subscribed to the Google Groups "E-Prime" group.
To post to this group, send email to e-prime at googlegroups.com.
To unsubscribe from this group, send email to e-prime+unsubscribe at googlegroups.com.
For more options, visit this group at http://groups.google.com/group/e-prime?hl=en.



More information about the Eprime mailing list