WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Auf Wert aus anderer Matlab-Datei zugreifen

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2017, 18:18     Titel: Auf Wert aus anderer Matlab-Datei zugreifen
  Antworten mit Zitat      
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.


huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 13.08.2017, 20:00     Titel:
  Antworten mit Zitat      
Hi,

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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2017, 23:27     Titel: Rückfrage: Wert aus GUI in Hauptprogram
  Antworten mit Zitat      
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:

function varargout = 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;
 


Code im Hauptprogramm:
Code:
MapAuswahl;
%uiwait(MapAuswahl);
map = mapWahl;


Danke.
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 14.08.2017, 09:29     Titel:
  Antworten mit Zitat      
am besten du speicherst deine variable mapwahl in der handles struktur und immer dann wenn du deine callback funktionen verlässt.

Code:
handles.mapWahl = mapWahl;
guidata(hObject, handles);


wenn du dann deine GUI beenden möchest, rufst du einfach auf
Code:
varargout{1} = handles.mapWahl;
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2017, 10:30     Titel: Rückfrage: Wert aus GUI in Hauptprogram
  Antworten mit Zitat      
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:

Code:
function varargout = MapAuswahl(varargin)


% 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',   []);
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
% End initialization code - DO NOT EDIT


% --- 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;

mapWahl = 0;
handles.mapWahl = mapWahl;
guidata(hObject, handles);

axes(handles.bild1);
imshow('Map1.jpg');

axes(handles.bild2);
imshow('Map2.jpg');

axes(handles.bild3);
imshow('Map3.jpg');

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes MapAuswahl wait for user response (see UIRESUME)
uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = 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;
 
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 14.08.2017, 11:09     Titel:
  Antworten mit Zitat      
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;

handles.mapWahl = 0;

axes(handles.bild1);
imshow('Map1.jpg');

axes(handles.bild2);
imshow('Map2.jpg');

axes(handles.bild3);
imshow('Map3.jpg');

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes MapAuswahl wait for user response (see UIRESUME)
uiwait(handles.figure1);

 


du überschreibst dir in der Output function deine mapwahl durch den Eingabeparameter mapWahl im Funktionskopf.

Code:
function varargout = 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;
 


die Callback_Fcn sollten so aussehen:
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;
guidata(hObject, handles);
% Hint: get(hObject,'Value') returns toggle state of map1


-> Analog für Map2 und Map3
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2017, 11:39     Titel: Rückfrage: Wert aus GUI in Hauptprogram
  Antworten mit Zitat      
Danke, für die Rückmeldung.
Ich habe diesen Ansatz einmal realisiert, bekomme aber folgende Fehlermeldung:



Struct contents reference from a non-struct array object.

Error in MapAuswahl>MapAuswahl_OutputFcn (line 85)
varargout{1} = handles.mapWahl;
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 141
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 14.08.2017, 12:46     Titel:
  Antworten mit Zitat      
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.

untitled.m
 Beschreibung:

Download
 Dateiname:  untitled.m
 Dateigröße:  4.52 KB
 Heruntergeladen:  423 mal
untitled.fig
 Beschreibung:

Download
 Dateiname:  untitled.fig
 Dateigröße:  14.48 KB
 Heruntergeladen:  334 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Lokdog
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 96
Anmeldedatum: 07.04.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 15.08.2017, 06:27     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.