我最近刚刚开始使用 MATLAB 从数据采集板上采集数据,并且需要一个函数来连续采集数据(即直到我 ctrl^C 退出该函数)。为此,我在 32 位 Windows 操作系统上使用数据采集工具箱。
根据 matlab 帮助中的文档和本网站上的一些答案,我发现在向输入句柄添加通道后,我应该:
- 将我的“SamplesPerTrigger”设置为 Inf
- 将“TimerPeriod”设置为某个值以触发“TimerFcn”
- 将“TimerFcn”设置为一些子函数回调,它将数据附加到持久变量
这是正确的方法吗?
我的代码如下:
function acquire_arena_test(samprate,daq_device ,device_ID ,channels, saveroot)
setup.SampleRate = samprate;
setup.DAQdevice = {daq_device, device_ID};
setup.AIChannels = channels;
setup.SaveRoot = {saveroot};
ai = analoginput(setup.DAQdevice{1},setup.DAQdevice{2});
addchannel(ai,[setup.AIChannels]);
set(ai,'SamplesPerTrigger',Inf);
set(ai,'TimerPeriod',0.5);
set(ai,'TimerFcn',{@AcquireData,ai});
start(ai);
while(strcmpi(get(ai,'Running'),'On'))
pause(1)
end
stop(ai);
time = datestr(now,30);
save([saveroot time], 'data');
delete(ai);
clear ai;
function AcquireData(hObject, ~)
persistent totalData;
data = getdata(hObject);
if isempty(totalData)
totalData =data;
else
totalData = [totalData; data];
end
初始模拟输入肯定工作正常。我尝试了许多将 AcquireData 回调提供给“TimerFcn”的排列方式。我收到的错误是
`??? 错误使用 ==> acquire_arena_test>AcquireData 输入参数太多。
警告: TimerFcn 回调被禁用。要启用回调,请设置 TimerFcn 属性。`
提前感谢您的帮助。