Changes
Jump to navigation
Jump to search
Line 68:
Line 68:
−
− <nowiki>
− ===================================================================================================
− 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
− </nowiki>
no edit summary
== Matlab Settings ==
== Matlab Settings ==
== Inquisit Settings ==
== Inquisit Settings ==
== E-Prime ==
== E-Prime ==