|
|
| Line 68: |
Line 68: |
|
| |
|
| == Matlab Settings == | | == Matlab Settings == |
| <div><br/></div><div><div> ===================================================================================================</div><div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"><span style="color: rgb(4, 51, 255);"> function</span> handle = serial_buttonbox_common(cmd,varargin)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % to initialize connection:</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % handle = serial_buttonbox('open',se)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % settings (se):</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % define settings as a structure, i.e.:</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % se.Device = 'COM1';</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % se.BaudRate = 115200;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % se.DataBits = 8;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % se.StopBits = 1;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % se.Parity = 0;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % se.PTBPath = 'c:\MyToolboxes\PsychToolbox'</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> %</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % to close the connection:</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % serial_buttonbox('close',handle);</div>
| |
| <br/>
| |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"> persistent<span style="color: rgb(0, 0, 0);"> old_hdl</span></div>
| |
| <br/>
| |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % set defaults</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> se.Device = <span style="color: rgb(178, 69, 243);">'COM1'</span>;</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> se.BaudRate = 115200;</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> se.DataBits = 8;</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> se.StopBits = 1;</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> se.Parity = 0;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> se.PTBPath = </span>'c:\Pgrogram Files\PsychToolbox'<span style="color: rgb(0, 0, 0);">;</span></div>
| |
| <br/>
| |
| <div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"><span style="color: rgb(4, 51, 255);"> if</span> nargin < 1</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> cmd = <span style="color: rgb(178, 69, 243);">'open'</span>;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"> end</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"><span style="color: rgb(4, 51, 255);"> if</span> nargin > 1</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% user overwrites default settings</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> flds = fields(varargin{1});</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">for</span> n = 1 : numel(flds)</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> se.(flds{n}) = varargin{1}.(flds{n});</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"> end</div>
| |
| <br/>
| |
|
| |
|
| <br/>
| | <nowiki> |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"> switch<span style="color: rgb(0, 0, 0);"> cmd</span></div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(4, 51, 255);">case</span><span style="color: rgb(0, 0, 0);"> </span>'open'</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> addpath(genpath(se.PTBPath));</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% get handle to serial device</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> handle = open_buttonbox(se.Device);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">return</span></div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(4, 51, 255);">case</span><span style="color: rgb(0, 0, 0);"> </span>'close'</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> handle = varargin{1};</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> IOPort(<span style="color: rgb(178, 69, 243);">'close'</span>,handle);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">return</span></div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(4, 51, 255);">case</span><span style="color: rgb(0, 0, 0);"> </span>'run'</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% read incoming data</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">if</span> isempty(old_hdl)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> help </span>serial_buttonbox_common</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> error(</span>'Buttonbox not yet initialized'<span style="color: rgb(0, 0, 0);">);</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> handle = old_hdl;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"><span style="color: rgb(0, 0, 0);"> </span>otherwise</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> fprintf(</span>'Unknown option %s\n'<span style="color: rgb(0, 0, 0);">,cmd);</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">return</span></div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"> end</div>
| | =================================================================================================== |
| <br/>
| | function handle = serial_buttonbox_common(cmd,varargin) |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"> % only gets here when cmd = 'run'</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"> while<span style="color: rgb(0, 0, 0);"> 1 </span></div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% start polling for characters (indicating start of scan)</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> navailable = IOPort(<span style="color: rgb(178, 69, 243);">'BytesAvailable'</span>, handle);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">if</span> navailable</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> data = [];</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">while</span> navailable</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% read incoming data</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> [newdata, ~, err] = IOPort(<span style="color: rgb(178, 69, 243);">'Read'</span>, handle, 0, navailable);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">if</span> ~isempty(err), disp(err); <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> data = [data newdata];</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>%pause(0.001); % if possible just add a small pause to not claim entire core</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> navailable = IOPort(<span style="color: rgb(178, 69, 243);">'BytesAvailable'</span>, handle);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">if</span> numel(data)>1</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> fprintf(<span style="color: rgb(178, 69, 243);">'\nReceived characters: %d\n'</span>,numel(data));</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">for</span> n = 1 : numel(data)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">% disp(char(data(n)));</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> fprintf(<span style="color: rgb(178, 69, 243);">'incoming: %d\t%s\n'</span>,data(n),char(data(n)));</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div>
| | % to initialize connection: |
| <br/>
| | % handle = serial_buttonbox('open',se) |
| | | % settings (se): |
| <br/>
| | % define settings as a structure, i.e.: |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(4, 51, 255);"> end</span><span style="color: rgb(0, 0, 0);"> </span>%while 1</div>
| | % se.Device = 'COM1'; |
| <br/>
| | % se.BaudRate = 115200; |
| <div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">function</span> hdl = open_buttonbox(device)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% open handle to serial device (mini buttonbox)</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">try</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> hdl = IOPort(<span style="color: rgb(178, 69, 243);">'OpenSerialPort'</span>,device,[<span style="color: rgb(178, 69, 243);">'BaudRate='</span> num2str(se.BaudRate)]);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">catch</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">if</span> ~isempty(old_hdl)</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> IOPort(<span style="color: rgb(178, 69, 243);">'close'</span>,old_hdl);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> hdl = IOPort(<span style="color: rgb(178, 69, 243);">'OpenSerialPort'</span>,device,[<span style="color: rgb(178, 69, 243);">'BaudRate='</span> num2str(se.BaudRate)]);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> old_hdl = hdl;</div>
| | % se.DataBits = 8; |
| <br/>
| | % se.StopBits = 1; |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);"> fprintf(</span>'Wait for device buttonbox....\n'<span style="color: rgb(0, 0, 0);">);</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> tic</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">while</span> ~IOPort(<span style="color: rgb(178, 69, 243);">'BytesAvailable'</span>, hdl) && toc<10</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% wait for welcome message device</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> pause(0.5);</div>
| | % se.Parity = 0; |
| <br/>
| | % se.PTBPath = 'c:\MyToolboxes\PsychToolbox' |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>% clear buffer</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);"> </span>%IOPort('flush', hdl);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> IOPort(<span style="color: rgb(178, 69, 243);">'purge'</span>, hdl);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"> <span style="color: rgb(4, 51, 255);">end</span></div>
| | % |
| <br/>
| | % to close the connection: |
| <div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);"> end</div></div></div><div><br/></div>
| | % serial_buttonbox('close',handle); |
| | |
| | persistent old_hdl |
| | |
| | % set defaults |
| | se.Device = 'COM1'; |
| | se.BaudRate = 115200; |
| | se.DataBits = 8; |
| | se.StopBits = 1; |
| | se.Parity = 0; |
| | se.PTBPath = 'c:\Pgrogram Files\PsychToolbox'; |
| | |
| | if nargin < 1 |
| | cmd = 'open'; |
| | end |
| | if nargin > 1 |
| | % user overwrites default settings |
| | flds = fields(varargin{1}); |
| | for n = 1 : numel(flds) |
| | se.(flds{n}) = varargin{1}.(flds{n}); |
| | end |
| | end |
| | |
| | |
| | switch cmd |
| | case 'open' |
| | addpath(genpath(se.PTBPath)); |
| | % get handle to serial device |
| | handle = open_buttonbox(se.Device); |
| | return |
| | case 'close' |
| | handle = varargin{1}; |
| | IOPort('close',handle); |
| | return |
| | case 'run' |
| | % read incoming data |
| | if isempty(old_hdl) |
| | help serial_buttonbox_common |
| | error('Buttonbox not yet initialized'); |
| | end |
| | handle = old_hdl; |
| | otherwise |
| | fprintf('Unknown option %s\n',cmd); |
| | return |
| | end |
| | |
| | % only gets here when cmd = 'run' |
| | while 1 |
| | % start polling for characters (indicating start of scan) |
| | navailable = IOPort('BytesAvailable', handle); |
| | if navailable |
| | data = []; |
| | while navailable |
| | % read incoming data |
| | [newdata, ~, err] = IOPort('Read', handle, 0, navailable); |
| | if ~isempty(err), disp(err); end |
| | data = [data newdata]; |
| | %pause(0.001); % if possible just add a small pause to not claim entire core |
| | navailable = IOPort('BytesAvailable', handle); |
| | end |
| | if numel(data)>1 |
| | fprintf('\nReceived characters: %d\n',numel(data)); |
| | end |
| | for n = 1 : numel(data) |
| | % disp(char(data(n))); |
| | fprintf('incoming: %d\t%s\n',data(n),char(data(n))); |
| | end |
| | end |
| | |
| | |
| | end %while 1 |
| | |
| | function hdl = open_buttonbox(device) |
| | % open handle to serial device (mini buttonbox) |
| | try |
| | hdl = IOPort('OpenSerialPort',device,['BaudRate=' num2str(se.BaudRate)]); |
| | catch |
| | if ~isempty(old_hdl) |
| | IOPort('close',old_hdl); |
| | end |
| | hdl = IOPort('OpenSerialPort',device,['BaudRate=' num2str(se.BaudRate)]); |
| | end |
| | old_hdl = hdl; |
| | |
| | fprintf('Wait for device buttonbox....\n'); |
| | tic |
| | while ~IOPort('BytesAvailable', hdl) && toc<10 |
| | % wait for welcome message device |
| | end |
| | pause(0.5); |
| | |
| | % clear buffer |
| | %IOPort('flush', hdl); |
| | IOPort('purge', hdl); |
| | end |
| | |
| | end |
| | </nowiki> |
|
| |
|
| == Inquisit Settings == | | == Inquisit Settings == |
|
| |
|
| == E-Prime == | | == E-Prime == |
General
Hardware
E-Prime "Serial Response Box"
Revisions
Revision 1
Revision 3
Revision 4
Presentation Settings
Psychopy Settings
#!/usr/bin/env python
from psychopy import core, visual, event from rusocsci import buttonbox import logging, time
##Setup Section
#logging.getLogger().setLevel(logging.DEBUG) # use this for debug info
win = visual.Window([400,300], monitor="testMonitor") bb = buttonbox.Buttonbox()
##Experiment Section
b = bb.waitButtons(maxWait = 10.0, buttonList=['A']) print("b: {}".format(b))
##Cleanup Section
core.quit() The following script lights the LEDs under the buttons pressed.
#!/usr/bin/env python
#from __future__ import print_function
import logging, time, sys from rusocsci import buttonbox
##Setup Section
led = [False]*8
##Experiment Section
bb = buttonbox.Buttonbox() while True:
buttons = bb.getButtons()
if len(buttons):
for c in buttons:
if ord(c) >= ord('a') and ord(c) < ord('a')+8:
led[ord(c) - ord('a')] = False
elif ord(c) >= ord('A') and ord(c) < ord('A')+8:
led[ord(c) - ord('A')] = True
bb.setLeds(led)
#print("buttons ({:3d}): {}{}".format(len(buttons), buttons, " "*50), end="\r")
#sys.stdout.flush()
Matlab Settings
===================================================================================================
function handle = serial_buttonbox_common(cmd,varargin)
% to initialize connection:
% handle = serial_buttonbox('open',se)
% settings (se):
% define settings as a structure, i.e.:
% se.Device = 'COM1';
% se.BaudRate = 115200;
% se.DataBits = 8;
% se.StopBits = 1;
% se.Parity = 0;
% se.PTBPath = 'c:\MyToolboxes\PsychToolbox'
%
% to close the connection:
% serial_buttonbox('close',handle);
persistent old_hdl
% set defaults
se.Device = 'COM1';
se.BaudRate = 115200;
se.DataBits = 8;
se.StopBits = 1;
se.Parity = 0;
se.PTBPath = 'c:\Pgrogram Files\PsychToolbox';
if nargin < 1
cmd = 'open';
end
if nargin > 1
% user overwrites default settings
flds = fields(varargin{1});
for n = 1 : numel(flds)
se.(flds{n}) = varargin{1}.(flds{n});
end
end
switch cmd
case 'open'
addpath(genpath(se.PTBPath));
% get handle to serial device
handle = open_buttonbox(se.Device);
return
case 'close'
handle = varargin{1};
IOPort('close',handle);
return
case 'run'
% read incoming data
if isempty(old_hdl)
help serial_buttonbox_common
error('Buttonbox not yet initialized');
end
handle = old_hdl;
otherwise
fprintf('Unknown option %s\n',cmd);
return
end
% only gets here when cmd = 'run'
while 1
% start polling for characters (indicating start of scan)
navailable = IOPort('BytesAvailable', handle);
if navailable
data = [];
while navailable
% read incoming data
[newdata, ~, err] = IOPort('Read', handle, 0, navailable);
if ~isempty(err), disp(err); end
data = [data newdata];
%pause(0.001); % if possible just add a small pause to not claim entire core
navailable = IOPort('BytesAvailable', handle);
end
if numel(data)>1
fprintf('\nReceived characters: %d\n',numel(data));
end
for n = 1 : numel(data)
% disp(char(data(n)));
fprintf('incoming: %d\t%s\n',data(n),char(data(n)));
end
end
end %while 1
function hdl = open_buttonbox(device)
% open handle to serial device (mini buttonbox)
try
hdl = IOPort('OpenSerialPort',device,['BaudRate=' num2str(se.BaudRate)]);
catch
if ~isempty(old_hdl)
IOPort('close',old_hdl);
end
hdl = IOPort('OpenSerialPort',device,['BaudRate=' num2str(se.BaudRate)]);
end
old_hdl = hdl;
fprintf('Wait for device buttonbox....\n');
tic
while ~IOPort('BytesAvailable', hdl) && toc<10
% wait for welcome message device
end
pause(0.5);
% clear buffer
%IOPort('flush', hdl);
IOPort('purge', hdl);
end
end
Inquisit Settings
E-Prime