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

GUI Übergabe von Variablen an nächste Funktion

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2013, 12:07     Titel: GUI Übergabe von Variablen an nächste Funktion
  Antworten mit Zitat      
Ich habe folgendes, wohl eher simpleres Problem: Ich möchte einen Text in ein Edit Feld eingeben, diesen nutzen um einen String zu definieren und den Inhalt dieses Strings dann nutzen.

Ich habe es bisher so versucht:

Code:

function file_Callback(hObject, eventdata, handles)
messdatei= get(handles.file, 'String')
handles.messdatei=messdatei

GUIDATA(hObject, handles)

function daten_einlesen_Callback(hObject, eventdata, handles)
        rohdaten = load(messdatei);
 


Als Fehler Zeit er mir an, dass es keinen Variable Messdatei gibt auch mit

Code:

rohdaten=load(get(handles.messdaten, 'String'))
 


funktioniert es nicht, da ist das Problem, dass bei load ein String stehen muss und der code oben keinen String ergibt. (Warum eigentlich nicht?)

Grüße, und danke schonmal im Vorraus.


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 04.07.2013, 13:12     Titel:
  Antworten mit Zitat      
Ja die handles sind innerhalb der ersten Funktion bekannt, werden aber nicht mit zurückgegeben bzw. die handles nicht aktualisiert.
Hier eine allgemeine Erläuterung, wie das funktioniert:
http://www.mathworks.de/de/help/mat.....-data-in-a-guide-gui.html

Setze einfach
Code:
guidata(hObject,handles)
bevor die file_Callback Funktion verlassen wird. Somit werden die zugewiesenen handles zurückgeschrieben.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.07.2013, 10:36     Titel:
  Antworten mit Zitat      
Danke Martina,
aber genau das habe ich ja gemacht, funktionieren tut hier trotzdem nichts...
Ich habe es auch etwas unelegant gemacht und die Variable messdatei als globale Variable definiert, aber auch das führte mich zu keinem Ergebnis.
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 05.07.2013, 11:12     Titel:
  Antworten mit Zitat      
Ich habe das in meiner GUI so gelöst:

Code:

% get the structure in the subfunction
handles = guidata(gcbo);
handles.data = [1,2,3,4];
% save the changes to the structure
guidata(gcbo,handles)
 


So lade und speicher ich meine handles. Das muss nun in jeder einzelnen Funktion der GUI gemacht werden, in der die Daten geladen bzw. gespeichert werden sollen.

Die einzelnen Felder der Struktur handles sind in der ...OpeningFcn(hObject, eventdata, handles, varargin) definiert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.07.2013, 19:42     Titel:
  Antworten mit Zitat      
Hallo,

so sollte es gehen:
Code:
rohdaten = load(handles.messdatei);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2013, 13:34     Titel:
  Antworten mit Zitat      
Danke euch allen. Es hat tatsächlich daran gelegen, dass ich nicht wusste, dass ich die Daten nach dem Speichern wieder aufrufen muss...

Jetzt frage ich mich noch, in meinen Handles habe ich eine Struct gespeichert, wie komme ich da wieder heran?
Matlab meint zu meinen Versuchen:
Code:

data=guidata(hObject)
      s=get(handles.data)
 


das es nicht funktionieren kann.
Get kann nicht benutzt werden, weil er aus einem Struct kein double machen kann.

Ich möchte eigentlich das Struct, das ich in der guidata gespeichert habe in der nächsten Funktion wieder öffnen.
 
marc-205
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 12.12.12
Wohnort: ---
Version: R2010b
     Beitrag Verfasst am: 16.07.2013, 07:36     Titel:
  Antworten mit Zitat      
Du willst also den Inhalt von handles.data aus dem GUI ausgeben und in einer folgenden Funktion nutzen?

dann geb sie in der Outputfunction aus.

Code:
varargout{1} = handles.data;


sorge aber dafür, dass die outputfunction auch abgearbeitet wird. Beispielsweise ein start Button mit dem Inhalt
Code:
uiresume(handles.figure1);


beim Aufruf der GUI musst du dann nur eine Ausgabevariable deklarieren, die dann handles.data entspricht, also wie bei ganz normalen Funktionen.

Wenn du das struct bzw dessen Inhalt als Array haben willst, geht es bestimmt eleganter, aber ich hab das dann quick-and-dirty mit einer for-Schleife gemacht...
Code:
names = fieldnames(handles.data);
    nextRow = 1;
    for i = 1:numel(handles.data) % go through struct
            data(nextRow,1) = handles.data.(names{i});
            nextRow = nextRow + 1;
    end
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2013, 08:15     Titel:
  Antworten mit Zitat      
Danke jetzt habe ich es hingekriegt!
Super Forum hier, bitte weoter so Laughing
 
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.