Matlab更新定时器外的变量

时间:2015-04-27 12:58:42

标签: matlab user-interface timer

我正在努力寻找这个Timer问题的简单解决方案。 我希望计时器更新整个工作区,以便我可以重新使用更新的值在GUI上显示。

这是Matlab计时器,

handles.server_timer = timer('TimerFcn',@timer_server,'UserData',handles);
start(handles.server_timer);

它调用函数timer_server.m(下):

function timer_server(obj,~)

    handles=obj.UserData;  % Get User Timer input data

    % GET DATA & GENERATE/UPDATE OBJECT
    [handles.SERVER,handles.CLIENT,handles.OBJ] = Lib_Zig.zigREAD(handles.SERVER,handles.CLIENT,handles.OBJ );

    obj.UserData=handles; % Set User Timer output data

end

目前,TIMER内部的句柄正在更新,但不在WORKSPACE中更新,因此在GUI的其余部分中无法访问/保存更新的HANDLES。

我可以使用GLOBAL VARIABLE,但据我所知,它效率不高,可能会减慢程序速度。

我还可以从计时器内部更新GUI,但我认为拥有2个计时器会更有意义。一个用于处理网络数据流,另一个用于处理GUI界面。

是否有人知道如何让计时器在每个时间段内更新整个WORKSPACE中的HANDLES?

感谢您的帮助: - )

1 个答案:

答案 0 :(得分:0)

我不会在我的GUI中使用句柄和guidata,所以我可能在这里错了 - 但我怀疑你错过了对guidata的调用:

guidata ( uiObject, handles )

这需要确保在核心图中更新句柄 - >所以所有回调等都可以拿起来。