刷新GUI图并在刷新期间考虑GUI修改(文本,编辑,弹出uic​​ontrol)

时间:2016-05-30 11:59:47

标签: matlab matlab-figure matlab-guide

我今天来到这里因为我在Matlab 2007b(带GUIDE)上开发了一个GUI,我在其中控制了一些电子设备(示波器,函数发生器=>频率,时基,触发器,很多东西),在这一个我在示波器屏幕上显示曲线,以便在我的GUI上用斧头显示它们。示波器根据触发器刷新信号,我知道我的GUI不能做同样的事情(从触发周期开始,从示波器获取信号的时间相当长。)

我希望接下来的事情是:我打开我的GUI,启动一个无限循环,在其中我调用我的轴上的曲线刷新功能(因此从示波器获取信号,并更新轴)并刷新每次都有可能。但是,我希望用户也可以随时与我的GUI进行交互:更改发生器上信号的频率,更改示波器的时基等。不幸的是(但逻辑上),当我启动while循环时,我用我的GUI做不了什么。

有可能吗?与我的GUI交互并调用与用户交互的对象相关联的回调函数,其中有一个“后台”函数被执行?有关信息,我刷新图表,通过以太网链接从oscilloscopa获取数据。

可能是关于对象的BusyAction和Interruptible值?或者也许它只能用计时器?我从来没有做过这样的事情所以我在互联网上寻找信息,但似乎有点复杂。

只需一点建议就可以解锁我。我事先感谢你的帮助。

如果我没有提供足够的信息,请不要犹豫告诉我。

PS:这里有我的GUI和上面的轴的图像,其中有2条曲线我想每次刷新。

First tab of my GUI

1 个答案:

答案 0 :(得分:0)

实现此目的的唯一可靠方法是使用定时器定期轮询示波器并更新您的图。然后,当计时器未执行时,任何人都可以与GUI中的任何控件进行交互。

t = timer('TimerFcn', @checkOscilloscope, 'ExecutionMode', 'FixedRate', 'Period', 0.1);
start(t);

function checkOscilloscope(tmr, evnt)
    % Do your check of the oscilloscope here

    % Update plots

    % Force a redraw
    drawnow
end