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

Load / Save

 

Nils_Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2007, 11:11     Titel: Load / Save
  Antworten mit Zitat      
Hallo Forum,

ich möchte Edit-Box- und Slider-Werte aus meinem GUI in eine externe Datei speichern und diese später wieder laden können.

Wenn ich einen pushbutton drücke soll sich ein Dialog öffnen in dem ich Dateiname und Pfadangabe zum Speichern wählen kann.
Über einen zweiten pushbutton soll sich ein öffnen-Dialog öffnen, in dem ich nach der Datei browsen kann.
Nachdem ich die Datei ausgewählt habe, sollen die Werte sofort übernommen und angezeigt werden.

Dazu ist zu beachten: Das ganze Projekt soll wenn möglich zum Schluss kompiliert werden und eine exe werden...




Ich hoffe, jemand kann mir Tips dazu geben...

Gruß und Dank,
Nils


W31dn3r
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 10.11.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2007, 14:41     Titel:
  Antworten mit Zitat      
Hallo,

wo sind genau deine Schwierigkeiten?

Zum File Öffnen kanst du die Funktion Verwenden

Code:
[fname,pname] =uigetfile('FilterSpec','DialogTitle','DefaultName');  


Zum Speichern

Code:
uiputfile('FilterSpec','DialogTitle', 'DefaultName')



Das auslesen und Schreiben von werten in die jeweiligen Edit-Boxen kann durch set und get Funktionen erfolgen.

Code:
set(H,'String',Value)
get(H,'String')


Wenn das ganze Fertig ist, muss es mit Matlab Component Runtime (MCR) zu einer exe compiliert werden.

http://www.gomatlab.de/gui-fuer-and.....fuehrbar-machen-t239.html

Viel Erfolg
Private Nachricht senden Benutzer-Profile anzeigen
 
WRZ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2007, 18:43     Titel: Load/Save
  Antworten mit Zitat      
Hallo,ich habe auch solche Schwierigkeiten.In mein GUI Figur gibt es 22 Edit-box und wird 22 Werten einzugeben.Ich möchte durch die Save und Load Pushbutton jedes mal die Werten in eine Datei speichen und nächste mal kann ich einfach die Datei mit die Werten auslesen.Was sollte ich unter callback die code schreiben?

danke

gruss wrz
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 16.11.2007, 13:20     Titel:
  Antworten mit Zitat      
Ich denke du könntest da mit der save-Funktion rechtgut zurande kommen, indem du die Var. in einem .mat-file abspeicherst und halt auch daraus ohne Probleme einlesen kannst.

Zitat:

% ich gehe davon aus, dass die 22 Var. in einem Struct 'Var' stehen
% dann müsste in deiner save-callback stehen:
save var.mat var;
% und in der load-callback:
load var.mat;


Ich denke damit müsste es klappen! Falls nicht oder es gibt bessere Lösungen, so bin auch ich gespannt Wink

Grüße
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
wrz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2007, 15:35     Titel:
  Antworten mit Zitat      
Aber jede werte in ein edit-box,wie kann die 22 werten in einem Struct 'Var' stehen?

gruss wrz
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 18.11.2007, 15:53     Titel:
  Antworten mit Zitat      
Ich denke du hast zu jeder Edit-Box eine Callback-Funktion, richitg?
In diesen Funktionen speicherst du die eingegebenen Werte auf Variablen ab, oder?
Diese Variablen müssten dann die Form
Zitat:
handle.Var1 = ... ;

haben.

In deiner save-Funktion müsste dann stehen:
Zitat:
save Var.mat handle.Var1, handle.Var2, ...;
oder
Zitat:
Var.V1 = handle.Var1;
:
:

save Var.mat Var;


Grüße
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 19.11.2007, 13:32     Titel:
  Antworten mit Zitat      
Die Inhalte aller Edit-Boxen auszulesen und in ein struct zu schreiben ist wirklich einfach:

Code:
h=findobj('style','edit'); % alle Edit-Boxen suchen u. handles in h schreiben
for k=h'                       % alle handles durchgehen
    tag=get(k,'tag');       % Tag lesen (hoffentlich hast Du hier sinnvolle Namen vergeben...)
    content=get(k,'string');  % Inhalt der Edit-Box lesen
    var.(tag)=content;         % Inhalt per indirekter Adressierung in struct "var" schreiben
end


... und schon stehen im struct "var" fein säuberlich alle Werte verzeichnet. Die Namen der Attribute in diesem struct sind die Tag-Namen der Edit-Boxen (für die spätere Zuordnung beim Laden).


Das Laden funkioniert natürlich genau umgekehrt:

Code:
h=findobj('style','edit'); % alle Edit-Boxen suchen u. handles in h schreiben
for k=h'                       % alle handles durchgehen
    tag=get(k,'tag');       % Tag lesen
    content=var.(tag);         % passenden Inhalt aus struct lesen
    set(k,'string',content);  % diesen Inhalt in Edit-Box schreiben
end


Sollte funktionieren...

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
wrz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2007, 15:47     Titel:
  Antworten mit Zitat      
Sollte ich die beide code unter callback der Save und Load schreiben?und bei save welche Datentyp sollte ich waehlen?

danke
 
wrz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2007, 16:32     Titel:
  Antworten mit Zitat      
Ich habe so geschrieben,aber bei Load kommt ein Fehle:
??? The function, script, or class var
cannot be indexed using {} or . indexing.

Error in ==> MotorParameter>Load_pushbutton_Callback at 605
content=var.(tag); % passenden Inhalt aus struct lesen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 22.11.2007, 11:24     Titel:
  Antworten mit Zitat      
wrz hat Folgendes geschrieben:
Ich habe so geschrieben,aber bei Load kommt ein Fehle:
??? The function, script, or class var
cannot be indexed using {} or . indexing.

Error in ==> MotorParameter>Load_pushbutton_Callback at 605
content=var.(tag); % passenden Inhalt aus struct lesen



Der Save-Callback sollte ungefähr so aussehen:

Code:
% --- Executes on button press in pb_Save.
function pb_Save_Callback(hObject, eventdata, handles)
% hObject    handle to pb_Save (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

h=findobj('style','edit');   % alle Edit-Boxen suchen u. handles in h schreiben
for k=h'                     % alle handles durchgehen
    tag=get(k,'tag');        % Tag lesen
    content=get(k,'string'); % Inhalt der Edit-Box lesen
    var.(tag)=content;       % Inhalt per indirekter Adressierung in struct "var" schreiben
end
save content_edit_boxes var;


Der Load-Callback sollte dann folgendermaßen aussehen:

Code:
% --- Executes on button press in pb_Load.
function pb_Load_Callback(hObject, eventdata, handles)
% hObject    handle to pb_Load (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

load content_edit_boxes;
h=findobj('style','edit');   % alle Edit-Boxen suchen u. handles in h schreiben
for k=h'                     % alle handles durchgehen
    tag=get(k,'tag');        % Tag lesen
    content=var.(tag);       % passenden Inhalt aus struct lesen
    set(k,'string',content); % diesen Inhalt in Edit-Box schreiben
end



Die Daten liegen dann im File "content_edit_boxes.mat".


Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
wrz

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2007, 18:59     Titel:
  Antworten mit Zitat      
Danke sehr!
Wenn ich einen pushbutton "Save" drücke soll sich ein Dialog öffnen in dem ich Dateiname und Pfadangabe zum Speichern wählen kann. Was sollte ich schreiben?Auch bei Load.

gruss wrz
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 27.11.2007, 15:56     Titel:
  Antworten mit Zitat      
wrz hat Folgendes geschrieben:
Danke sehr!
Wenn ich einen pushbutton "Save" drücke soll sich ein Dialog öffnen in dem ich Dateiname und Pfadangabe zum Speichern wählen kann. Was sollte ich schreiben?Auch bei Load.

gruss wrz


s. Antwort von W31dn3r
Private Nachricht senden Benutzer-Profile anzeigen
 
pooz
Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2009, 19:06     Titel:
  Antworten mit Zitat      
Hi Leute,

vielen Dank für diese kleine Hilfe.
Ich habe jedoch noch eine Frage und einen Verbessrungsvorsschlag, den ich aber selbst nicht gelöst bekomme.

1) Ich verwende zu meinen Edit Boxen noch Slider, die miteinander gekoppelt sind. Bewege ich einen Slider, so erscheint der Wert in der Edit Box. Oder gebe ich einen Wert in die Edit-Box ein, so springt der Slider an diese Position, wenn ich die Enter-Taste betätige!

Leider klappt das nach dem Laden aber nicht. Es fehlt sozusagen das "Drücken der Enter-Taste"

Gibt es dazu ein Lösung?

2) Ich würde auch gerne noch meine Radio-Buttons (aus Buttongroups) und meine List-Boxes mit abspeichern.

Wie mach ich das?
Kann man in Matlab für den Typus, in unserem Falles "edit" auch ein Platzhalter einsetzen wie z.B. und Windows ein Sternchen '*', sodass alle Elemente der Gui abgespeichert werden?

Vielleicht ist das auch gleichzeitig ein Workaround meines ersten Problems?

3) Ich würde gerne diese Werte in eine Datei speichern, die der Benutzer selbst im "Speichern-Dialog" auswählen kann. Sodass der Benutzer mehrere "Presets" zur Verfügung hat.
Oder Besser und komfortabler: Super wäre, wenn man seine Werte-Sets in einer List-Box oder in einem Pop-Up Menü bequem speichern und Laden kann. Das wäre prima.
Weiß jemand, wie man das macht?


Für jede Hilfe bin ich seeeehr dankbar!
Beste Grüße
pooz
Private Nachricht senden Benutzer-Profile anzeigen
 
pooz
Forum-Anfänger

Forum-Anfänger


Beiträge: 49
Anmeldedatum: 04.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2009, 13:35     Titel:
  Antworten mit Zitat      
*push* Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 24.06.2009, 14:36     Titel:
  Antworten mit Zitat      
Moin,

zu 1.: Versuch mal
Code:
h=findobj('style','edit','-or','style','slider');


zu 2.: Wenn 1. klappt, dann einfach erweitern mit '-or','style','radiobutton','-or','style','listbox'

zu 3.: Kannst du schon eine Datei im Speichern-Dialog auswählen? Die Listbox braucht nur:
Code:
files = dir(fullfile(PathStr,'*.mat'));
set(handles.loadlistbox,'String',files.name);

In der Callback dieser Listbox steht dann der load-befehl drin.

Ist zwar etwas kurz und knapp, aber ich hoffe es hilft schonmal weiter.

Gruß
Alex

PS: Aus dem Kopf geschrieben, ohne es zu testen - Fehler nicht ausgeschlossen Wink
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 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.