MATLAB - 在强制退出ctrl + c后销毁监听器

时间:2017-07-25 12:46:07

标签: matlab listener

我正在研究用于使用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

1 个答案:

答案 0 :(得分:0)

为了让您的代码能够优雅地响应 Ctrl + C ,请尝试将回调附加到ErrorOccurred eventstops the session

...

errListener = addlistener(s, 'ErrorOccurred', @(~, ~) stop(s));

s.startBackground();
wait(s);