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

Werteeingabe in neuer GUI und in vorheriger GUI ausführen

 

mokkabaer
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 12.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2014, 16:12     Titel: Werteeingabe in neuer GUI und in vorheriger GUI ausführen
  Antworten mit Zitat      
Hallo,
ich habe ein dezentes Problem.
In meiner GUI_1 habe ich eine uitable mit Daten aus einer mysql Datenbank erstellt.
Um diese mit gewünschten Parametern zu speichern habe ich einen PushButton erstellt, der eine weitere GUI_2 aufruft in der nun Name, SPeicherort und Fileart (.xls,.mat) eingegeben werden sollen und als struct gepsiechert und in der GUI_1 aufgerufen werden sollen um die uitable dann unter den Angaben zu speichern

Wie funktioniert nun dass die GUI_1 auf die eingegebenen Werte wartet und diese dann ausführt.

Code:
function saveAs_Callback(hObject, eventdata, handles)
% hObject    handle to saveAs (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

savewindow (handles);
loadParameters(handles);


Ich bin davon ausgegangen dass der Callback die Parameter erst lädt, wenn die GUI_2 geschlossen wird.

Hoffe meine Frage kommt einigermaßen verständlich rüber

Grüße und dankee
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: 12.10.2014, 16:30     Titel:
  Antworten mit Zitat      
Hallo,

GUI_2 sollte aufgerufen werden als
Code:
output = GUI_2(...)


In der OpeningFcn von GUI_2 sollte
Code:

gesetzt werden.

Wenn die Eingaben abgeschlossen sind, sollte
Code:

ausgeführt werden.

In der OutputFcn von GUI_2 sollten schließlich die Ausgaben, die an GUI_1 zurückgegeben werden sollen, zusammengestellt und in varargout abgelegt werden.

Statt einer eigenen GUI kannst du aber vielleicht auch
Code:

verwenden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 12.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2014, 17:17     Titel:
  Antworten mit Zitat      
Hi,
danke für die schnelle Antwort. Habe mir kurz uiputfile angeschaut und werde ich auch mal durchprobieren.
Die erste Variante bringt mir eine Fehlermeldung die ich nicht lösen kann:

Code:
Error using guidata (line 88)
H must be the handle to a figure or figure descendent.

Error in savewindow>savewindow_OpeningFcn (line 66)
guidata(hObject, handles);

Error in gui_mainfcn (line 220)
    feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

Error in savewindow (line 40)
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

Error in Matlab2MySql>saveAs_Callback (line 2095)
output=savewindow(handles);

Error in gui_mainfcn (line 95)
        feval(varargin{:});

Error in Matlab2MySql (line 79)
    gui_mainfcn(gui_State, varargin{:});

Error in @(hObject,eventdata)Matlab2MySql('saveAs_Callback',hObject,eventdata,guidata(hObject))

 
Error while evaluating uimenu Callback


Wieso zeigt er mir einen Fehler in guidata an?!
Grüße
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: 12.10.2014, 17:20     Titel:
  Antworten mit Zitat      
Hallo,

damit man das beantworten kann, müsstest du deinen Code zur Verfügung stellen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 12.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.10.2014, 17:24     Titel:
  Antworten mit Zitat      
Hier mal für die beiden GUIs

GUI_1
Code:
function saveAs_Callback(hObject, eventdata, handles)
% hObject    handle to saveAs (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

output=savewindow(handles);
% Load Config-Data
dirFull=which('Matlab2MySql');
ind=strfind(dirFull,'\');
dir2=dirFull(1:ind(end));
fileName = [dir2 'saveParam'];
fileName = [fileName '.mat'];


load(fileName);


   
    handles.Name = get(handles.saveplot, 'string');
    handles.Location = get(handles.speicherort, 'string');
    handles.Format = get(handles.popupmenuxlsmat, 'Value');
    handles.Menge = get(Parameters.Menge,'Value');
   
    dateiname = get(handles.Name,'String');
    Daten.Name = 'Datenexport';
    Daten.Datum = datestr(now, 'yyyy-mm-dd_HH-MM-SS');
    columnNames=getappdata(handles.uitableDB, 'columnNames');
    columnNamesNoCom=getappdata(handles.uitableDB, 'columnNamesNoCom');

    saveOption = get(handles.Menge,'String');
    if saveOption == 1
        % Only Current Values
        %Daten.TimeColumn = TimeArr;
        Daten.(names{1}) = xAxisArr;
        Daten.(names{2}) = yAxisArr;
        Daten.(names{3}) = zAxisArr;
    elseif saveOption == 2
        for i=1:numel(columnNames)
            Daten.(columnNamesNoCom{i})=tableData(:,i);
        end
    end
    iExt=get(handles.popupmenuExt,'Value');
    if iExt==1
        filename = [dateiname '.mat'];
        save(filename,'Daten')
    elseif iExt==2
        filename = [dateiname '.xls'];
        if saveOption==1
            xlswrite(filename,[{xAxisName yAxisName zAxisName};...
                               [curs.(names{1}) curs.(names{2}) curs.(names{3})]] )
        elseif saveOption==2
            xlswrite(filename,[columnNames; tableData])
        end
    end


GUI_2

Code:
function savewindow_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 savewindow (see VARARGIN)

% Choose default command line output for savewindow
handles.output = hObject;

dirFull=which('savewindow');
ind=strfind(dirFull,'\');
dir2=dirFull(1:ind(end));
set(handles.speicherort, 'String', dir2);
uiwait;


% Update handles structure
guidata(hObject, handles);


function pushbuttonSave_Callback(hObject, eventdata, handles)
% hObject    handle to pushbuttonSave (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
saveParameters(handles);
uiresume;
close (gcbf);

% --- Save the save Parameters in a .mat-File

function saveParameters(handles)

Parameters.Name = get(handles.saveplot, 'string');
Parameters.Location = get(handles.speicherort, 'string');
Parameters.Format=get(handles.popupmenuxlsmat, 'Value');
Parameters.Menge=get(handles.Menge,'Value');

dirFull=which('savewindow');
ind=strfind(dirFull,'\');
dir2=dirFull(1:ind(end));
fileName = [dir2 'saveParam'];
fileName = [fileName '.mat'];
save(fileName, 'Parameters');
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: 12.10.2014, 18:26     Titel:
  Antworten mit Zitat      
Hallo,

versuch mal, uiwait nach guidata aufzurufen. Ansonsten sehe ich keinen Grund dafür.

Falls das nicht weiterhilft, bitte ein lauffähiges (also inkl. .fig) Minimalbeispiel zur Verfügung stellen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 12.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2014, 15:35     Titel:
  Antworten mit Zitat      
Hi Harald,
also habs geändert und nun bringt er mir einen anderen Fehler:

Code:
Error in savewindow>savewindow_OutputFcn (line 74)
function varargout = savewindow_OutputFcn(hObject, eventdata, handles)

Error using feval
Output argument "varargout" (and maybe others) not assigned during call to
"C:\Users\Marko\Desktop\Matlab2MySql_popup\Project\savewindow.m>savewindow_OutputFcn".

Error in gui_mainfcn (line 262)
        [varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);

Error in savewindow (line 40)
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

Error in Matlab2MySql>saveAs_Callback (line 2095)
output=savewindow(handles);

Error in gui_mainfcn (line 95)
        feval(varargin{:});

Error in Matlab2MySql (line 79)
    gui_mainfcn(gui_State, varargin{:});

Error in @(hObject,eventdata)Matlab2MySql('saveAs_Callback',hObject,eventdata,guidata(hObject))

 
Error while evaluating uimenu Callback


Code:
function varargout = savewindow_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.output;
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: 14.10.2014, 19:32     Titel:
  Antworten mit Zitat      
Hallo,

auf den ersten Blick würde ich sagen, dass die Fehlermeldung nicht zum geposteten Code passt. Bitte also überprüfen, ob alle Dateien gespeichert sind.

Zudem wurde dieser Schritt aus meinem Vorschlag anscheinend nicht ausgeführt:
Zitat:
In der OutputFcn von GUI_2 sollten schließlich die Ausgaben, die an GUI_1 zurückgegeben werden sollen, zusammengestellt und in varargout abgelegt werden.

Du willst ja Daten zurückbekommen und mit output arbeiten?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 12.10.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.10.2014, 22:05     Titel:
  Antworten mit Zitat      
Hi,
also ich habs mittlerweile so hingekriegt über output. gibt mir die werte genau so rüber. kann ich den werten noch zuweißen ob sie ein string oder value sind?
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: 17.10.2014, 15:19     Titel:
  Antworten mit Zitat      
Hallo,

Variablen können in MATLAB generell von einem beliebigen Datentyp sein. Du kannst höchstens händisch Zusatzinformationen z.B. in einer Struktur ablegen.

Grüße,
Harald
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.