Send markers to the eye-tracker through everytime a response is made


Send markers to the eye-tracker through everytime a response is made...
Author
Message
nidhi_desai
nidhi_desai
Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)
Group: Forum Members
Posts: 42, Visits: 274
Inside a trial where a participant can press a button multiple times, I need to send markers to the eye-tracker using <port> for every response given by a participant. I would appreciate some suggestions on how to do this. I can think of branching to another <trial> everytime a button is pressed, but is there a better and less cumbersome solution to this?
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
nidhi_desai - 1/12/2021
Inside a trial where a participant can press a button multiple times, I need to send markers to the eye-tracker using <port> for every response given by a participant. I would appreciate some suggestions on how to do this. I can think of branching to another <trial> everytime a button is pressed, but is there a better and less cumbersome solution to this?

You can send the marker via /responsemessage and you can have a trial accept multiple responses by implementing /stop logic.

https://www.millisecond.com/support/docs/v6/html/language/attributes/stop_trial.htm

For the sake of example, assume you want to allow an unlimited number of pressing either the E or I key for a duration of 10 seconds:

<block myblock>
/ trials = [1=mytrial]
</block>

<trial mytrial>
/ stop = [
    trial.mytrial.elapsedtime >= 10000;
]
/ stimulustimes = [0=clearscreen,mytext]
/ validresponse = ("E", "I")
/ responsemessage = ("E", Epress, 100)
/ responsemessage = ("I", Ipress, 100)
</trial>

<text mytext>
/ items = ("Press the E and I keys. You have 10 seconds.")
/ erase = false
</text>

<text Epress>
/ items = ("Pressed E")
/ position = (50%, 90%)
</text>

<text Ipress>
/ items = ("Pressed I")
/ position = (50%, 90%)
</text>


Every time one of the keys is pressed, the respective /responsemessage is triggered. Here, it just displays a <text> on the screen, but you can just as well send a <port> signal via /responsemessage attributes.

Edited 3 Years Ago by Dave
nidhi_desai
nidhi_desai
Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)
Group: Forum Members
Posts: 42, Visits: 274
Dave - 1/12/2021
nidhi_desai - 1/12/2021
Inside a trial where a participant can press a button multiple times, I need to send markers to the eye-tracker using <port> for every response given by a participant. I would appreciate some suggestions on how to do this. I can think of branching to another <trial> everytime a button is pressed, but is there a better and less cumbersome solution to this?

You can send the marker via /responsemessage and you can have a trial accept multiple responses by implementing /stop logic.

https://www.millisecond.com/support/docs/v6/html/language/attributes/stop_trial.htm

For the sake of example, assume you want to allow an unlimited number of pressing either the E or I key for a duration of 10 seconds:

<block myblock>
/ trials = [1=mytrial]
</block>

<trial mytrial>
/ stop = [
    trial.mytrial.elapsedtime >= 10000;
]
/ stimulustimes = [0=clearscreen,mytext]
/ validresponse = ("E", "I")
/ responsemessage = ("E", Epress, 100)
/ responsemessage = ("I", Ipress, 100)
</trial>

<text mytext>
/ items = ("Press the E and I keys. You have 10 seconds.")
/ erase = false
</text>

<text Epress>
/ items = ("Pressed E")
/ position = (50%, 90%)
</text>

<text Ipress>
/ items = ("Pressed I")
/ position = (50%, 90%)
</text>


Every time one of the keys is pressed, the respective /responsemessage is triggered. Here, it just displays a <text> on the screen, but you can just as well send a <port> signal via /responsemessage attributes.

I used this above solution along with /isvalidresponse to dynamically change the value of the text displayed as a response to the button press. I have attached my code here. In it I use the following code to update the values of the text. 
<expressions>
/setText = text.Spress.setitem(values.checkS, 1)
</expressions>

I am doing this as I need to have the flexibility to have Spress as a text or a port based on if have eye-tracker added in my code. This method was suggested in one of my other post https://www.millisecond.com/forums/Topic30397.aspx.
But this results in the text not displayed when S key is pressed. Could you suggest some solution to this problem or how might I go about having a dynamic value of the response text/port stimuli?
Attachments
experiment.iqx (174 views, 1.00 KB)
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 12K, Visits: 98K
nidhi_desai - 1/19/2021
Dave - 1/12/2021
nidhi_desai - 1/12/2021
Inside a trial where a participant can press a button multiple times, I need to send markers to the eye-tracker using <port> for every response given by a participant. I would appreciate some suggestions on how to do this. I can think of branching to another <trial> everytime a button is pressed, but is there a better and less cumbersome solution to this?

You can send the marker via /responsemessage and you can have a trial accept multiple responses by implementing /stop logic.

https://www.millisecond.com/support/docs/v6/html/language/attributes/stop_trial.htm

For the sake of example, assume you want to allow an unlimited number of pressing either the E or I key for a duration of 10 seconds:

<block myblock>
/ trials = [1=mytrial]
</block>

<trial mytrial>
/ stop = [
    trial.mytrial.elapsedtime >= 10000;
]
/ stimulustimes = [0=clearscreen,mytext]
/ validresponse = ("E", "I")
/ responsemessage = ("E", Epress, 100)
/ responsemessage = ("I", Ipress, 100)
</trial>

<text mytext>
/ items = ("Press the E and I keys. You have 10 seconds.")
/ erase = false
</text>

<text Epress>
/ items = ("Pressed E")
/ position = (50%, 90%)
</text>

<text Ipress>
/ items = ("Pressed I")
/ position = (50%, 90%)
</text>


Every time one of the keys is pressed, the respective /responsemessage is triggered. Here, it just displays a <text> on the screen, but you can just as well send a <port> signal via /responsemessage attributes.

I used this above solution along with /isvalidresponse to dynamically change the value of the text displayed as a response to the button press. I have attached my code here. In it I use the following code to update the values of the text. 
<expressions>
/setText = text.Spress.setitem(values.checkS, 1)
</expressions>

I am doing this as I need to have the flexibility to have Spress as a text or a port based on if have eye-tracker added in my code. This method was suggested in one of my other post https://www.millisecond.com/forums/Topic30397.aspx.
But this results in the text not displayed when S key is pressed. Could you suggest some solution to this problem or how might I go about having a dynamic value of the response text/port stimuli?

I cannot, because that is not possible. Basically, you cannot manipulate the response message stimulus while the trial is running.
Edited 3 Years Ago by Dave
nidhi_desai
nidhi_desai
Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)Respected Member (474 reputation)
Group: Forum Members
Posts: 42, Visits: 274
Dave - 1/19/2021
nidhi_desai - 1/19/2021
Dave - 1/12/2021
nidhi_desai - 1/12/2021
Inside a trial where a participant can press a button multiple times, I need to send markers to the eye-tracker using <port> for every response given by a participant. I would appreciate some suggestions on how to do this. I can think of branching to another <trial> everytime a button is pressed, but is there a better and less cumbersome solution to this?

You can send the marker via /responsemessage and you can have a trial accept multiple responses by implementing /stop logic.

https://www.millisecond.com/support/docs/v6/html/language/attributes/stop_trial.htm

For the sake of example, assume you want to allow an unlimited number of pressing either the E or I key for a duration of 10 seconds:

<block myblock>
/ trials = [1=mytrial]
</block>

<trial mytrial>
/ stop = [
    trial.mytrial.elapsedtime >= 10000;
]
/ stimulustimes = [0=clearscreen,mytext]
/ validresponse = ("E", "I")
/ responsemessage = ("E", Epress, 100)
/ responsemessage = ("I", Ipress, 100)
</trial>

<text mytext>
/ items = ("Press the E and I keys. You have 10 seconds.")
/ erase = false
</text>

<text Epress>
/ items = ("Pressed E")
/ position = (50%, 90%)
</text>

<text Ipress>
/ items = ("Pressed I")
/ position = (50%, 90%)
</text>


Every time one of the keys is pressed, the respective /responsemessage is triggered. Here, it just displays a <text> on the screen, but you can just as well send a <port> signal via /responsemessage attributes.

I used this above solution along with /isvalidresponse to dynamically change the value of the text displayed as a response to the button press. I have attached my code here. In it I use the following code to update the values of the text. 
<expressions>
/setText = text.Spress.setitem(values.checkS, 1)
</expressions>

I am doing this as I need to have the flexibility to have Spress as a text or a port based on if have eye-tracker added in my code. This method was suggested in one of my other post https://www.millisecond.com/forums/Topic30397.aspx.
But this results in the text not displayed when S key is pressed. Could you suggest some solution to this problem or how might I go about having a dynamic value of the response text/port stimuli?

I cannot, because that is not possible. Basically, you cannot manipulate the response message stimulus while the trial is running.

Thank you for letting me know.
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search