Verfasst am: 18.07.2017, 16:33
Titel: Wert von "Edit Box" in Workspace
Hallo,
ich erstelle eine GUI nicht per guide und möchte nach dem Drücken eines pushbutton die Zahl aus einer Edit Box ins Workspace übernehmen. Bei mir scheitert es an der Funktion, die ich schreibe. Der Fehler lautet " Error while evaluating UIControl Callback."
Somit habe ich den Wert, den man ins Textfeld eingibt direkt im Workspace. Für weitere Verwendungen zB in ein Excel sheet zu schreiben benutze ich folgende Funktion.
Code:
function SaveConfig(hObject,event)
Value_1 = evalin('base','Value_1');
Value_2 = evalin('base','Value_2');
Value_3 = evalin('base','Value_3');
Value_4 = evalin('base','Value_4');
Values ={'Time of Measurement','Time of flicker light','Start of flicker light','SMD-LED Intensity';...
Value_1,Value_2,Value_3,Value_4};
sheet = 1;
xlRange = 'A1';
xlswrite(['Configuration_',datestr(now,'mmmm dd, yyyy HH-MM-SS'),'.xlsx'],Values,sheet,xlRange);
end
Aber es gibt noch ein Problem. Die Werte erscheinen erst im Workspace, wenn ich im Befehlsfenster nochmal "return" gedrückt habe. wie kann ich das ändern? Das skript läuft in einer Schleife nach
code...
function callback()
...
endfunction
...
callback()
Hallo,
ich verstehe nicht ganz was du mit Befehlfenster und "return" meinst.
Denke ein paar mehr Infos würde helfen
Arbeitest du mit AppDesigner oder schreibst du deine GUI selber?
Grüße
Ich arbeite mit Octave und benutze zum Auslesen
[code]Value_1 = get(entry_1,'string');
[code][/code]assignin ('base','Value_1',Value_1);
Das Skript läuft durch und im Workspace isrt nichts. Im Befehlsfester stehen auch schon die Zeichen der neuen Zeile
>>
Wenn ich jetzt im Befehlsfenster einmal "Enter" drücke, dann erscheinen die Variablen richitg im Workspace. Es sieht aus, als als könnte das Skript nicht richtig abschließen...
Ich gehe davon aus, dass wenn du deinen Eintrag gemacht hast und dann beispielsweise auf ein anderes Element oder auf einfach auf den Hintergrund deiner GUI klickst, der Cursor im Editfield verschwindet und der Eintrag dann übernommen wird. Das ist aber völlig normal. Oftmals gibt man Werte in die Felder ein und anschließend wird mit einem Pushbutton eine Aktion ausgeführt, das wäre der gleiche Effekt.
Du möchtest eine Live-Anzeige imWorkspace sobald etwas eingetragen wird, oder?
Ich habe einen "Übergabe-Button" erstellt. D.H. die Edit-Felder werden ausgefüllt und mit der Bestätigungstaste augelesen. Innerhalb der Funktion stehen die Variablen dann auch lokal zur Verfügung. In der Main sind sie aber erst nach dem extra return. Gleiches passiert übringens bei der Verwendung globaler Variabler.
function EntryEditFieldValueChanged(app, event)
Entry_Value = app.EntryEditField.Value;
% Um es im Workspace zu sehen assignin('base',"Entry_Value",Entry_Value) end
Über global vars kann ich nichts sagen, habe häufig gelesen, dass man die nicht nutzen soll. Im AppDesigner kannst du dann Variablen als private oder public deklarieren, um diese dann in anderen FUnktionen nutzen zu können. Der AppDesigner ist echt gut und einfach zu verstehen. Findest du in Matlab unter Apps.
Hallo,
stimmt du arbeitest mit Octave, das habe ich vergessen! Ich habe mal etwas aus einer alten GUI von mir kopiert. Die Funktion habe ich als Function-Datei im selben Pfad abgespeichert, die durch die Betätigung des Pushbutton ausgeführt wird.
Der Name der Datei und der Funktion ist Load.
Ist egal, was da bei mir da jetzt drin steht, aber das funktioniert einwandfrei und die Variablen sind bei mir direkt im Workspace. Ich habe noch nie mit Octave gearbeitet, aber vllt klappt es besser, die Funktionen separat und nicht im GUI Skript stehen zu haben?
Danke. Leider spielt Octave nicht mit. Da gibt es ein paar benötigte packages nicht und ach keine alternativen. Ich werde das Problem jetzt anders lösen. Nann mach ich halt ein Eingabefenster und ein separates ausgabefenster. Das geht auf jeden Fall.
Trotzdem nochmal Danke .
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.