Keep GUI functions running when opening an uigetfile Dialog?
조회 수: 3 (최근 30일)
이전 댓글 표시
I have made a GUI "Recording" which displays real time data from Simulink on several axes.
Within this GUI "Recording" I placed a pushbutton which opens another GUI "TrendFunction" where I can display a trend function. (E.g. the data over the last 2, 5 or 10 minutes)
Now, the problem is that within the "TrendFunction" I use uigetfile() to load data. But this causes my Simulink model and thereby the recording to stop. (Both the Simulink model and all axes in "Recording" do not continue/update) It seems that all functions are set on hold until the uigetfile() dialog is closed.
So the Question is:
Is there a way to avoid holding/pausing a Simulink model when opening an uigetfile dialog in a GUI?
댓글 수: 0
채택된 답변
Alfonso Nieto-Castanon
2015년 5월 20일
편집: Alfonso Nieto-Castanon
2015년 5월 20일
No, as far as I know uigetfile will create a modal window (see windowstyle) which will lock matlab interface until a selection is made (and the selected filename can be returned to your originating function/script). In order to avoid this you need a non-modal file selection routine. For example, you may want to create your own display showing the available data files, and create a callback function that will implement the desired trend display once the user has selected a file. For example something based on the following:
function TrendFunction(varargin)
files = dir('*.mat');
h_fig = figure;
h_dlg = uicontrol('style','listbox','units','norm','position',[.1 .1 .8 .8],'string',{files.name},'callback',@TrendFunction_selected);
% that is all, now return control to Matlab until a selection is made
end
function TrendFunction_selected(varargin)
% when a file selection is made:
files = get(gcbo,'string');
selected = get(gcbo,'value');
file = files{selected};
data = load(file);
% here the plotting functions
clf(gcbf);
h_ax = axes('parent',gcbf);
plot(h_ax, data.x, data.y);
end
You can make that prettier but that should give you an idea of the code flow...
추가 답변 (1개)
Thomas Koelen
2015년 5월 20일
편집: Thomas Koelen
2015년 5월 20일
Try calling a function that calls the uigetfile function, maybe this works but I'm not sure.
참고 항목
카테고리
Help Center 및 File Exchange에서 Schedule Model Components에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!