我正在研究用于使用NI设备进行温度采集的Matlab脚本。我使用一个监听器来运行一个回调函数来刷新我的图表。当我执行Ctrl + C时,主脚本会因以下错误而停止:“未定义的函数'wait'表示'event.listener'类型的输入参数。”。问题是侦听器仍然触发事件,因此我的图表会保持刷新。
我试图用try / catch捕获它,我使用onCleanup函数删除了监听器,但没有成功。
有人可以给我一些建议吗? :)
编辑:这是代码
s = daq.createSession('ni');
s.addAnalogInputChannel('cDAQ1Mod1', 0, 'Thermocouple');
s.Rate = 7;
s.DurationInSeconds = 5;
s.Channels.ThermocoupleType = 'T';
s.Channels.Units = 'Celsius';
lh = addlistener(s,'DataAvailable',@plotData);
ocu = onCleanup(@() delete(lh));
s.startBackground();
try
wait(s);
catch
delete(lh);
end
答案 0 :(得分:0)
为了让您的代码能够优雅地响应 Ctrl + C ,请尝试将回调附加到ErrorOccurred
event的stops the session:
...
errListener = addlistener(s, 'ErrorOccurred', @(~, ~) stop(s));
s.startBackground();
wait(s);