DMDX Help.
RS232 Serial Input Overview.
Athanassios Protopapas and Fotis Fotiadis report that they succeeded in getting
a Cedrus button box that produces RS232 serial data to talk to DMDX:
Fotis and I would like to report that we have managed to get DMDX to work
with Cedrus Lumina LSC-400(A) serial response box for an fMRI experiment in a
Philips Achieva 3T. We collected lexical decision data from our first two
participants on Wednesday so we think that the major problems have been solved.
Key element: Bill redirect software from billproduction.com, which costs $35 and
redirects RS-232 serial input to keyboard. We only had to adjust the port baud
rate to match that indicated on the Lumina box. We deactivated software
components other than the serial port (input only) and keyboard (output only).
Lumina adjustment: set to ASCII/MEDx mode (definitely *not* E-Prime mode!),
19200 baud.
TimeDX confirms that response keys are received as numpad keys
1-4, i.e., for the blue-yellow pad we have used
<MapPositiveResponse +Numpad 1>
and <MapNegativeResponse +Numpad 2>. For reasons we do not care to understand,
trigger input from the MRI is received as 5, not numpad 5, so we have used
<MapRequest +5>
for our trigger-paced experiment.
Here is an excerpt of our DMDX script (with
only a few items, replacing Greek words and instructions), in case it may be
useful. It's an event-related lexical decision protocol with a random delay from
trigger to stimulus presentation. We scan in 3 blocks (of 150 trials, taking
about 12 minutes each). We added dummy initial items in the beginning of each
block to capture the first clockon for subsequent event time reference. The
single plus sign indicates waiting for the initial trigger.
<ExtendedParameters>
<AzkiiResponses>
<RecordClockOnTime>
<VideoMode Desktop>
<DefaultFontSize 20>
<DefaultBackgroundColor 255255255>
<DefaultWritingColor 000000000>
<FrameDuration 50>
<Timeout 5000>
<NumberOfItems 12>
<Scramble 9>
<ClearFeedback>
<FeedbackDuration 18>
<InputDevice keyboard>
<MapPositiveResponse +Numpad 1>
<MapNegativeResponse +Numpad 2>
<EndOfParameters>
$
0 <ln +4> "Press the left key if you see a word",
<ln +5> "Press the right key if it's not a word" ;
0 <WritingColor 255200200> "+" <UnMapRequest><MapRequest +5> ;
^9997 * " " ;
$
+1001 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "word1" ;
+1002 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "word2" ;
+1003 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "word3" ;
$
0 " " <fd 480> / <ln +4> "End of first block",
<ln +5> "Please wait" <UnMapRequest> <MapRequest +Space> ;
0 <WritingColor 255200200> <ln -4> "+" <UnMapRequest><MapRequest +5> ;
^9998 * " " ;
$
-2001 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "nonword1" ;
-2002 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "nonword2" ;
-2003 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "nonword3" ;
$
0 " " <fd 480> / <ln +4> "End of second block",
<ln +5> "Please wait" <UnMapRequest> <MapRequest +Space> ;
0 <WritingColor 255200200> <ln -4> "+" <UnMapRequest><MapRequest +5> ;
^9999 * " " ;
$
-3001 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "++" ;
-3002 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "++" ;
-3003 <set c1 = 1+random(240)> <ctrfd 1> / * <ln +4> "++" ;
$
0 " " <fd 480> / <ln +4> "End of experiment",
<ln +5> "Please wait" <UnMapRequest> <MapRequest +Space> ;
0 <WritingColor 225225225> <ln -4> "+" ;
$
We haven't analyzed the data yet but the azk looks reasonable.
We hope this is useful. Good luck!
Thanassi & Fotis
DMDX Index.