无法在应用程序设计器MATLAB下同时运行两个函数



目标

目标是使用应用程序同时运行使用应用程序设计器设计的两个功能。一般来说,有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

对第二个任务重复同样的操作。

相关内容

  • 没有找到相关文章

最新更新