我今天来这里是因为我要在Matlab2007b上开发一个图形用户界面(带向导),其中我控制了一些电子设备(示波器、功能发生器=>频率、时差、触发器等等),在这个界面中,我在示波器屏幕上得到了曲线显示,并将它们显示在我的图形用户界面上。示波器根据触发器刷新信号,我知道我不能在GUI上做同样的事情(从示波器获取信号的时间比触发周期要长)。
我希望接下来的事情是:我打开我的GUI,启动一个无限的What循环,在这个循环中,我调用在我的轴上刷新我的曲线的函数(所以从示波器获取信号,并更新斧头)并且每次刷新都是可能的。但是,我也希望用户能够始终与我的GUI交互:改变发生器上信号的频率,改变示波器的时间基等等。不幸的是(但逻辑上),当我启动我的while循环时,我不能再用我的GUI做任何事情了。
有可能做到吗?与我的GUI交互,并调用与用户交互的对象相关的回调函数,哪里有执行的“后台”函数?为了获得信息,我刷新了我的图表,通过以太网链接从示波器获取数据。
也许是关于对象的BusyAction和可中断值?或者也许只有计时器才有可能?我以前从来没有做过这样的事情,所以我在网上寻找信息,但这似乎有点复杂。
只要一点建议就能解锁我。我预先感谢你的帮助。
如果我没有给出足够的信息,就毫不犹豫地告诉我。
PS:这里有我的图形用户界面和斧头,在上面有2条曲线,我想刷新一次是可能的。
GUI的第一个选项卡
发布于 2016-05-30 13:30:47
要做到这一点,唯一可靠的方法是使用计时器定期轮询示波器和更新您的情节。然后,当计时器不执行时,任何人都可以与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
endhttps://stackoverflow.com/questions/37525155
复制相似问题