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

GUI eventlistener

 

tutui
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 12:21     Titel: GUI eventlistener
  Antworten mit Zitat      
Hallo,

ich habe ein Problem mir der "Echtzeit"-Darstellung von aus Simulink ausgelesenen Werten in GUI mittel eines eventnlisteners.

Bisher hatte eigentlich alles funktioniert, doch plötzlich tritt folgendes Problem auf:

ich habe meine listener nach diesem Vorbild gesetzt und lese sie auch danach aus

Code:
% The GUI handles are by default hidden, turn them on
set(0,'ShowHiddenHandles','on');

% Set up the arguments that will go into the gain block event callback listener
blk = 'mytestmdl/Gain';
event = 'PostOutputs';
listener = @updategui;

% Create the listener
h = add_exec_event_listener(blk, event, listener);

% 3. Create a MATLAB file function that will get the Gain block's runtime % output parameter and pass it to the GUI.

 function varargout = updategui(varargin)

% create a run time object that can return the value of the gain block's
% output and then put the value in a string.
rto = get_param('mytestmdl/Gain','RuntimeObject');
str = num2str(rto.OutputPort(1).Data);

% get a handle to the GUI's 'current state' window
statestxt = findobj('Tag','curState');

% update the gui
set(statestxt,'string',str);


insgesamt sind es ca. 8 stück.

Code:
rto = get_param('Parameter_Sim/NIBP','RuntimeObject');
str = num2str(rto.OutputPort(1).Data);
statestxt1 = findobj('Tag','NIBP');
set(statestxt1,'string',str);
x1 = get(statestxt1,'string');
y1 = str2num(x1);
if y1<=100
   set(statestxt1,'BackgroundColor','red')
elseif y1>180; set(statestxt1,'BackgroundColor','yellow')
elseif y1>=120 && y1<=160; set(statestxt1,'BackgroundColor','green')
else   set(statestxt1,'BackgroundColor','green')
end


rto = get_param('Parameter_Sim/HF','RuntimeObject');
str = num2str(rto.OutputPort(1).Data);
statestxt3 = findobj('Tag','Herzfrequenz');
set(statestxt3,'string',str);
x3 = get(statestxt3,'string');
y3 = str2num(x3);
if 50<y3<=100
   set(statestxt3,'BackgroundColor','green')
elseif y3>100 && y2<=180; set(statestxt3,'BackgroundColor','yellow')
else   set(statestxt3,'BackgroundColor','red')
end


GUIDE zeigt mir in den feldern alle werte der 8 blöcke nacheinander an, obwohl ich jedem block einen einzelnen wert zugewiesen habe.
block 1 : wert 1 -> wert 2 -> wert3 etc. und das für jedes feld.

Ich versteh nicht, wo der Fehler liegt, da ja sonst alles geklappt hatte nur jetzt plötzlich nicht mehr Sad

gleichzeitig stellt er die farben nicht korrekt dar, also nur grün oder rot. gelb wird nie angezeigt, obwohl dieser wertebreich öfter auftritt.

ich habe alles in die opening function der GUI m. file geschrieben, was nie probleme verursacht hatte

Kann mir jemand helfen??? Sad
Private Nachricht senden Benutzer-Profile anzeigen


Gast1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 13:17     Titel:
  Antworten mit Zitat      
Hi,

ich kann leider nur etwas zu dem Farbproblem sagen, des Rest habe ich nicht so recht verstanden (meinst du mit Feldern im GUIDE static textfields? und da stehen dann in jedem alle Werte drin? vielleicht steh ich hier auch nur aufm Schlauch)

Du benutzt folgende if-Abfrage:

Code:

if 50<y3<=100
 


Das liefert immer eine 1. Matlab macht erst 50<y3. Da kommt 0 oder 1 raus. Danach wird geschaut, ob es kleiner/gleich 100 ist. Das ist mit 0 oder 1 immer erfüllt--> if Abfrage muss aufgeteilt werden (hast du ja bei der ersten Funktion auch richtig gemacht)

Code:

if 50<y3 && y3<=100
 
 
tutui
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 13:27     Titel:
  Antworten mit Zitat      
ok. dann muss ich das noch ausbessern Smile

danke! Smile

also die werte werden nacheinander in allen Feldern gleichzeitig angezeigt. statt der NIBP wert nur dem NIBP Feld zugeordnet wird (wie ich es ja eigentlich in der m. file programmiert habe) erscheinen danach in Rotation auch die anderen beiden werte und so ist es für alle entsprechenden static text felder.
die anzeige erfolgt direkt in der Reihenfolge, wie sie im m.file stehen
Private Nachricht senden Benutzer-Profile anzeigen
 
tutui
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.01.2012, 19:29     Titel:
  Antworten mit Zitat      
ich habe weiterhin herum experimentiert.
der fehler muss bei matlab selbst liegen. Confused

manche "block-kombinationen" funktionieren zusammen in einem Simulink Modell, d.h. nur ein block-wert pro static-field, statt alle werte aller Blöcke hintereinander weg und manche Blöcke, funktionieren nur, wenn sie allein in einem Simulink Modell stehen.

in der Programmierung gibt es, außer der Bezeichnungen der Blöcke, keinen Unterschied!

ich habe absolut keine Ahnung, was hier schief läuft.
es ist zum verzweifeln, es lief alles einwandfrei und von jetzt auf gleich, geschehen solche dinge. Es werden auch keine Fehler angezeigt.

vlt hat ja doch jmd einen tipp für mich?
das ist ein teil einer abschlussarbeit und ich dachte eigentlich ich wär schon fertig Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen
 
flodian
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 30.01.12
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 15.02.2012, 14:54     Titel: schon eine lösung?
  Antworten mit Zitat      
ich bin auch nach dem beispiel am probieren. leider bekomme ich nicht mal einen wert raus. Es schein fast so, als wäre das live-auslesen mit Real-Time Windows Target nicht möglich.... Rolling Eyes

meine aufgabestellung scheint deiner zu ähneln:
es sollen in echtzeit temperaturen aus simulink an die gui gegeben werden.
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 - 2025 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.