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

Variablen im Workspace durch pushbutton ändern

 

Ingo
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 20.06.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2007, 08:20     Titel: Variablen im Workspace durch pushbutton ändern
  Antworten mit Zitat      
Moin alle anderen,

habe mal ne Frage zu den GUIs. Mann findet nämlich wirklich keine guten Hinweise.

Wie kann ich über einen Klick auf einen Bush-Button erreichen, dass Werte(Variablen) im Workspace geändert werden?


Gruß Ingo


Edit: Ich habe mal den Titel geändert. "GUI" war nicht so aussagekräftig. Gruß, Bijick
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 20.06.2007, 11:19     Titel: Globale Variable
  Antworten mit Zitat      
Hallo Ingo,

ich gehe bei meiner Antwort mal davon aus, dass du prinzipiell schon mal ein GUI hast und in der entsprechenden Funktion
Code:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)

einer Variablen einen Wert zuweist.

Wenn die Reaktion sofort erfolgen soll (also nicht erst nach Schließen des GUIs), ist es am einfachsten, die Variable im Workspace und in der Funktion als global zu deklarieren. Dann wirkt sich eine Änderung im GUI auf den Workspace aus.

Wenn das nicht geht oder nicht erwünscht ist, muss man an den output-Argumenten des GUIs schrauben, das ist etwas komplizierter. In diesem Fall sind die Variablen aber auch erst nach Beendigung des GUIs im Workspace, wie bei jeder anderen Funktion auch.

Wie brauchst du es denn?
Herzliche Grüße
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Ingo
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 20.06.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2007, 11:27     Titel: GUI
  Antworten mit Zitat      
Hi,

hab nicht viel Erfahrung mit GUIs. Eigentlich möchte ich eine Variable in Simulink verändern. Da ich diese bis jetzt im aber aus dem Workspace einlesen, dachte ich dass dieses der leichtere weg sei.

In meinem Simulink Programm steht die Variable "bearbeiten" dafür, ob er diesen Abschnitt bearbeitet oder nicht. ist "bearbeiten" = 0 wird sie nicht bearbeitet. Bei 1 schon. Je nach dem kann ich jetzt ganz einfach den Wert im Workspace ändern.

Um das noch besser zu machen wollte ich das mit einem GUI machen in dem ich einfach einen Button oder radiobutton betätige.

Gruß Ingo
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 20.06.2007, 13:19     Titel: Fortsetzung
  Antworten mit Zitat      
Hm, mit Simulink kenne ich mich wiederum nicht aus. Hat man da auch ein m-File, von dem aus man den Prozess steuert? Dann könnte man dort das GUI mit seinem Namen (z.B. myGUI) aufrufen. Daraufhin öffnet sich myGUI.fig mit dem Button.
In dem dazugehörigen myGUI.m sollte dann stehen (der erste Absatz wird automatisch erzeugt):
Code:
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global bearbeiten

if bearbeiten == 0
    bearbeiten = 1;
else
    bearbeiten = 0;
end


Damit wird der Zustand der Variablen "bearbeiten" bei jedem Klick auf den Button geändert. Voraussetzung ist allerdings, dass sie auch im Workspace als global deklariert ist.

Setze ich noch zuviele GUI-Kenntnisse voraus?
Herzliche Grüße
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
rapand
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 20.06.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2007, 21:29     Titel: GUI
  Antworten mit Zitat      
Hallo Ingo,
vielleicht bringen Dir die Funktionen assignin() und eval() was damit kannst Du Variablen aus dem 'base' -Workspace holen oder dort hin schreiben.
Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Babba
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 19.06.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2007, 09:04     Titel:
  Antworten mit Zitat      
Hallo Ingo,

vor dem gleichen Problem stand ich vor ein paar Wochen auch.

Ich hab ebenfalls eine Gui über die ich ein Simulink Modell starte.
Die Variablen die ich im Gui eingebe übergebe ich auch an den Workspace und hole sie mir mit Hilfe von Konstant Blöcken ins Simulink.

Die Übergabe in den Workspace kannst du recht einfach machen.

Einfach die folgende Zeile in den Callback des Buttons schreiben.

Code:
name = get(handles.callbackname, 'String');
assignin('base','name_im_workspace',name);


Mit dem get Befehl holst du dir den aktuellen Wert ( z. B. aus einem Editierfeld) den du in den Workspace schreiben willst.

Bei drücken des Buttons wird mit assignin der Wert an den Workspace übergeben.

Gruß Heiko
Private Nachricht senden Benutzer-Profile anzeigen
 
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.