Changes

Jump to navigation Jump to search
17,524 bytes added ,  10:20, 24 March 2014
no edit summary
Line 68: Line 68:     
== Matlab Settings ==
 
== Matlab Settings ==
 +
<div><br/></div><div><div>&nbsp;===================================================================================================</div><div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"><span style="color: rgb(4, 51, 255);">&nbsp;function</span>&nbsp;handle = serial_buttonbox_common(cmd,varargin)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% to initialize connection:</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% handle = serial_buttonbox('open',se)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;%&nbsp; &nbsp; settings (se):</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% &nbsp; &nbsp; &nbsp; define settings as a structure, i.e.:</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% &nbsp; &nbsp; &nbsp; se.Device&nbsp; &nbsp; = 'COM1';</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% &nbsp; &nbsp; &nbsp; se.BaudRate&nbsp; = 115200;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% &nbsp; &nbsp; &nbsp; se.DataBits&nbsp; = 8;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% &nbsp; &nbsp; &nbsp; se.StopBits&nbsp; = 1;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% &nbsp; &nbsp; &nbsp; se.Parity&nbsp; &nbsp; = 0;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% &nbsp; &nbsp; &nbsp; se.PTBPath &nbsp; = 'c:\MyToolboxes\PsychToolbox'</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;%</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% to close the connection:</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% serial_buttonbox('close',handle);</div>
 +
&nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);">&nbsp;persistent<span style="color: rgb(0, 0, 0);">&nbsp;old_hdl</span></div>
 +
&nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% set defaults</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;se.Device&nbsp; &nbsp; =&nbsp;<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;">&nbsp;se.BaudRate&nbsp; = 115200;</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;se.DataBits&nbsp; = 8;</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;se.StopBits&nbsp; = 1;</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;se.Parity&nbsp; &nbsp; = 0;</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);">&nbsp;se.PTBPath &nbsp; =&nbsp;</span>'c:\Pgrogram Files\PsychToolbox'<span style="color: rgb(0, 0, 0);">;</span></div>
 +
&nbsp;<br/>
 +
<div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"><span style="color: rgb(4, 51, 255);">&nbsp;if</span>&nbsp;nargin < 1</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp;&nbsp;cmd =&nbsp;<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);">&nbsp;end</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;"><span style="color: rgb(4, 51, 255);">&nbsp;if</span>&nbsp;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);">&nbsp;&nbsp;&nbsp;</span>% user overwrites default settings</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp;&nbsp;flds = fields(varargin{1});</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">for</span>&nbsp;n = 1 : numel(flds)</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;se.(flds{n}) = varargin{1}.(flds{n});</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp;&nbsp;<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);">&nbsp;end</div>
 +
&nbsp;<br/>
 +
 +
&nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);">&nbsp;switch<span style="color: rgb(0, 0, 0);">&nbsp;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);">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(4, 51, 255);">case</span><span style="color: rgb(0, 0, 0);">&nbsp;</span>'open'</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;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);">&nbsp; &nbsp; &nbsp;&nbsp;</span>% get handle to serial device</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;handle = open_buttonbox(se.Device);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<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);">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(4, 51, 255);">case</span><span style="color: rgb(0, 0, 0);">&nbsp;</span>'close'</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;handle = varargin{1};</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp; &nbsp; &nbsp;&nbsp;<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);">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(4, 51, 255);">case</span><span style="color: rgb(0, 0, 0);">&nbsp;</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);">&nbsp; &nbsp; &nbsp;&nbsp;</span>% read incoming data</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">if</span>&nbsp;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);">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;help&nbsp;</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);">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp; &nbsp; &nbsp;&nbsp;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);">&nbsp;&nbsp;&nbsp;</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);">&nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp; &nbsp; &nbsp;&nbsp;<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);">&nbsp;end</div>
 +
&nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">&nbsp;% only gets here when cmd = 'run'</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);">&nbsp;while<span style="color: rgb(0, 0, 0);">&nbsp;1&nbsp;&nbsp;</span></div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;</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;">&nbsp;&nbsp;&nbsp;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;">&nbsp;&nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">if</span>&nbsp;navailable</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;data = [];</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">while</span>&nbsp;navailable</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span>% read incoming data</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;[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;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">if</span>&nbsp;~isempty(err), disp(err);&nbsp;<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;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;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);">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</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;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">if</span>&nbsp;numel(data)>1</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">for</span>&nbsp;n = 1 : numel(data)</div><div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);">%&nbsp; &nbsp; &nbsp; &nbsp; disp(char(data(n)));</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp;&nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">end</span></div>
 +
&nbsp; &nbsp;<br/>
 +
 +
&nbsp; &nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(4, 51, 255);">&nbsp;end</span><span style="color: rgb(0, 0, 0);">&nbsp;</span>%while 1</div>
 +
&nbsp;<br/>
 +
<div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp;&nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">function</span>&nbsp;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);">&nbsp; &nbsp; &nbsp;&nbsp;</span>% open handle to serial device (mini buttonbox)</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;hdl = IOPort(<span style="color: rgb(178, 69, 243);">'OpenSerialPort'</span>,device,[<span style="color: rgb(178, 69, 243);">'BaudRate='</span>&nbsp;num2str(se.BaudRate)]);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">if</span>&nbsp;~isempty(old_hdl)</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;hdl = IOPort(<span style="color: rgb(178, 69, 243);">'OpenSerialPort'</span>,device,[<span style="color: rgb(178, 69, 243);">'BaudRate='</span>&nbsp;num2str(se.BaudRate)]);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp; &nbsp; &nbsp;&nbsp;old_hdl = hdl;</div>
 +
&nbsp;&nbsp; &nbsp; &nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(178, 69, 243);"><span style="color: rgb(0, 0, 0);">&nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp; &nbsp; &nbsp;&nbsp;tic</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">while</span>&nbsp;~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);">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span>% wait for welcome message device</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;<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;">&nbsp; &nbsp; &nbsp;&nbsp;pause(0.5);</div>
 +
&nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(37, 153, 45);"><span style="color: rgb(0, 0, 0);">&nbsp; &nbsp; &nbsp;&nbsp;</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);">&nbsp; &nbsp; &nbsp;&nbsp;</span>%IOPort('flush', hdl);</div><div style="color: rgb(0, 0, 0); margin: 0px; font-size: 9px; font-family: Courier;">&nbsp; &nbsp; &nbsp;&nbsp;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;">&nbsp;&nbsp;&nbsp;<span style="color: rgb(4, 51, 255);">end</span></div>
 +
&nbsp;<br/>
 +
<div style="margin: 0px; font-size: 9px; font-family: Courier; color: rgb(4, 51, 255);">&nbsp;end</div></div></div><div><br/></div>
    
== Inquisit Settings ==
 
== Inquisit Settings ==
    
== E-Prime ==
 
== E-Prime ==
Anonymous user

Navigation menu