具有连续输出和不连续输入的Matlab数据采集

时间:2013-10-15 21:47:35

标签: matlab data-acquisition nidaqmx

我想使用Matlab的数据采集工具箱不断地将数据发送到设备(有点像外部循环一直运行),并在一段时间后从传感器收集数据预定的持续时间(数据采集)部分是内环)。连续输出部分正在工作,但我对输入没有好运。任何帮助将不胜感激。

Fs=10000; % Sampling Frequency
timetoacquire=10; % Acquisition time
ss=daq.createSession('ni');
ss.Rate=Fs;
ss.DurationInSeconds=timetoacquire;
ss.addAnalogOutputChannel('Dev1',0,'Voltage');%Voltage to run pump

ss.addAnalogInputChannel('Dev1',1,'Voltage'); %Voltage from AnalogInputChannel

load VoltageOld;
load TimeOld;
timevect=linspace(min(TimeOld),max(TimeOld),Fs*max(TimeOld));
voltagevect=pchip(TimeOld,VoltageOld,timevect)';%Output Voltage Waveform

lh = ss.addlistener('DataRequired', ...
    @(src,event) src.queueOutputData(voltagevect));
ss.IsContinuous=true;
ss.queueOutputData(voltagevect);
ss.startBackground();

llh = ss.addlistener('DataAvailable', @plotData);
ss.queueOutputData(voltagevect);
[Voltagedata,timeStamps,triggerTime] = ss.startForeground;

% ss.stop();
% delete(lh);

1 个答案:

答案 0 :(得分:0)

不幸的是,matlab越来越穷。关于基于会话的daq的文档非常令人难以置信,需要认真和深入地重新考虑。对我来说,它应该完全重写,它不会为开发人员提供任何信息。

您可以尝试为输入和输出设置两个单独的会话:sinput和soutput。它可能有用。