Verfasst am: 29.01.2012, 19:15
Titel: GUI funtioniert nicht
Hallo liebe Simulink und GUI-Experten.
Ich bin ein halber Neuling im Bereich Matlab und muss nun im Rahmen meiner Bachelorarbeit ein Simulink-Modell mit zugehöriger GUI entwerfen.
Das Modell an sich ist bereits fertig und läuft ohne Probleme.
Beim Erstellen des zugehörigen GUI gibt es jedoch einige Probleme. In einer Zwischenversion des Modells läuft meine GUI ohne Probleme, in der Endversion kann ich jedoch die GUI nicht verwenden.
Im GUI sollen 6 Variablen eingegeben werden. Mit Drücken des Buttons soll dann eine grafische Ausgabe des Ergebnisses erfolgen.
Im .m-File habe ich einzig den Teil:
Code:
axes(handles.axes1)
m=str2num(get(handles.m,'String'));
v=str2num(get(handles.v,'String'));
s=str2num(get(handles.s,'String'));
a=str2num(get(handles.a,'String'));
abroll=str2num(get(handles.abroll,'String'));
achs=str2num(get(handles.achs,'String'));
options = simset('SrcWorkspace','current');
sim('Energiefluss',[],options);
%plot the data
plot(tout,yout) xlabel('Zeit') ylabel('Energie') Title('Vom Auto abgegebene Energie') grid on
ergänzt, wobei m, v, s, a, abroll und achs den Variablen entsprechen, Energiefluss ist der Dateiname.
Wenn ich nun versuche, das m-File laufen zu lassen, wird das Simulink-Modell geöffnet. Wenn ich den Code beispielsweise mit M-Lint prüfe, wird angezeigt, dass keine der Varablen (oder nur seeeehr wenige) genutzt werden. Es scheint also, als würde das m-File gar nicht ausgeführt.
Beim Versuch, Breakpoints zu setzen, bekomme ich zudem die Fehlermeldung:
Cannot enable breakpoint(s) because of syntax error.
??? Error using ==>dbstop
Function "Dateipfad der.m-Datei" is not an M-function or P-function.
Wenn ich im Hauptfenster die .fig öffne, bekomme ich zudem einige Male hintereinander die Meldung
??? Simulink model 'Energiefluss' was called with an invalid flag.
??? Error using ==> struct2handle
Error while evaluating uicontrol CreateFcn.
Im Anschluss öffnet er die Datei jedoch und es können auch die Variablen verändert werden. Nur wird der Graph nicht angezeigt und die Fehlermeldungen in Matlab wiederholen sich.
Ich habe bereits mehrfach probiert, die GUI erneut zu erstellen, aber jedes Mal bekomme ich die gleiche Fehlermeldung. Es ist nicht einmal mehr möglich, eine einfache Funktion über eine GUI zu modellieren, auch das habe ich probiert.
Habe ich vielleicht beim Probieren igend etwas geändert, was für die Funktion der GUI wichtig ist?
Oder gibt es einen Trick, wie ich das Programm überlisten kann?
Ich hoffe, dass mir jemand helfen kann, da die grafische Darstellung "das Herzstück" meiner Bachelorarbeit sein soll...
zur ersten Meldung:
Da MATLAB kein Deutsch kann, muss der deutschsprachige Teil von einer Eingabe deinerseits herrühren. Vielleicht hast du vor einem Kommentar das % vergessen? Such doch in deiner Datei mal nach diesem Text.
zur zweiten Meldung:
ich verstehe die Meldung erst mal nicht. Ich würde jedoch die CreateFcn nach Möglichkeit meiden und stattdessen die OpeningFcn verwenden, wenn etwas "am Anfang" ausgeführt werden soll.
danke für die schnelle Antwort. Bei der ersten Fehlermeldung stand tatsächlich
Cannot enable breakpoint(s) because of syntax error.
??? Error using ==>dbstop
Function "B:\Matlab\work\Energiefluss.m" is not an M-function or P-function.
denn eigentlich wollte ich die absoluten Pfade und den Dateinamen herausnehmen, habe es im folgenden dann aber doch nicht gemacht. Entschuldige bitte, hier habe ich nicht richtig aufgepasst...
Ändere ich die CreateFcn in OpeningFcn, so bekomme ich die gleiche Fehlermeldung, nur eben mit OpeningFcn...
Klicke ich in der fig-Datei auf den Button, so kommt im Matlab-Fenster die gleiche Fehlermeldung nur mit "??? Error while evaluating uicontrol Callback."
Ich hänge nun die .m-Datei mit an, vielleicht übersehe ich hier ja doch etwas "offensichtliches".
Ich habe heute das Simulink-Modell ausgeführt, ohne zuvor die Parameter in Matlab einzugeben. Hierbei habe ich folgende Fehlermeldungen bekommen:
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.beans
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
java.lang.SecurityException: Prohibited package name: java.awt.event
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at com.mathworks.util.jarloader.SimpleClassLoader.applyDefinition(SimpleClassLoader.java:160)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:254)
at com.mathworks.util.jarloader.SimpleClassLoader.loadClass(SimpleClassLoader.java:233)
at com.mathworks.jmi.bean.ListenerClassServer.createClassFromBytes(ListenerClassServer.java:77)
at com.mathworks.jmi.bean.ListenerClassServer.createListenerClass(ListenerClassServer.java:179)
at com.mathworks.jmi.bean.ListenerClassServer.getListenerClass(ListenerClassServer.java:194)
at com.mathworks.jmi.bean.MatlabBeanInterface.makeListenerData(MatlabBeanInterface.java:677)
at com.mathworks.jmi.bean.MatlabBeanInterface.<init>(MatlabBeanInterface.java:328)
??? Java exception occurred:
java.lang.NoSuchMethodError: getControlListboxTop
at com.mathworks.jmi.NativeMatlab.ProcessPendingEvents(Native Method)
at com.mathworks.jmi.NativeMatlab.processPendingEvents(NativeMatlab.java:321)
at com.mathworks.jmi.Matlab$ProcessPendingEvents.callBooleanMethod(Matlab.java:2415)
at com.mathworks.util.FactoryUtils.processPendingEvents(FactoryUtils.java:66)
at com.mathworks.mwswing.SynchronousInvokeUtility.queueSynchronousEvent(SynchronousInvokeUtility.java:59)
at com.mathworks.toolbox.dastudio.diagView.DiagnosticViewerWindow.modifyDiagnosticViewerTableModel(DiagnosticViewerWindow.java:1205)
at com.mathworks.toolbox.dastudio.diagView.DiagnosticViewerWindow.removeAllMsgs(DiagnosticViewerWindow.java:939)
.
Error in ==> DAStudio.DiagnosticViewer.visibleListener>visible_broadcast at 25
h.synchronizeJavaViewer;
Warning: Error occurred while evaluating listener callback.
> In slsfnagctlr>render_l at 993
In slsfnagctlr>view_naglog_l at 280
In slsfnagctlr>broadcast_in_collection_mode at 1088
In slsfnagctlr>broadcast_cmd_event_l at 125
In slsfnagctlr at 77
Nachdem ich allerdings die Parameter eingegeben habe, funktionierte das Modell an sich wieder einwandfrei. Nach anschließendem Löschen der Parameter bekam ich diese Fehlermeldung jedoch nicht mehr, sondern stattdessen den in diesem Fall üblichen "Block Error".
Ich hatte bereits vermutet, dass der Java Runtime Error damit zusammenhängt, dass ich Matlab 7 mit Win7, 64Bit verwende, allerdings scheint es nicht daran zu liegen, denn auch auf einem alten WinXP-Rechner kann die GUI nicht ausgeführt werden (auch nicht, wenn sie direkt dort erstellt wird).
Kennt jemand vielleicht diese Fehlermeldung und kann mir behilflich sein?
Falls jemand eine Idee hat, woran das Problem liegen könnte, sende ich ihm auch gerne das Simulink-File als PN, da es sich um einen Teil meiner Bachelorarbeit handelt, möchte ich die Datei jedoch nicht ins allgemeine Forum hochladen...
Noch einmal vielen Dank für eure Mühen!
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.