Joh*_*ohn 4 matlab user-interface multithreading timer
我有一个MATLAB GUI和一个将数据写入文件的独立应用程序.我希望我的MATLAB GUI定期检查文件,并在更改时更新GUI.
在Java中,我使用SwingUtils.Timer(sp?)对象来做这样的事情.MATLAB有定时器功能吗?我可以编写一个java类并且我想这样做,但是想要一个快速和脏的演示,最好是纯MATLAB.
gno*_*ice 11
您可以使用TIMER函数在MATLAB中创建计时器对象.例如,这会创建一个计时器对象,它应该在计时器启动后每10秒执行一次myFcn函数:
timerObject = timer('TimerFcn',@myFcn,'ExecutionMode','fixedRate',...
'Period',10.0);
Run Code Online (Sandbox Code Playgroud)
使用START和STOP功能启动和停止定时器.您应该始终记得在使用DELETE后删除它们.您可以在MATLAB文档中找到有关使用计时器的更多信息.
值得注意的是,如果您想要在GUIDE GUI中更新轴对象,则需要额外的"技巧"才能使其工作.您必须在GUIDE中更改axes对象的HandleVisibility属性,或者必须显式获取句柄.为此,请按如下所示更改timerObject构造(假设GUIDE生成的GUI中的轴窗口称为axes1):
timerData.axes = handles.axes1;
timerData.n = 1; % some state needed for the plots.
timerObject = timer('TimerFcn',@myFcn,...
'ExecutionMode','fixedRate',...
'Period',10.0,...
'UserData', timerData);
Run Code Online (Sandbox Code Playgroud)
然后myFcn,我们需要引用轴对象.特别:
function [] = myFcn(timerObj, event)
timerData = get(timerObj, 'UserData');
plot(timerData.axes, (1:n)/n, sin(20*2*pi*(1:n)/n));
line( (1:n)/n, cos(20*2*pi*(1:n)/n, 'Parent', timerData.axes);
timerData.n = timerData.n + 1;
set(timerObj, 'UserData', timerData);
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6184 次 |
| 最近记录: |