Stock reminder: 1) I do not work for PST. 2) PST's trained staff
takes any and all questions at
http://support.pstnet.com/e%2Dprime/support/login.asp , and they
strive to respond to all requests in 24-48 hours (although current
estimates are more like 10 days) -- this is pretty much their
substitute for proper documentation, so make full use of it. 3) If
you do get an answer from PST Web Support, please extend the courtesy
of posting their reply back here for the sake of others.
That said, here is my take...
Yes, that is possible, to a point. However, if you use an input mask
on the Slide and just rapidly re-run that Slide, you will have some
trouble with RTs. That is because the input mask will not be armed
in the short intervals between each running of the Slide object, and
if a response comes in during those intervals then it will be
missed. And the more rapidly you cycle through your Slide, the
greater the effect. (I know, because I ran into this with an
experiment a few years ago.)
For something like this, better to use "extended response" (see
Appendix C of the User's Guide that came with E-Prime). Implement
your flicker loop however you like, and just before your flicker loop
add a Wait object. Set its Duration to 0, give it an appropriate
input mask, and set the Time Limit to (infinite), or a time limit
that you choose. Set End Action to Terminate or (none), as seems
appropriate. Now the input mask from the Wait object will run over
all the iterations of your flicker loop and will catch a response at
any time. If you want the flicker loop to then react to the
response, use some inline code such as (assuming you name your Wait
object RespWait)
If Not(RespWait.InputMasks.IsPending()) Then ...
If RespWait.RT <> 0 Then ...
If RespWait.RTTime <> 0 Then ...
If RespWait.RESP <> "" Then ...
Finally, given that the Wait object takes care of getting the
response, I would probably dispense with the two-state Slide (which
requires even more inline code) and just use a pair of ordinary
stimulus objects for the flicker loop.
-- David McFarlane, Professional Faultfinder
Look at the InputMask.IsPending topic in the online E-Basic
Help. See that the RespWait.InputMasks.IsPending() test will detect
whether RespWait has timed out (e.g., set Time Limit to 40000) or has
received a response, as I mentioned earlier. So you may use that in
inline code to end your flicker loop.
Many ways to implement this loop. E.g., put a label like
FlickerLoopLabel in front of your flicker stimuli, and some inline
right after the stimuli, such as
If RespWait.InputMasks.IsPending() Then Goto FlickerLoopLabel
Alternatively, use a List (e.g., FlickerList) to run your loop. Set
the FlickerList to run for some long time, put your flicker stimuli
into a List Procedure (e.g., FlickerProc), and in inline right after
the stimuli do
If Not(RespWait.InputMasks.IsPending()) Then FlickerList.Terminate
More generally, first work through Chapter 4 of the User's Guide for
some exercises on using inline code. And get familiar with the
online E-Basic Help.
--
You received this message because you are subscribed to a topic in the Google Groups "E-Prime" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/e-prime/BiJaV_LJ3NQ/unsubscribe.
To unsubscribe from this group and all its topics, send an email to e-prime+unsubscribe@googlegroups.com.
To post to this group, send email to e-p...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/e-prime/5A85E671.3030808%40msu.edu.
For more options, visit https://groups.google.com/d/optout.