|
|
Übergabe Struct (durch Callback in GUI) in ext. function |
|
Andr é |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2011, 09:57
Titel: Übergabe Struct (durch Callback in GUI) in ext. function
|
 |
|
 |
|
Hallo zusammen,
ich habe folgendes Problem und hoffe Ihr könnt mir weiterhelfen:
Ich habe eine GUI in der man diverse Einstellungen vornehmen kann.
Sobald ich auf einen Pushbutton mit "Berechnen und Darstellen" drücke sollen die in der GUI vorgenommenen Einstellungen ausgelesen werden in ein Struct geschrieben werden. Zudem wollte ich mit dem Callback meine eigentliche M-File laufen lassen, das Struct übergeben und die verwendeten Variablen in der M-File durch das Struct bedaten/beschreiben.
Mein Problem hierbei ist, dass die Variablen in der Callback function nur für die function anwesend sind. Sobald ich eine neue function dadurch öffne sind alle Variablen gelöscht. Ich habe es auch mit "global" oder "persistent" versucht zu deklarieren, was auch nicht funktionierte. Hier mein Versuch nur beispielhaft verkürzt:
function pushbuttonberechnen_Callback(hObject, eventdata, handles)
persistent Uebergabe
Uebergabe.Pfad=get(handles.edittoolpath,'String');
Uebergabe.Daten.a=get(handles.editvm,'String');
Uebergabe.Daten.b=get(handles.editem,'String');
Uebergabe.Daten.c=get(handles.editfz,'String');
cd(strcat(Uebergabe.Pfad,'\Anwenderskript'));
Tool(Uebergabe)
Somit lies sich wie gesagt zwar das Tool abspielen, allerdings kommt dann der Fehler "cleared Variablen" sobald das Struct das erste mal verwendet wird.
Ich hoffe ich konnte mein Problem verständlich rüberbringen.
Viele Grüße und noch verspätet ein frohes neues Jahr,
André
|
|
|
|
|
Andr é |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2011, 11:07
Titel:
|
 |
kurzer Nachtrag,
ich konnte das Problem zwar lösen, allerdings überhaupt nicht elegant, indem ich das Struct "Uebergabewerte" im Callback des PushButtons abspeicher (save Uebergabewerte.mat). Darunter öffne ich die M-File bzw. das Berechnungstool und lese dort die abgespeicherte .mat-Datei ein.
Das allerdings ist meiner Meinung nach großer Pfusch.
Ich hoffe noch auf eine elegante Lösung
Gruß, André
|
|
|
Lord nibbler |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2011, 11:24
Titel:
|
 |
Hallo André
poste mal bitte die ersten Zeilen der Funktion Tool bis Uebergabe das erste mal verwendet wird.
Gruß Lord nibbler
|
|
|
Andr é |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2011, 11:51
Titel:
|
 |
Dankeschön Lord Nibbler,
du hast mich durch deinem Post den sau blöden Fehler schon finden lassen.
Anfangs war es nur ein selbstständiges Tool, bei welchem ich Anfangs alles gelöscht habe. Diese hatte ich jetzt als Funktion umgeschrieben. Allerdings kann die Variable natürlich nicht vorhanden sein, wenn ich "clear" nicht entferne . Jetzt geht es auch ohne "persistent" oder "global". Super, danke nochmal!
function Tool(Uebergabe)
%Formatierung+Einlesen
clear;clc;format long;
set(0,'ShowHiddenHandles','on')
delete(get(0,'Children')) %Schließen der bereits geöffneten Figures
Pfad=Uebergabe.Pfad;
|
|
|
Andr é |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2011, 11:57
Titel:
|
 |
Danke Lord Nibbeler,
hab durch deinen Post den ziemlich doofen Fehler gefunden.
War ursprünglich ein Programm, bei welchem ich Anfangs alles habe Löschen lassen.
Da ich es jetzt als function umgeschrieben habe, kann natürlich später keine Variable vorhanden sein, wenn ich diese lösche.
function Tool(Uebergabe)
%Formatierung+Einlesen
clear;clc;format long;
set(0,'ShowHiddenHandles','on')
delete(get(0,'Children')) %Schließen der bereits geöffneten Figures
Pfad=Uebergabe.Pfad
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|