habe mir eine GUI gebaut in der man alle Zustände und Eingaben zwischenspeichern kann um sie später wieder in die GUI zu laden. Also damit man die gleiche Maske wieder vor sich hat.
Das habe ich auch lauffähig hinbekommen. Aber leider sieht es ziemlich lang us und ich würde den ganzen Code gerne verkürzen.
Und da ist auch schon mein Problem. Das zusammenfassen in einer Funktion klappt nicht und ich werde nochmal verrückzt dabei.
Nun hoffe ich das jemand anderes mir auf die Sprünge helfen kann.
Die Daten können gerne auch in nur einer einzigen .mat-Datei gespeichert werden.
Nachfolgend mein Code zum Speichern und Laden:
[code]
%% Speichern der Daten mit Symbol "Diskette"
function Datei_speichern_ClickedCallback(hObject, eventdata, handles)
switch (questdlg ('Wollen Sie die gesetzten Eingaben speichern?','Zwischenspeichern','Ja','Nein','Nein'));
case 'Nein';
return;
case 'Ja';
Zwischenspeicher = findobj('style','edit'); % alle Edit-Boxen suchen u. handles in Zwischenspeicher schreiben
for i = Zwischenspeicher' % alle handles durchgehen
Tag_namen = get(i,'tag'); % Tag lesen
Einlesen = get(i,'string'); % Inhalt der Edit-Box lesen
var.(Tag_namen) = Einlesen; % Inhalt per indirekter Adressierung in struct "var" schreiben
end
save content_edit_boxes var;
Zwischenspeicher = findobj('style','radiobutton'); % alle Radiobutton suchen u. handles in Zwischenspeicher schreiben
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'Value'); % Wert lesen. D. h. wenn "1" dann ist der Button ausgewaehlt worden. Wenn "0" dann ist er nicht ausgewaehlt worden.
var.(Tag_namen) = Einlesen;
end
save content_radiobutton var;
Zwischenspeicher = findobj('style','text'); % alle Textausgabefelder suchen u. handles in Zwischenspeicher schreiben
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'string');
var.(Tag_namen) = Einlesen;
end
save content_text var;
Zwischenspeicher = findobj('style','checkbox'); % alle Checkboxen suchen u. handles in Zwischenspeicher schreiben
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'Value');
var.(Tag_namen) = Einlesen;
end
save content_checkbox var;
Zwischenspeicher = findobj('style','popupmenu');% alle Popupmenus suchen u. handles in Zwischenspeicher schreiben
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'Value');
var.(Tag_namen) = Einlesen;
end
save content_popupmenu var;
end;
%% Laden aus dem Zwischenspeicher mit dem Symbol "Ordner"
function Datei_oeffnen_ClickedCallback(hObject, eventdata, handles)
global EntfernungnachHHfest
switch (questdlg ('Wollen Sie die letzten gesetzten Eingaben laden?','Daten laden','Ja','Nein','Nein'));
case 'Nein';
return;
case 'Ja';
load content_edit_boxes;
Zwischenspeicher = findobj('style','edit'); % alle Edit-Boxen suchen u. handles in h schreiben
for i = Zwischenspeicher' % alle handles durchgehen
Tag_namen = get(i,'tag'); % Tag lesen
Einlesen = var.(Tag_namen); % passenden Inhalt aus struct lesen
set(i,'string',Einlesen); % diesen Inhalt in Edit-Box schreiben
end
load content_radiobutton;
Zwischenspeicher = findobj('style','radiobutton');
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = var.(Tag_namen);
if strcmp(Tag_namen, 'Eigene_Auswahl') % Wenn die Strings gleich sind, dann fragen ob,
if Einlesen == 1 % der Wert gleich "1" ist. Wenn Ja, dann
set(handles.Auswahl_Abgangsort,'enable','off');
set(handles.Auswahl_Abgangsort,'Value',1);
set(handles.Entfernung_nach_HH,'enable','on')
Fotodatei = imread('LKW_Hongkong.jpg');
image (Fotodatei);
set(gca,'DataAspectRatio',[1 0.9 1]);
set(gca,'Visible','on','Units','Pixels','Position',[402,172,456,430]);
set(gca,'XTick',[]),set(gca,'YTick',[]);
end
elseif strcmp(Tag_namen, 'Vorgabeliste')
if Einlesen == 1
load content_popupmenu;
Zwischenspeicherpop = findobj('style','popupmenu');
for k = Zwischenspeicherpop'
Tag_namenpop = get(k,'tag');
Einlesenpop = var.(Tag_namenpop);
if Einlesenpop == 1
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00');
set(handles.Entfernung_nach_HH,'enable','off');
set(handles.Auswahl_Abgangsort,'enable','on');
set(handles.Entfernung_nach_HH,'string','0');
Fotodatei = imread('DB_Schenker_Logo.jpg');
image (Fotodatei);
set(gca,'DataAspectRatio',[1.735 1 1]);
set(gca,'Visible','on','Units','Pixels','Position',[229,443,800,136]);
set(gca,'XTick',[]),set(gca,'YTick',[]);
elseif Einlesenpop == 6
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor',[1,0,0],'string',EntfernungnachHHfest(5));
Fotodatei = imread('Wiesbaden.jpg');
image (Fotodatei);
set(gca,'DataAspectRatio',[1 1.13 1]);
set(gca,'Visible','on','Units','Pixels','Position',[402,172,456,430]);
set(gca,'XTick',[]),set(gca,'YTick',[]);
end
set(k,'Value',Einlesenpop);
end
end
end
set(i,'Value',Einlesen);
end
load content_text;
Zwischenspeicher = findobj('style','text');
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = var.(Tag_namen);
set(i,'string',Einlesen);
end
load content_checkbox;
Zwischenspeicher = findobj('style','checkbox');
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = var.(Tag_namen);
set(i,'Value',Einlesen);
end
end;
[/ code]
Über einen Hilfreichen Tip wäre ich super dankbar.
function Datei_speichern_ClickedCallback(hObject, eventdata, handles)
switch(questdlg('Wollen Sie die gesetzten Eingaben speichern?','Zwischenspeichern','Ja','Nein','Nein'));
case 'Nein';
return;
case 'Ja';
Zwischenspeicher = findobj('style','edit'); % alle Edit-Boxen suchen u. handles in Zwischenspeicher schreiben for i = Zwischenspeicher' % alle handles durchgehen
Tag_namen = get(i,'tag'); % Tag lesen
Einlesen = get(i,'string'); % Inhalt der Edit-Box lesen var.(Tag_namen) = Einlesen; % Inhalt per indirekter Adressierung in struct "var" schreiben end save content_edit_boxes var;
Zwischenspeicher = findobj('style','radiobutton'); % alle Radiobutton suchen u. handles in Zwischenspeicher schreiben for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'Value'); % Wert lesen. D. h. wenn "1" dann ist der Button ausgewaehlt worden. Wenn "0" dann ist er nicht ausgewaehlt worden. var.(Tag_namen) = Einlesen;
end save content_radiobutton var;
Zwischenspeicher = findobj('style','text'); % alle Textausgabefelder suchen u. handles in Zwischenspeicher schreiben for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'string');
var.(Tag_namen) = Einlesen;
end save content_text var;
Zwischenspeicher = findobj('style','checkbox'); % alle Checkboxen suchen u. handles in Zwischenspeicher schreiben for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'Value');
var.(Tag_namen) = Einlesen;
end save content_checkbox var;
Zwischenspeicher = findobj('style','popupmenu');% alle Popupmenus suchen u. handles in Zwischenspeicher schreiben for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = get(i,'Value');
var.(Tag_namen) = Einlesen;
end save content_popupmenu var;
load content_edit_boxes;
Zwischenspeicher = findobj('style','edit'); % alle Edit-Boxen suchen u. handles in h schreiben for i = Zwischenspeicher' % alle handles durchgehen
Tag_namen = get(i,'tag'); % Tag lesen
Einlesen = var.(Tag_namen); % passenden Inhalt aus struct lesen set(i,'string',Einlesen); % diesen Inhalt in Edit-Box schreiben end
load content_radiobutton;
Zwischenspeicher = findobj('style','radiobutton');
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = var.(Tag_namen);
ifstrcmp(Tag_namen, 'Eigene_Auswahl')% Wenn die Strings gleich sind, dann fragen ob, if Einlesen == 1% der Wert gleich "1" ist. Wenn Ja, dann set(handles.Auswahl_Abgangsort,'enable','off');
set(handles.Auswahl_Abgangsort,'Value',1);
set(handles.Entfernung_nach_HH,'enable','on')
Fotodatei = imread('LKW_Hongkong.jpg');
image(Fotodatei);
set(gca,'DataAspectRatio',[10.91]);
set(gca,'Visible','on','Units','Pixels','Position',[402,172,456,430]);
set(gca,'XTick',[]),set(gca,'YTick',[]);
end
elseifstrcmp(Tag_namen, 'Vorgabeliste') if Einlesen == 1 load content_popupmenu;
Zwischenspeicherpop = findobj('style','popupmenu');
for k = Zwischenspeicherpop'
Tag_namenpop = get(k,'tag');
Einlesenpop = var.(Tag_namenpop);
if Einlesenpop == 1 set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00');
set(handles.Entfernung_nach_HH,'enable','off');
set(handles.Auswahl_Abgangsort,'enable','on');
set(handles.Entfernung_nach_HH,'string','0');
Fotodatei = imread('DB_Schenker_Logo.jpg');
image(Fotodatei);
set(gca,'DataAspectRatio',[1.73511]);
set(gca,'Visible','on','Units','Pixels','Position',[229,443,800,136]);
set(gca,'XTick',[]),set(gca,'YTick',[]);
elseif Einlesenpop == 6 set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor',[1,0,0],'string',EntfernungnachHHfest(5));
Fotodatei = imread('Wiesbaden.jpg');
image(Fotodatei);
set(gca,'DataAspectRatio',[11.131]);
set(gca,'Visible','on','Units','Pixels','Position',[402,172,456,430]);
set(gca,'XTick',[]),set(gca,'YTick',[]);
end set(k,'Value',Einlesenpop);
end end end set(i,'Value',Einlesen);
end
load content_text;
Zwischenspeicher = findobj('style','text');
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = var.(Tag_namen);
set(i,'string',Einlesen);
end
load content_checkbox;
Zwischenspeicher = findobj('style','checkbox');
for i = Zwischenspeicher'
Tag_namen = get(i,'tag');
Einlesen = var.(Tag_namen);
set(i,'Value',Einlesen);
end
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.