Ziel ist es, dass ich später zwischen 1 und 20 unterschiedliche Materialdicken habe die dann in der passenden Variable gespeichert sind. Also in app.Materialdicke1 soll die dann das Ergebnis aus der Multiplikation zwischen Material_DropDown1 und Material_Field1 stehen.
ich kann dir da nur raten, das zu tun, was ich auch tun würde: debuggen.
Insbesondere ist die Frage, was app.Material_DropDown(v) zum Zeitpunkt des Fehlers ist.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
In App.Material_DropDown steht 6.0073 drin. Woher die Zahl kommt weiß ich aber nicht. Was aber auffällt ist, dass in den Zeilen davor und danach niedrigere bzw. höhere Zahlen sind. Also 5.0076 und 7.0073.
In (v) steht der Wert aus meiner For Schleife. Das stimmt ja auch soweit, weil es ja mein erster Materialwert sein soll. Was in Value steht wird mir nicht angezeigt.
Ich weiß nicht ob strcmp damit nicht klar kommt? Ein paar Zeilen vorher sieht das ganz nämlich so aus und das funktioniert.
Dann ist es nicht sinnvoll, mit .Value weiter zu schreiben. Ich habe dir ja in vorherigen Beiträgen schon set empfohlen. Um Werte abzufragen, dementsprechend get.
Zitat:
Ich weiß nicht ob strcmp damit nicht klar kommt?
Daran liegt es nicht, denn die Fehlermeldung tritt ja schon beim Erstellen des Arguments von strcmp auf.
Zitat:
Ein paar Zeilen vorher sieht das ganz nämlich so aus und das funktioniert.
Dann sollte die logische Konsequenz sein, sich im Debugger anzusehen, was in dieser Zeile anders ist.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
was meinst du mit Feldern? Steuerelemente wie uidropdown?
Den Callback kannst du als Parameter-Wert-Paar angeben. Für uidropdown ist das im Doku-Beispiel "Code Response to Drop Down Selection" gezeigt.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Moin, ja genau es sind DropDown Menüs und Eingabefelder. Ich weiß nicht genau wo ich den Callback von den nach dem Start erstellten DropDown und Eingabefeldern hin programmieren muss.
Da wo ich die Callbacks die ich aus der Designview des App Designers erstellt habe befinden kann ich keine eigenen Callbacks programmieren. Ich hab einfach mal einen Screenshot gemacht und hochgeladen. Vielleicht ist das was ich gemacht habe etwas verständlicher.
In den properties (Zeile 103) befinden sich meine Variablen die ich später verwende. In Zeile 139 befindet sich eine Funktion mit der ich die Ticks bei einem Graphen ändere. Ab Zeile 158 befindet sich mein eigentliches Programm. Da habe ich Funktionen zum Verbinden und entfernen des Messgerätes und noch mehr. Diese einzelnen Funktionen rufe ich dann in den Callbacks ab Zeile 723 auf.
Wo muss ich da meine selbst programmierten Callbacks hinschreiben?
Eine andere Frage ist auch. Macht das so Sinn wie ich das programmiert habe oder gibt es da einfachere und Übersichtliche Methoden? Das ist mein erstes Programm mit dem App Designer. Sonst habe ich mal was mit dem Command Windows gemacht und kurze m Files geschrieben.
Wo muss ich da meine selbst programmierten Callbacks hinschreiben?
Die Funktion würde ich der Einfachheit halber als separate Funktion ablegen.
Zitat:
Ich hab einfach mal einen Screenshot gemacht und hochgeladen.
In dem Screenshot sieht man sehr wenig. Ich sehe aber Funktionen, die anscheinend über 100 Zeilen lang sind. Diese würde ich aus der App auslagern. Mal ganz davon abgesehen, dass ich mich frage, ob die Funktionen wirklich so lange sein müssen.
Zitat:
Macht das so Sinn wie ich das programmiert habe
Kann ich anhand dieses Bildes nun wirklich nicht beurteilen.
Zitat:
gibt es da einfachere und Übersichtliche Methoden?
Sei mir nicht böse, aber das solltest du dir doch überlegen, bevor du Hunderte Zeilen Code schreibst?!
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Sei mir nicht böse, aber das solltest du dir doch überlegen, bevor du Hunderte Zeilen Code schreibst?!
Naja das Program ist nach und nach gewachsen. War mir am Anfang nicht klar, dass es doch so viel wird bzw. noch ein paar Zeilen dazu kommen. Wie gesagt, mein erstes großes Matlab Programm. Ich werde mal gucken, dass ich ein paar Funktionen auslagere.
Ich verstehe nicht wie ich einen Callback für die Eingabefelder und DropDown Menüs schreiben kann. Die vom App Designer erstellen Callbacks sehen so aus:
Code:
function StartFrqFDS_FieldValueChanged(app, event)
settings(app) end
function StartFrqFDS_DropDownValueChanged(app, event)
settings(app) end
functionproperties(app) %Eigenschaften für die Messung vornehmen
for v = 1:value
app.Ausspg_Field(v) = uieditfield('numeric','Parent',app.Messung_Panel(v),'Position',[206656525],'Value',1,'FontSize',15); %,'Limits',[1200]
app.Ausspg_DropDown(v) = uidropdown('Parent',app.Messung_Panel(v),'Position',[271656525],'FontSize',15,'Items',{'mV','V'},'Value','V');
end
%Warnung, wenn Ausgangsspannung größer als 200V ist
if app.Ausgangsspg(v) > 200 msgbox('Ausgangsspannung darf nicht über 200V sein', '','warn')
app.Ausspg_Field(v).Value = 200;
app.Ausspg_DropDown(v) = 'V';
app.Ausgangsspg(v) = 200;
end end
In den Properties erstelle ich das Eingabefeld und das DropDown Menü für die ich Callbacks haben möchte. Den Wert aus dem Eingabefeld und dem DropDown Menü multipliziere ich mit einander und wenn das Ergebnis größer als 200V ist soll eine Meldung erscheinen und 200V in das Eingabefeld eingetragen werden.
Was funktioniert nicht?
Bei allem Verständnis dafür, dass es das erste große Programm ist etc.: schreibe bitte immer die komplette Fehlermeldung oder das sonstige unerwartete Verhalten dazu. Sonst ist es schwierig bis nicht möglich, dir zu helfen.
Legst du irgendwo fest, dass Ausspg_FieldValueChanged der Callback für app.Ausspg_Field(v) sein soll? Wenn nicht, woher soll MATLAB das dann wissen? Bedingt durch getrennte Workspaces wird MATLAB nicht wissen, was in der Callback-Funktion v sein soll.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Mein "Callback" hat nicht funktioniert. Ich habe mir einen Breakpoint gesetzt um zu gucken was genau das Problem ist. Nur ist mein Programm nicht zum Breakpoint gesprungen.
Harald hat Folgendes geschrieben:
Legst du irgendwo fest, dass Ausspg_FieldValueChanged der Callback für app.Ausspg_Field(v) sein soll? Wenn nicht, woher soll MATLAB das dann wissen?
Ich bin davon ausgegangen, dass ich das hiermit festlege:
Zitat:
function Ausspg_FieldValueChanged(app)
get(app.Ausspg_Field(v),'Value');
end
Scheint es aber nicht zu sein. Also muss es gefähr so aussehen?
Ich bin davon ausgegangen, dass ich das hiermit festlege:
Das war aber sehr optimistisch.
Zitat:
Also muss es gefähr so aussehen?
Das ist wohl aus dem automatisch erstellten Code der App? Wäre nicht meine erste Wahl, aber kannst du versuchen. Meine erste Wahl wäre, mich an die Doku zu halten, siehe die Antwort von gestern, 15:04.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.