Habituation with E-Prime
Peter Quain
pquain at une.edu.au
Fri Aug 14 04:49:42 UTC 2009
sorry, don't want to misinform: I said that "Keyboard.History.Count
isn't something to *modify* with an expression (such as "set
theResponseData = Keyboard.History(Keyboard.History.Count - 1))..."
- it certainly is! Looping through that index is how you get hold of
the different attributes that are in the collection. It is just the
conditional falling over that is the problem.
~Peter
At 01:54 PM 14/08/2009, you wrote:
>Hi Chris
>
>Not sure about this, and no e-prime to check it out on - so all
>suggestions dubious, and code suggestions are just that. Also, my
>understanding of e-prime object model is very muddy, so description
>below shouldn't be trusted too much.
>
>I think KeyBoard.History.Count is the instances of TYPES of response
>- that is, the number of
>ResponseData objects in the collection of all keyboard responsedata
>objects (e.g., RESP, RT, CRESP etc) -
>not a 'value' of a response (such as a key press of "5"). Values are
>held by the object. They are not 'the' object.
>
> From e-basic help:
>--------------------------------------
>
>Dim nSpaceBarEntries As Long
>Dim nIndex As Long
>Dim theResponseData As ResponseData
>For nIndex = 1 To Keyboard.History.Count
> 'retrieve a single ResponseData object from the collection
> 'of ResponseData objects stored in the InputHistoryManager
>Set theResponseData = Keyboard.History(nIndex)
> If Not theResponseData Is Nothing Then
> If theResponseData.RESP = "{SPACE}" Then
> nSpaceBarEntries = nSpaceBarEntries + 1
> End If
> End If
>--------------------------------
>
>So, Keyboard.History.Count isn't something to *modify* with an
>expression (such as "set theResponseData =
>Keyboard.History(Keyboard.History.Count - 1))... it is something, a
>collection of Keyboard objects (that itself is a member of the
>larger collection of InputMasks) to loop through the sub-objects of
>(.RT, .RESP etc), and get the values held by that sub-object. .Count
>is the number of sub-objects, and they each have a numeric index in
>the collection, as well as their name (e.g., .RT). So it is a
>property to access, not to set. Access allows you to then grab the
>value held by any particular sub-object.
>
> From e-basic help:
>-----------------------------
>'the StimDisplay object enables keyboard and mouse responses;
>' keyboard is the first InputMask listed (see Duration/Input tab),
>' so the keyboard response is stored as the first item in the
>' InputMasks collection;
>' mouse is the second InputMask listed, so the mouse response is the
>' second item in the InputMasks collection
>-------------------------------------------------------------------
>
>So your code :
>set theResponseData = Keyboard.History(Keyboard.History.Count - 1)
> >>>> if theResponseData = "5" then
>
>.. is trying to modify the collection count i'd say, and then
>running a malformed conditional (no value for the ResponseData,
>compared to a string) and doesn't like it. The operator error could
>be where you have the "=" e-prime is looking for a dot operator ???? anyway ...
>
>Something like this might be on the right track.
>
>Dim nIndex As Integer
>For nIndex = 1 To Keyboard.History.Count
>set theResponseData = Keyboard.History(nIndex)
>if theResponseData.RESP = {5} then
>...your code ...
>if theResponseData.RESP = {-5} then
> if doAdd = true then
>... etc...
>
>best
>Peter
>
>
>
>At 04:37 AM 14/08/2009, you wrote:
>
>>Hi all,
>>
>>I'm currently trying to program a habituation experiment in E-Prime. I
>>need it to display a stimulus when Enter is pressed, start recording
>>looking time when 5 is pressed, and stop recording looking time when 5
>>is released, then one second later removing the stimulus. I also need
>>to program it to calculate a sliding window to detect when they've
>>habituated, but that's for another time. Here's some of the script:
>>
>>dim doAdd as boolean
>>lookAwayTime = -1
>>lookAwayStart = -1
>>trialTimer = MovieDisplay1.FirstFrameTime
>>
>>'loop to measure looking time via keyboard
>>
>>do
>> set theResponseData = Keyboard.History(Keyboard.History.Count - 1)
>> >>>> if theResponseData = "5" then
>> if doAdd = false then
>> lookStart = theResponseData.RTTime
>> lookAwayTime = 0
>> Display.Canvas.text 0, 0, "5
>> pressed " & theResponseData.RTTime
>> doADD = true
>> end if
>> if theResponseData = "{-5}" then
>> if doAdd = true then
>> lookAwayStart= theResponseData.RTTime
>> lookTime = theResponseData.RTTime-lookStart
>>
>>habitArray(trialCount).AddObservation lookTime
>> Display.Canvas.text 0, 0, "5
>> Released " & theResponseData.RTTime
>> Display.Canvas.text 500, 0,
>> "looking time: " & habitArray
>>(trialCount).total
>> doAdd = false
>> end if
>> end select
>>loop
>>
>>I keep getting an "operator mismatch error" on the line pointed out
>>with >>>>
>>Also, am I making this more complicated than it needs to be?
>>
>>Thanks
>>Chris
>>
>>
>>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.linguistlist.org/pipermail/eprime/attachments/20090814/97545e6a/attachment.htm>
More information about the Eprime
mailing list