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

Variable in gui übernehmen

 

herbert34

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2008, 10:47     Titel: Variable in gui übernehmen
  Antworten mit Zitat      
hallo alle zusammen,

habe ein kleine Problem ich will einen Wert von meinem Workspace in meinem gui ausgeben. Hier für habe ich ein Edit-Text genommen. doch leider Fehlt mir jetzt der code um meine Variable X vom Workspace in meinem gui angezeigt zubekommen. hoffe mir kann jemand helfen.

danke schon mal


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 20.04.2008, 13:04     Titel:
  Antworten mit Zitat      
Hi herbert34,

Wundere Dich nicht, wieso Deine einfache Frage noch nicht beantwortet wurde. Es wurde schon fast in allen Variationen gestellt, so dass Du es schon längst gefunden hättest, falls Du die Suche-Option im Forum benutzt hättest.

Wenn Du in Deinem Edit-Feld den Namen der Variable eingegeben hast, kannst Du diese Variable (die im Workspace sich befindet) wie folgt auslesen:
Code:
var_name = get(handles.edit1,'String');
data = evalin('base',var_name)


Schaue auch die Funktion ASSIGNIN. Damit kann man einer variable im Workspace etwas aus einer Funktion zuweisen.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
herbert34

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2008, 11:02     Titel:
  Antworten mit Zitat      
hi,
danke erstmal für die antwort, doch leider komm ich damit nicht weiter so richtig. habe den Code jetzt einfach in mein editreingeschrieben und es geht garnix.


Code:
function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double
var_name = get(handles.edit1,'String');
data = evalin('base',var_name)
 


Leider bin ich auch noch nicht so fit mit matlab gui. hatte sonst immer meine oberflächen in Excel gemacht doch leider geht das jetzt hier nicht.

gruß
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 21.04.2008, 13:37     Titel:
  Antworten mit Zitat      
mit den 2 Zeilen von mir hast Du die Variable vom Workspace ins GUI übernommen. Wie diese dargestellt werden muss kann ich Dir nicht sagen... ich weiss nicht was darin gespeichert ist - ist also schon Deine Aufgabe. Wenn es ein String oder ein Wert ist, dann kannst Du den zB in einem Text-Objekt anzeigen lassen.

Schreibe wenigstens was genau muss angezeigt werden.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
herbert34

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2008, 15:23     Titel: Antwort
  Antworten mit Zitat      
also ich habe es jetzt so gelöst

Code:
set(handles.Anzeige_Messwert_BE1, 'string', evalin('base', 'Messwert_BE1'))

Doch mein Problem hier bei ist immer leider noch das ich jedes mal in die Edit_box klicken muß und Enterdrücken muß um den neuen Wert zubekommen. Da sich meine Werte aber schnell ändern und ich auch mehrere
Edit_boxen, weiß ich nicht wie ich es hinbekomme das mir der wert direkt ohne die Box anzuklicken gezeigt wird.
bin aber schon ein kleines stück weiter danke. hoffe aber es gibt eine lösung für mein Problem.

Gruß
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 21.04.2008, 15:56     Titel:
  Antworten mit Zitat      
Es gibt leider keine Überwachung der Variablen unter MATLAB. D.h. falls sich die Variable ändert kriegst Du es nicht mit (ok - mit einem Timer kann man die Variablen im Workspace schon überwachen, aber das ist etwas dirty...). Wenn Du jedoch weisst wo die Variable aktualisiert wird, kannst Du von dort aus die GUI aktualsieren.


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
herbert34

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2008, 08:46     Titel:
  Antworten mit Zitat      
Also meine Variable wird in Excel Aktualisiert und dann an den Workspace gegeben soll ich dann dort jedes mal in meinem Makro wieder die gui aufrufen
von Excel aus? gibt es denn beispiele mit dem timer? habe von der möglichkeit schon gehört doch kann ich mir da nix richtig darunter vorstellen.

gruß
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 22.04.2008, 10:27     Titel:
  Antworten mit Zitat      
Zitat:
soll ich dann dort jedes mal in meinem Makro wieder die gui aufrufen von Excel aus?

Im Prinzip ja. Aber es sollte nicht die komplette Aufgerufen werden, sondern lediglich der Inhalt des UI-Objcts aktualisiert werden. Wenn Du den Tag von dem Object kennst, kannst Du ja mit FINDOBJ/FINDALL den Handle bestimmen und den Inhalt aktualisieren.

Einen Beispiel mit dem Timer habe ich nicht parat da - finde nirgends auf meinem Rechner, obwohl ich weiss, dass ich sowas schon mal gemacht habe. Soweit ich mich erinnern kann gibt es sowas auch im FileExchange. Schau dort nach. Aber wie gesagt - dieser Weg den Objekt zu aktualisieren ist very very schlecht... Ich würde es nicht machen!


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
herbert34

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.04.2008, 11:09     Titel:
  Antworten mit Zitat      
Also ich glaub das ist jetzt sehr über meinem wissen. wie ich dieses angehen soll. Also

Also meine Übergabe von Excel zu Matlab sieht so aus:
Zitat:
Vektor = Array(0, 0) 'Erzeugt ein Array für Simulink da Simulink ein Array brauch
Vektor(1) = Messwert_BE1 'Schreibt an die Zweite Stelle den Messwert_BE1

MLPutVar "Vektor", Vektor 'Gibt das Array an Matlab geht nicht mit MlPitMatrix da das Array nur in VB ist
MLEvalString ("simin=Vektor'") 'Generiert aus dem Spalten Array durch ' ein Zeilen Array
MLEvalString ("sim 'Verstaerkt'") 'Startet Simulink !!!Die .mdl muß am richtigen Platz stehen!!!

MLGetMatrix "simout", "Generatormodel!DeltaU" 'Schreibt den Wert aus Simulink in die Zelle DeltaU_V
MatlabRequest 'interne Variable von Link Spreadsheet !!!wird benötigt!!!

MLEvalString ("Messwert_BE1=simin(1,2)") 'nimmt nur den wichtigen Teil von Simin


Und steht dann als Messwert_BE1 im Workspace. Kann sie aber auch dirket von excel in das Gui geben. Das ist ja glaube ich was du meinst?
So jetzt heißt mein Gui EinAus und er Code von der Edit_Box ist:
Code:
function Anzeige_Messwert_BE1_Callback(hObject, eventdata, handles)

%Anzeige_Messwert_BE1 = put(handles.Anzeige_Messwert_BE1,'Value');
%set(handles.Anzeige_Messwert_BE1,'String',num2str(Anzeige_Messwert_BE1));

set(handles.Anzeige_Messwert_BE1, 'string', evalin('base', 'Messwert_BE1'))


Jetzt fehlt mir halt echt das Verständnis für die Syntax.
Würde jetzt in meinem Excel halt mit

MLEvalString(hier müsste dann ja der name vom Gui folgen, Name von der Edit_box, und der befehl es in die Edit_Box zuschreiben )
??????????????????????
Crying or Very sad
Oder wenn ich den wert im Workspace habe einen Befehl von Excel aus das er den Wert in die Edit_box schreibt.
MLEvalString(Variable vom Workspace zum Edit_BOX)

Ich hoffe mal du hats noich Lust mir zuhelfen, denn sonst sehe ich da jetzt echt kein Land mehr....
 
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.