无法 运行 在 App Designer MATLAB 下同时运行两个函数
Unable to run two function simultanously under App Designer MATLAB
Objective
objective 是运行 两个功能同时使用应用程序设计的应用程序。
一般来说,主要有3个区块
1) 应用程序 1。这些应用程序包含 1 个状态按钮(例如,STOP BUTTON)和 1 个按钮(TASK)。
2) 函数 FirstTask。在幕后,每次迭代都会对日期时间进行采样。
3) 函数 SecondTask。同样,在幕后,每次迭代都会对日期时间进行采样。
** 为了再现性,我们简化了采样数据时间的例子。
流程如下;
函数FirstTask在App1的beginning/startup执行。
而函数 SecondTask 仅在按下按钮 TASK 后执行。
FirstTask 和 Function SecondTask 在按下停止按钮后同时终止。
观察结果
进行了三项观察;
1) 函数 FirstTask 在 App1 的 beginning/startup 按预期执行。
2) 函数 SecondTask 在按下按钮 TASK 后按预期执行。
3) 函数 FirstTask 在按钮 TASK 被按下后停止,尽管它独立于按钮 TASK。
我的问题是,如何处理第 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) 函数 FirstTask
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) 函数 SecondTask
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
对第二个任务重复相同的操作。
Objective
objective 是运行 两个功能同时使用应用程序设计的应用程序。 一般来说,主要有3个区块
1) 应用程序 1。这些应用程序包含 1 个状态按钮(例如,STOP BUTTON)和 1 个按钮(TASK)。
2) 函数 FirstTask。在幕后,每次迭代都会对日期时间进行采样。
3) 函数 SecondTask。同样,在幕后,每次迭代都会对日期时间进行采样。
** 为了再现性,我们简化了采样数据时间的例子。
流程如下;
函数FirstTask在App1的beginning/startup执行。
而函数 SecondTask 仅在按下按钮 TASK 后执行。
FirstTask 和 Function SecondTask 在按下停止按钮后同时终止。
观察结果
进行了三项观察;
1) 函数 FirstTask 在 App1 的 beginning/startup 按预期执行。
2) 函数 SecondTask 在按下按钮 TASK 后按预期执行。
3) 函数 FirstTask 在按钮 TASK 被按下后停止,尽管它独立于按钮 TASK。
我的问题是,如何处理第 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) 函数 FirstTask
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) 函数 SecondTask
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
对第二个任务重复相同的操作。