matlab appdesigner受限于传统的单线程操作,无法进行后台操作,为解决这种问题,timer定时器中断较好的解决了这个问题。
具体流程:
1、启动函数startupFun中设定定时器参数
function startupFcn(app)
t = timer;%定义定时器
t.StartDelay = 0.01; % 开启的延时生效时间
t.Period = 1.0;% 周期
t.ExecutionMode = 'fixedSpacing';%定时器工作模式
t.TimerFcn = @(~, ~) timer_handler1(app);%中断函数句柄,放置自己需要的程序
app.Timer_t1=t;%保存定时器句柄为全局变量
end
2、设定中断回调函数
function timer_handler1(app)
%执行定时器任务
disp(‘1’);每中断一次显示数字1
end
3、开启中断后台操作(以按钮为例)
function ButtonPushed(app, event)
t=app.Timer_t1;
start(t);开启中断计时
end
4、关闭中断结束后台操作(以按钮为例)
function Button_1Pushed(app, event)
t=app.Timer_t1;
stop(t);关闭中断计时
end
如果有需要可删除中断句柄
delete(s);
该方法可实现appdesigner 定时执行后台的程序即定时器中断回调函数,而不影响当前appdesigner的主堆栈程序。
有设计需求可私信我