Я пытаюсь создать программу в Matlab, которая объединяет несколько протестированных, функционирующих графических интерфейсов, но у меня возникают некоторые проблемы.
В одной функции у меня есть:
global Status;
global value1;
Status = 'setup';
switch Status
case 'setup'
ADone = ASetup; %Calls setup function which should return a value when done
if strcmp(ADone, 'yes')==1
Status = 'Pos1';
end
case 'Pos1'
value1 = OHMgui1;
Status = 'Pos2';
case 'Pos2'
%Still work in progress
end
И в моя функция Asetup у меня есть:
function done = ASetup
AStatus = GUI1;
BStatus = GUI2();
CStatus = GUI3();
DStatus = GUI4();
%Up until here everything goes as intended
Refstatus = RefGUI();
done = 'yes'; %Returns value when finished
disp (done) %Check statement, does not execute, error happens somewhere before here
end
GUI 1-4 в основном просто отображать опорные изображения с помощью кнопки OK, чтобы закрыть их, и я управляю ими с помощью uiwait (), и они устанавливают возвращаемое значение, когда Нажата кнопка ОК (чтобы убедиться, что один не сработает, пока предыдущий не будет закрыт). Это работает точно так, как я хотел бы.
Однако для Ref GUI я создал его с помощью кнопок продолжения и закрытия. Я хочу, чтобы пользователь мог нажать «Продолжить» и продолжить выполнение программы, пока Ref GUI остается открытым. В идеале это может привести к вызову OHMGUI1, но, похоже, он даже не отображает оператор проверки.
Я подозреваю, что ошибка в Ref GUI, который открывается в нужное время, но я не могу получить ничего, что происходит после нажатия кнопок продолжения или закрытия (за исключением закрытия GUI без программа продолжается). Его код:
function varargout = RefGUI(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @ClampRef_OpeningFcn, ...
'gui_OutputFcn', @ClampRef_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function RefGUI_OpeningFcn(hObject, eventdata, handles, varargin)
matlabImage = imread('C:...reference.jpg');
image(matlabImage)
axis off
axis image
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
set(handles.pushbutton2,'enable','off') %Disable close button until continue is pressed
function varargout = RefGUI_OutputFcn(hObject, eventdata, handles)
uiwait();
global valueout;
varargout{1} = valueout;
%I have also tried disabling the above 3 lines with no difference.
function pushbutton1_Callback(hObject, eventdata, handles)
global valueout;
valueout = 'Finished';
set(handles.pushbutton2,'enable','on') %enable close button
set(handles.pushbutton1,'enable','off') %disable continue button
return
function pushbutton2_Callback(hObject, eventdata, handles)
closereq(); %close button closes GUI window
Что я могу сделать, чтобы программа продолжала работать как положено?