刷新 GUI 图形并在刷新期间考虑 GUI 修改(文本、编辑、弹出 uicontrol)
Refresh GUI graphs and take account of GUI modifications during the refresh (text, edit, popup uicontrol)
我今天来这里是因为我正在 Matlab 2007b(带 GUIDE)上开发一个 GUI,我在其中控制一些电子设备(示波器、函数发生器 => 频率、时基、触发器,很多东西),在这个一个是我在示波器屏幕上显示曲线,然后将它们显示在斧头上的 GUI 上。示波器根据触发刷新信号,我知道我不能在我的 GUI 上做同样的事情(与触发周期相比,从示波器获取信号的时间相当长)。
我想要的是接下来的事情:我打开我的 GUI,启动一个无限的 while 循环,我在其中调用函数来刷新我的轴上的曲线(所以从示波器获取信号,并更新轴)每次刷新都是可能的。但是,我还希望用户始终可以与我的 GUI 交互:更改发生器上信号的频率,更改示波器的时基等。不幸的是(但逻辑上),当我启动我的 while 循环时,我无法用我的 GUI 做更多事情。
可以吗?与我的 GUI 交互并调用与用户交互的对象关联的回调函数,而有一个 "background" 函数被执行?有关信息,我刷新了我的图表,通过以太网从示波器获取数据 link。
可能是关于对象的BusyAction和Interruptible值?或者也许只有计时器才有可能?我从来没有做过这样的事情,所以我在网上找了资料,但似乎有点复杂。
只要一点建议就可以解锁我。预先感谢您的帮助。
如果我没有提供足够的信息,请不要犹豫告诉我。
PS: 这里有一张我的图形用户界面的图像,上面的斧头有2条曲线我想每次都刷新是可能的。
完成此操作的唯一可靠方法是使用计时器定期轮询示波器并更新您的绘图。然后,当计时器不执行时,任何人都可以与 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
我今天来这里是因为我正在 Matlab 2007b(带 GUIDE)上开发一个 GUI,我在其中控制一些电子设备(示波器、函数发生器 => 频率、时基、触发器,很多东西),在这个一个是我在示波器屏幕上显示曲线,然后将它们显示在斧头上的 GUI 上。示波器根据触发刷新信号,我知道我不能在我的 GUI 上做同样的事情(与触发周期相比,从示波器获取信号的时间相当长)。
我想要的是接下来的事情:我打开我的 GUI,启动一个无限的 while 循环,我在其中调用函数来刷新我的轴上的曲线(所以从示波器获取信号,并更新轴)每次刷新都是可能的。但是,我还希望用户始终可以与我的 GUI 交互:更改发生器上信号的频率,更改示波器的时基等。不幸的是(但逻辑上),当我启动我的 while 循环时,我无法用我的 GUI 做更多事情。
可以吗?与我的 GUI 交互并调用与用户交互的对象关联的回调函数,而有一个 "background" 函数被执行?有关信息,我刷新了我的图表,通过以太网从示波器获取数据 link。
可能是关于对象的BusyAction和Interruptible值?或者也许只有计时器才有可能?我从来没有做过这样的事情,所以我在网上找了资料,但似乎有点复杂。
只要一点建议就可以解锁我。预先感谢您的帮助。
如果我没有提供足够的信息,请不要犹豫告诉我。
PS: 这里有一张我的图形用户界面的图像,上面的斧头有2条曲线我想每次都刷新是可能的。
完成此操作的唯一可靠方法是使用计时器定期轮询示波器并更新您的绘图。然后,当计时器不执行时,任何人都可以与 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