Verfasst am: 12.10.2017, 12:17
Titel: Plot-Update in einem GUI Fenster aus einem zweiten Fenster
Hallo zusammen,
ich habe ein Problem mit der Datenübergabe und dem Update eines Axes-Objects in meinen GUIDE GUIs. In meinem Hauptfenster ist ein Plot. Die Koeffizienten der geplotteten Funktion möchte ich über einen "Optionen" Pushbutton mit Hilfe eines sliders etwas variieren können. Der Optionen-Callback öffnet dazu ein weiteres Fenster mit dem Slider und ein paar anderen Variationsmöglichkeiten.
In dem Slider-Fenster soll mit Hilfe eines Klicks auf "Anwenden" der Plot mit neuen Koeffizienten aktualisiert werden, ohne dass das Slider-Fenster sich schließt. Das Funktioniert auch einmal, danach bekomme ich folgende Fehlermeldung:
Error using guidata (line 89)
H must be the handle to a figure or figure descendent.
Error in Test_GUI_Datenuebergabe>PB_Optionen_Callback (line 98 )
guidata(hObject, handles);
Error in Test_GUI_Datenuebergabe>PB_Optionen_Callback (line 100)
PB_Optionen_Callback(hObject,[],handles);
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in Test_GUI_Datenuebergabe (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in @(hObject,eventdata)Test_GUI_Datenuebergabe('PB_Optionen_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Hier meine Callbacks für "Optionen" im Fenster1 und "Anwenden" in Fenster2:
Code:
% --- Executes on button press in PB_Optionen. function PB_Optionen_Callback(hObject, eventdata, handles) % hObject handle to PB_Optionen (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if handles.exitflag==0% wird benutzt um nur einmal die Funktion mit dem Fenster aufzurufen
handles.slidergui = Extra2DSlider(handles.coef,handles.coefnew);
end
uiwait(handles.slidergui); % warten auf SliderGUI Rückgabe
% --- Executes on button press in PB_Anwenden. function PB_Anwenden_Callback(hObject, eventdata, handles) % hObject handle to PB_Anwenden (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
In dem Slider-Fenster soll mit Hilfe eines Klicks auf "Anwenden" der Plot mit neuen Koeffizienten aktualisiert werden, ohne dass das Slider-Fenster sich schließt. Das Funktioniert auch einmal, danach bekomme ich folgende Fehlermeldung:
Ohne den vollen Code kann ich dazu nicht viel sagen, aber wie du mir wahrscheinlich zustimmen wirst, besteht eine Option darin, dass dein Handle(s) von irgendeinem Aufruf überschrieben oder gelöscht werden. Denke Haralds Vorschlag ist vernünftig.
danke für eure antworten. Ich habe mit dem Debugger versucht das Problem zu lösen, konnte mir aber keinen Reim darauf bilden, wo die handles überschrieben werden könnten.
Aus zeitlichen Gründen musste ich die nicht richtig funktionierende Version in mein Projekt einbauen und siehe da, es funktionierte einwandfrei. Wenn ich Zeit finde werde ich hier meinen Fehler selber aufdecken, für alle die ein ähnliches Problem haben.
Danke euch!
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
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.