Verfasst am: 13.08.2017, 17:18
Titel: Auf Wert aus anderer Matlab-Datei zugreifen
Hallo,
ich habe ein Hauptprogramm, sowie eine GUI-Programm.
Im GUI Programm wird ein Wert bearbeitet, welcher nach dem Schließen des GUI-Programms verschwindet. Jedoch möchte ich damit weiter arbeiten im Hauptproblem.
Was ist der einfachste Weg das zu realisieren?
Danke im Voraus.
die einfachste Lösung wäre es die Variable, mit der du weiterarbeiten willst, in der OutputFcn des GuiProgramms, beim Schließen des GuiProgramms, heraus zu schreiben. Öffnest du die Gui über dein Hauptprogramm?
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.08.2017, 22:27
Titel: Rückfrage: Wert aus GUI in Hauptprogram
Danke für die Rückmeldung.
Das GUI-Programm wird durch das Hauptprogramm gestartet.
Leider klappt dieser Ansatz nicht.
Hier die Teile vom Code.
Code im GUI:
Code:
functionvarargout = MapAuswahl_OutputFcn(hObject, eventdata, handles, mapWahl) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = mapWahl;
Verfasst am: 14.08.2017, 09:30
Titel: Rückfrage: Wert aus GUI in Hauptprogram
Hallo,
Danke für die Rückmeldung.
Leider funktioniert das nicht ganz, wie ich möchte.
Nachdem z.B. handles.mapWahl = 1 ist in der CallBack-Funktion, verliert es wieder seinen Wert, wenn es in die Output-Funktion geht. Die gesamte handles-Struktur ist dann leer?
Wie löse ich am besten das Problem.
Hier der Code:
% MAPAUSWAHL MATLAB code for MapAuswahl.fig % MAPAUSWAHL, by itself, creates a new MAPAUSWAHL or raises the existing % singleton*.
%
% H = MAPAUSWAHL returns the handle to a new MAPAUSWAHL or the handle to % the existing singleton*.
%
% MAPAUSWAHL('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in MAPAUSWAHL.M with the given input arguments.
%
% MAPAUSWAHL('Property','Value',...) creates a new MAPAUSWAHL or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before MapAuswahl_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to MapAuswahl_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help MapAuswahl
% Last Modified by GUIDE v2.5 12-Aug-2017 21:18:56
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @MapAuswahl_OpeningFcn, ...
'gui_OutputFcn', @MapAuswahl_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
ifnargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
% --- Executes just before MapAuswahl is made visible. function MapAuswahl_OpeningFcn(hObject, eventdata, handles, varargin, mapWahl) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to MapAuswahl (see VARARGIN)
% Choose default command line output for MapAuswahl
handles.output = hObject;
% UIWAIT makes MapAuswahl wait for user response (see UIRESUME)
uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line. functionvarargout = MapAuswahl_OutputFcn(hObject, eventdata, handles, mapWahl) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
handles.mapWahl = mapWahl;
guidata(hObject, handles);
% Get default command line output from handles structure varargout{1} = handles.mapWahl;
% --- Executes on button press in map1. function map1_Callback(hObject, eventdata, handles, mapWahl) % hObject handle to map1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
mapWahl = 1;
handles.mapWahl = 1;
guidata(hObject, handles);
% Hint: get(hObject,'Value') returns toggle state of map1
% --- Executes on button press in map2. function map2_Callback(hObject, eventdata, handles, mapWahl) % hObject handle to map2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
%mapWahl = 2;
mapWahl = 2;
handles.mapWahl = 2;
guidata(hObject, handles);
% Hint: get(hObject,'Value') returns toggle state of map2
% --- Executes on button press in map3. function map3_Callback(hObject, eventdata, handles, mapWahl) % hObject handle to map3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
%mapWahl = 3;
mapWahl = 3;
handles.mapWahl = 3;
guidata(hObject, handles);
% Hint: get(hObject,'Value') returns toggle state of map3
% --- Executes on button press in weiter. function weiter_Callback(hObject, eventdata, handles) % hObject handle to weiter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close;
als erstes bitte aus jedem funktionskopf den inputparameter 'mapWahl' herausnehmen.
Code:
% --- Executes just before MapAuswahl is made visible. function MapAuswahl_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to MapAuswahl (see VARARGIN)
% Choose default command line output for MapAuswahl
handles.output = hObject;
du überschreibst dir in der Output function deine mapwahl durch den Eingabeparameter mapWahl im Funktionskopf.
Code:
functionvarargout = MapAuswahl_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.mapWahl;
% --- Executes on button press in map1. function map1_Callback(hObject, eventdata, handles) % hObject handle to map1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
handles.mapWahl = 1;
guidata(hObject, handles);
% Hint: get(hObject,'Value') returns toggle state of map1
Das ist natürlich ungewöhnlich. Im Anhang findest du ein simples nachgebautes GUI, welches nach Schließen den Wert herausgibt. Ansonsten füge bitte deine GUI inkl der Bilder bei. Sonst ist es ein Rätselraten, was du in deinem Code geändert hast.
Du öffnest doch nach der Gui sicherlich ein Skript bzw. eine Funktion. z.B. durch einen Button-Press oder ähnliches.
Somit würde ich dir empfehlen in deiner "Execute one...."- Funktion, die neue Funktion außerhalb der GUI zu öffnen und dieser dann deinen Wert mitgeben.
So in etwa:
Code:
% --- Executes on button press in map1. function map1_Callback(hObject, eventdata, handles) % hObject handle to map1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
handles.mapWahl = 1;
FunktionAußerhalbDerGUI(handles.mapWahl);
guidata(hObject, handles);
% Hint: get(hObject,'Value') returns toggle state of map1
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.