Millisecond Forums

Inquisit to BIOPAC to Acqknowledge

https://forums.millisecond.com/Topic17636.aspx

By SarahE - 11/6/2015

Hi!

I am very new to this. I am trying to send TTL parallel signals from Inquisit to Acqknowledge. I am trying to modify the DeathSuicideIAT from the Millisecond Test Library. I used the Inquisit 4 manual and the Auditory Oddball Task as references to do this, but I must be doing something wrong. The Auditory Oddball task works with Acqknowledge as is. Would someone mind looking at this?

Thanks for the help! 

**************************************************************************************************************
**************************************************************************************************************
Death Suicide TASK STIMULI
**************************************************************************************************************
**************************************************************************************************************
<port attributeAsignal>
/ port = LPT1
/ subport = data
/ items = ("00000001")
</port>

<port attributeBsignal>
/ port = LPT1
/ subport = data
/ items = ("00000010")
</port>

<port targetBleftsignal>
/ port = LPT1
/ subport = data
/ items = ("00000011")
</port>

<port targetBrightsignal>
/ port = LPT1
/ subport = data
/ items = ("00001000")
</port>

<port targetAleftsignal>
/ port = LPT1
/ subport = data
/ items = ("00001000")
</port>

<port targetArightsignal>
/ port = LPT1
/ subport = data
/ items = ("00100000")
</port>
By Dave - 11/6/2015

All you have there is a bunch of <port> elements. By themselves they do nothing. Like any other stimulus element (<text>, <picture>, etc.) you need to "display" the <port> elements via the <trial>s' /stimulustimes or -frames, /responsemessage, etc. attributes.
By SarahE - 11/9/2015

Thanks for the help! I figured out what I was doing wrong and it was an easy fix. Now we want to send the TTL signal at the beginning of each block instead of by element. To send the signal by element, I did this for all of them:

<trial attributeA>
/ validresponse = ("E", "I")
/ correctresponse = ("E")
/ stimulusframes = [1 = attributeA, attributeAsignal]
/ posttrialpause = 250
</trial>

Do you have any advice on how to send the signal by block? I defined the ports like this:

<port compatibletest1signal>
/ port = LPT1
/ subport = data
/ items = ("00000001")
</port>

<port compatibletest2signal>
/ port = LPT1
/ subport = data
/ items = ("00000010")
</port>

<port incompatibletest1signal>
/ port = LPT1
/ subport = data
/ items = ("00000011")
</port>

<port incompatibletest2signal>
/ port = LPT1
/ subport = data
/ items = ("00001000")
</port>

Here's one block. I tried using /stimulusframes = [ 1 = compatibletest1, compatibletest1signal] and I got several event markers on Aqcknowledge instead of a single event marker. Is there something else I should type to send a signal at the beginning and end of each block?

<block compatibletest1>
/ bgstim = (targetAleft, orleft, attributeAleftmixed, targetBright, orright, attributeBrightmixed)
/ trials = [1=instructions;
3,5,7,9,11,13,15,17,19,21= random(targetAleft, targetBright);
2,4,6,8,10,12,14,16,18,20 = random(attributeA, attributeB)]
/ errormessage = true(error,200)
/ responsemode = correct
/ ontrialend = [if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.sum1a = values.sum1a + block.compatibletest1.latency]
/ ontrialend = [if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n1a += 1]
/ ontrialend = [if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.ss1a = values.ss1a + (block.compatibletest1.latency * block.compatibletest1.latency)]
/ ontrialend = [if(block.compatibletest1.latency <= 10000 && block.compatibletest1.currenttrialnumber != 1 ) values.n_correct += block.compatibletest1.correct]
</block>

Thanks for the guidance! I attached the whole thing if that is easier to look at. 

Sarah
By Dave - 11/9/2015

A <block> has no /stimulusframes or -times attribute. You can either send the "block-level" signal by inserting a <trial> at the start of the block (1st trial in the /trials attribute) that sends / displays the respective <port> element OR you can try including the port stimulus in the <block>'s /bgstim attribute. To send a signal *at the end* of a <block>, there is no other way than to run a <trial> that displays the <port> stimulus as the block's final trial.