Hi,
I'm looking for some help with using the m-pod to communicate from Inquisit to an EEG machine.
I am using the following system to collect EEG data synchronized with task data:
- Task software: Inquisit 5
- Response pad: Cedrus RB-844 response pad
- EEG: Nihon Kohden EEG-1200 cart (https://us.nihonkohden.com/products/eeg-1200/)
- Sync method: Cedrus m-pod connected to RB-844 (via display port) and to EEG at 16-pin DC input.
Summary: PC runninginquisit --(usb)--> RB-844 --(display port)--> m-pod --(16-pin DC)-->EEG
My goals
- To see button presses show up in the EEG data (RB --> m-pod --> EEG)
- To see TTL/event markers sent from my Inquisit script in the EEG data (PC --(bypass RB)--> m-pod --> EEG)
- I need to be able to mark when unique events happen that don't align with a button press.
Currently, I am able to do #1. When a button is pressed, I see the m-pod light up, and I see a deflection on the EEG through one of the DC channels.
- All that was required for this was the EEG data collection settings to be configured to record from the DC port. So at least I know that if I can get the m-pod to light up, I'll be able to see it in the EEG data.
I am stuck on #2.Cannot get the m-pod to light up from a command in Inquisit
- I have tried to send signals through Inquisit's parallel and serial port tool: https://www.millisecond.com/support/docs/v5/html/howto/howtoportmonitor.htm
- I'm not sure if this is a parallel port or serial port, but neither seems to work via this tool.
- And through the script with commands like these: https://www.millisecond.com/support/docs/v5/html/howto/howtosendport.htm
- See my sample Inquisit script below
- Neither results in the m-pod lighting up. The m-pod documentation (https://cedrus.com/support/xid/mpod_commands.htm) says that I need to use the command "aq" to tell the host (RB-844) to "stand aside and let the computer communicate directly with m-pod." There is also documentation saying I should be communicating w/ RB-844 and not m-pod with "mh" and "mp" commands.
- These commands are all python/C++ commands to communicate with the cedrus hardware.
- I don't have experience with python or C++, but it looks like I need to somehow get those commands through to the hardware via Inquisit.
- I'm not sure how to do this in Inquisit's task software (or if it can be done)
Note: I have downloaded Xidon to attempt to map the m-pod/RB system. I'm not completely clear on what the usb numbering system means in terms of what I command from Inquisit to get a particular DC input to deflect.
So in summary, here is my main question with sub-questions: What do I write in my Inquisit code to result in the m-pod sending a signal to the EEG?
- Is this even possible through Inquisit?
- Am I using a parallel port or a serial port with this setup?
- Is there something I need to do through Xidon?
- What does the Xidon mapping really mean?
Below is a sample Inquisit script in which I attempt to send an event marker. All I've done here is added a trial to the basic RB response test script so that it attempts to send one bit first.
<defaults>
/ inputdevice = XID
/ minimumversion = "4.0.3.0"
</defaults>
<xid responsepad>
/ product = responsepad
</xid>
<values>
/ response = 0
</values>
<data>
/ columns = [response latency]
</data>
<expt>
/ blocks = [1=test]
</expt>
<block test>
/ trials = [1 = sendonebit; 2-20=test]
</block>
<port on>
/ items = ("00000001")
/ port = XID
</port>
<text word>
/ items = ("Send One Bit")
</text>
<trial sendonebit>
/ trialduration = 2000
/ posttrialpause = 2000
/ stimulustimes = [0 = word, on]
/ validresponse = (112)
/ correctresponse = (112)
</trial>
<text responsefeedback>
/ items = ("Response: <% trial.test.response %>")
/ position = (50%, 50%)
</text>
<text lastevent>
/ items = ("Last Event: <% xid.responsepad.lastevent %>")
/ position = (15%, 70%)
</text>
<text lasteventport>
/ items = ("Port: <% xid.responsepad.lasteventport %>")
/ position = (30%, 70%)
</text>
<text lasteventaction>
/ items = ("Action: <% xid.responsepad.lasteventaction %>")
/ position = (50%, 70%)
</text>
<text lasteventbutton>
/ items = ("Button: <% xid.responsepad.lasteventbutton %>")
/ position = (70%, 70%)
</text>
<text lastlatency>
/ items = ("Latency: <% xid.responsepad.lastlatency %>")
/ position = (85%, 70%)
</text>
<trial test>
/ stimulustimes = [1=responsefeedback,lastevent,lasteventport,lasteventaction,lasteventbutton,lastlatency]
/ validresponse = (anyresponse)
</trial>