Skip to content

Commit 48fe9a7

Browse files
committed
create function to wait for fMRI trigger
1 parent dbb8d78 commit 48fe9a7

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

demos/CPP_wait4TriggerDemo.m

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
cd ..
2+
3+
cfg.device = 'Scanner';
4+
5+
cfg.numTriggers = 4;
6+
7+
cfg.triggerKey = 'space';
8+
9+
KbName('UnifyKeyNames');
10+
11+
wait4Trigger(cfg)

pressSpace4me.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
responseKey = KbName(find(keyCode));
1313

14-
if strcmp(responseKey,'space')
14+
if strcmp(responseKey, 'space')
1515
fprintf('starting the experiment....\n');
1616
break
1717
end

wait4Trigger.m

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
function wait4Trigger(cfg)
2+
3+
triggerCounter = 0;
4+
5+
if strcmp(cfg.device, 'Scanner')
6+
7+
msg = 'Waiting for trigger';
8+
talkToMe(cfg, msg)
9+
10+
while triggerCounter < cfg.numTriggers
11+
12+
keyCode = []; %#ok<NASGU>
13+
14+
[~, keyCode] = KbPressWait(-1);
15+
16+
if strcmp(KbName(keyCode), cfg.triggerKey)
17+
18+
triggerCounter = triggerCounter + 1 ;
19+
20+
msg = sprintf(' Trigger %i', triggerCounter);
21+
talkToMe(cfg, msg)
22+
23+
pauseBetweenTriggers(cfg)
24+
25+
end
26+
end
27+
end
28+
end
29+
30+
31+
function talkToMe(cfg, msg)
32+
33+
fprintf([msg , ' \n']);
34+
35+
if isfield(cfg, 'win')
36+
37+
DrawFormattedText(cfg.win, msg,...
38+
'center', 'center', cfg.textColor);
39+
40+
Screen('Flip', cfg.win);
41+
42+
end
43+
44+
end
45+
46+
47+
function pauseBetweenTriggers(cfg)
48+
% we pause between triggers for half a repetition time or 500 ms if no RT
49+
% is specified.
50+
% we do this otherwise KbWait and KbPressWait might be too fast and could
51+
% catch several triggers in one go.
52+
53+
if isfield(cfg, 'repetitionTime')
54+
waitTime = cgf.repetitionTime / 2;
55+
else
56+
waitTime = .5;
57+
end
58+
59+
WaitSecs(waitTime);
60+
61+
end

0 commit comments

Comments
 (0)