目标
目标是使用应用程序同时运行使用应用程序设计器设计的两个功能。一般来说,有3个主要块
1( App1。应用程序包含1个状态按钮(例如,STOP button(和1个按钮(TASK(。
2( 功能第一任务。在引擎盖下,日期时间是在每次迭代时采样的。
3( 函数SecondTask。类似地,在引擎盖下,在每次迭代中都会对日期时间进行采样。
**对于可再现性,我们简化了采样数据时间的示例。
程序如下:;
函数FirstTask在App1开始/启动时执行。
然而,Function SecondTask仅在按下TASK按钮后执行。
按下STOP BUTTON后,Function FirstTask和Function SecondTask同时终止。
观察
有三点意见;
1( 函数FirstTask在App1开始/启动时按预期执行。
2( 按下TASK按钮后,功能SecondTask将按预期执行。
3( 尽管功能第一任务独立于按钮任务,但在按下按钮任务后,功能第一任务将停止。
我的问题是,如何处理3号观察。因为,我们要求Function FirstTask和Function SecondTask同时运行。
再现上述问题的代码是
1( app1上的代码。
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
FirstTask(app)
end
% Button pushed function: RunSecondTaskButton
function RunSecondTaskButtonPushed(app, event)
SecondTask(app)
end
end
2( 功能第一任务
function FirstTask(Gui)
initVar=1;
MaximumData=1000; % Maximum before we append further
FirstData=NaT(MaximumData,1); % Prelocate
while Gui.StopButton.Value==0 % Loop while button stop no click
FirstData(initVar)=datetime('now','Format','HH:mm:ss.SSS'); % add the time vector duration for each day
initVar=initVar+1;
pause(1)
end
end
3( 功能次要任务
function SecondTask(Gui)
initVar=1;
MaximumData=1000; % Maximum before we append further
SecondData=NaT(MaximumData,1); % Prelocate
while Gui.StopButton.Value==0 % Loop while button stop no click
SecondData(initVar)=datetime('now','Format','HH:mm:ss.SSS'); % add the time vector duration for each day
initVar=initVar+1;
pause(1)
end
end
完整的代码附在这个线程中。非常感谢您对此事的任何建议。
app.GraphTimer=timer;
app.GraphTimer.TimerFcn = @app.FirstTaskx;
app.GraphTimer.ExecutionMode = 'fixedRate';
在功能中,在应用程序设计器中
function FirstTaskx(app,~,~)
FirstTask(app)
end
对第二个任务重复同样的操作。