Skip to content

Instantly share code, notes, and snippets.

@Hio-Been
Created November 10, 2020 11:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Hio-Been/5d113bad4d1a97f3ac39f30912bc9c18 to your computer and use it in GitHub Desktop.
Save Hio-Been/5d113bad4d1a97f3ac39f30912bc9c18 to your computer and use it in GitHub Desktop.
Sample MATLAB script for real-time NI-DAQ data streaming (read only)
acqDuration = 60*5;
fprintf('\nInitiating DAQ recording.. Max duration: [%03d minutes]\n', acqDuration);
samplingRate = 2000;
%% (1) Get DAQ
warning off;
nSmooth = 180; % for visualization
try; DAQs.in.session.stop; release( DAQs.in.session ); end
%% (2) DAQ INIT
try, DAQs.in.session.reset; end
DAQs = []; DAQs.in = [];
dev = daq.getDevices;
DAQs.in.devices = {dev(1).ID, dev(2).ID dev(3).ID};
clear global; clear tempData; clear result;
tempData = [];
global tempData
DAQs.in.params.samplingRate = samplingRate;
DAQs.in.session = daq.createSession('ni');
DAQs.in.session.DurationInSeconds = acqDuration;
DAQs.in.session.Rate = DAQs.in.params.samplingRate;
DAQs.in.params.acqDuration = acqDuration;
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{1},'ai0','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{1},'ai1','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{1},'ai2','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{1},'ai3','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{2},'ai0','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{2},'ai1','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{2},'ai2','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{2},'ai3','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{3},'ai0','Voltage');
addAnalogInputChannel(DAQs.in.session,DAQs.in.devices{3},'ai1','Voltage');
DAQs.in.listner.handle = DAQs.in.session.addlistener('DataAvailable',@getData);
DAQs.in.listner.channelList = [ 1 2 3 4 5 6 7 8 9 10 ];
scale=.5;
%% (3) Start Recording
try, DAQs.in.session.stop; release( DAQs.in.session ); end
DAQs.in.session.startBackground;
disp(sprintf('Recording started!'));
%% (4) Display datasize (Change this part)
for ij =1:10
pause(1)
size(tempData)
end
%% function getData
function getData(src,event)
global tempData;
if (isempty(tempData)), tempData = []; end
tempData = [tempData; event.Data];
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment