diff --git a/demos/CPP_wait4TriggerDemo.m b/demos/CPP_wait4TriggerDemo.m new file mode 100644 index 0000000..c3584ac --- /dev/null +++ b/demos/CPP_wait4TriggerDemo.m @@ -0,0 +1,11 @@ +cd .. + +cfg.device = 'Scanner'; + +cfg.numTriggers = 4; + +cfg.triggerKey = 'space'; + +KbName('UnifyKeyNames'); + +wait4Trigger(cfg) \ No newline at end of file diff --git a/pressSpace4me.m b/pressSpace4me.m index b39c39d..6cee744 100644 --- a/pressSpace4me.m +++ b/pressSpace4me.m @@ -1,7 +1,7 @@ function pressSpace4me % Use that to stop your script and only restart when the space bar is pressed. -fprintf('\npress space to continue\n'); +fprintf('\nPress space to continue.\n'); while 1 @@ -9,10 +9,8 @@ [~, keyCode, ~] = KbWait(-1); - responseKey = KbName(find(keyCode)); - - if strcmp(responseKey,'space') - fprintf('starting the experiment....\n'); + if strcmp(KbName(find(keyCode)), 'space') + fprintf('starting the experiment...\n'); break end diff --git a/wait4Trigger.m b/wait4Trigger.m new file mode 100644 index 0000000..30f5b48 --- /dev/null +++ b/wait4Trigger.m @@ -0,0 +1,61 @@ +function wait4Trigger(cfg) + +triggerCounter = 0; + +if strcmp(cfg.device, 'Scanner') + + msg = 'Waiting for trigger'; + talkToMe(cfg, msg) + + while triggerCounter < cfg.numTriggers + + keyCode = []; %#ok + + [~, keyCode] = KbPressWait(-1); + + if strcmp(KbName(keyCode), cfg.triggerKey) + + triggerCounter = triggerCounter + 1 ; + + msg = sprintf(' Trigger %i', triggerCounter); + talkToMe(cfg, msg) + + pauseBetweenTriggers(cfg) + + end + end +end +end + + +function talkToMe(cfg, msg) + +fprintf([msg , ' \n']); + +if isfield(cfg, 'win') + + DrawFormattedText(cfg.win, msg,... + 'center', 'center', cfg.textColor); + + Screen('Flip', cfg.win); + +end + +end + + +function pauseBetweenTriggers(cfg) +% we pause between triggers for half a repetition time or 500 ms if no RT +% is specified. +% we do this otherwise KbWait and KbPressWait might be too fast and could +% catch several triggers in one go. + +if isfield(cfg, 'repetitionTime') + waitTime = cgf.repetitionTime / 2; +else + waitTime = .5; +end + +WaitSecs(waitTime); + +end \ No newline at end of file