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

Kommunikation von GUI mit anderen mfiles

 

andyheld
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 10.11.2009, 11:18     Titel: Kommunikation von GUI mit anderen mfiles
  Antworten mit Zitat      
Hallo,

ich hab mich schon ein bisschen umgesehen gehabt, aber nichts gefunden was direkt auf mein Problem zutrifft, daher hier mein Problem:

Ich möchte für einen Pratktikumsversuch eine MATLAB-Anwendung erstellen, welche die Daten der Anlage ausliest, verwertet und dann wieder Werte ausgibt.
Das Problem ist, dass die Auswertung der Messdaten kontinuierlich erfolgen soll (was über ein m.file auch super läuft) nun sollen diese Werte in einer GUI angezeigt werden (also regelmäßig aktualisiert) und durch das GUI eingestellte Werte regelmäßig an das m.file und darüber an die Anlage übergeben werden.

Also brauch ich nun nen Tipp/Anleitung/usw. wie ich diese regelmäßig Abfrage und Übergabe der Daten realisieren kann.

Bitte so verständlich wie möglich Very Happy

Danke schonmal.
gruß andy
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 12.11.2009, 12:44     Titel:
  Antworten mit Zitat      
Hallo Andy,

mit uicontrol kannst du verschiedene Gui-Komponente (checkbox, text, bushbutton,....) in einer Figure erstellen.

Diese Komponente erstellst in einem eigenen Skript. Sie müssen gekennzeichnet durch 'Tag' (wichtig). Denn durch den 'Tag' kannst du auf Sie
zugreifen innerhalb einer Funktion oder Skript.

Für Jede bzw fast jede Komponente kannst du eine Callback function erstellen, die beim benutzen dieser Komponente ausgeführt wird.

Beispiel:

Hier ein Text und ein pushbutton. Der Text wird bei clicken vom button mit Hallo gefüllt.

Hier wird das GUI erstellt.
Code:

%Einfaches Beispiel
%Erstellen von GUI Komponenten
Puschbutton = uicontrol('Style', 'pushbutton', 'String', 'Text fuellen',...
    'Position', [20 150 100 70],'Tag','Button','callback','textfuellen');

Text = uicontrol('Style', 'Text', 'String', '','Fontsize',35,...
    'Position', [170 150 150 70],'Tag','Text');

 


In dieser Funktion wird das Text gefüllt.
Code:

function  textfuellen()

%Text Finden
TextObj = findobj(gcf,'Tag','Text');

%Schreibe Hallo ins Text
set(TextObj,'String','Hallo');
 


Ich hoffe das hilft ein bisschen.

Gruß,

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
andyheld
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 16.11.2009, 09:39     Titel:
  Antworten mit Zitat      
Hallo Jose,

an sich hilft es schon, aber ich glaube das weiß ich alles schon.
Mir geht es darum, dass das GUI kontinuierlich Daten zu einem mfile (oder Workspace) sendet und andere Daten empfängt und dann darstellt. Habe da noch nichts (für mich verständliches) gefunden.

gruß andy
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2009, 11:18     Titel:
  Antworten mit Zitat      
Hi
Wenn du das in bestimmten Interwal machen möchtes kannst du das vielleicht mit einem Timer machen.

Gruss Fragewurm
Private Nachricht senden Benutzer-Profile anzeigen
 
andyheld
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 16.11.2009, 16:32     Titel:
  Antworten mit Zitat      
Ja das geht schon eher in die Richtung eines Timers. Jedoch habe ich keine Ahnung wie und wo ich den Einbauen soll und wie genau ich die Daten übergeben kann.
Wälze im Moment alle möglichen Bücher in der Bibliothek, aber entweder bin ich zu blind/zu doof oder es gibt in den Büchern nix brauchbares.

gruß andy
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2009, 08:16     Titel:
  Antworten mit Zitat      
Hi
kleines Bsp. für Timer:
Code:


handles.time = timer('TimerFcn',@timerCallback,'Period',1,'ExecutionMode','FixedDelay','Userdata',handles);  % Timer-Definition

% Speicher der Struktur
guidata(MyFigure,handles);
......

% Funktion
function timerCallback(hObject,eventdata)
handles= get(hObject,'Userdata'); % laden der Struktur

% Hier Aufgabe des Timers zB.
fprintf('ich werde einmal die sec aufgerufen ');
......


%Funktion
function close_all
handles= guidata(hObject);
stop(handles.time); % Timer wieder anhalten
close all ;
 

Das Bsp. bezieht sich auf ein GUI (MyFigure).

Wegen der Datenübergabe dein Model ist das nur eine Software Simulation
oder hast du ein richtiges Hardware Model dann wäre die Frage über
welche Schnittstelle dieses mit deinem PC komuniziert.
Private Nachricht senden Benutzer-Profile anzeigen
 
andyheld
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 17.11.2009, 10:02     Titel:
  Antworten mit Zitat      
Erstmal danke für das Beispiel. Ich werde mal sehen ob ich damit was anfangen kann.

Mein Model ist eine Dreitank-Anlage. Die Daten werden über einen Modbus an einen COM-Port gesendet, von welchem MATLAB die Daten liest/schreibt.

Das funktioniert soweit auch schon. Nur liegen die Daten dann im Workspace und ich hab noch keien Ahnung wie ich dem GUI beibringe sich die Daten zu holen Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2009, 10:08     Titel:
  Antworten mit Zitat      
für den Daten transfer (Workspace)
schau dir mal
Code:

evalin('base','Variable')  % aus Workspace holen
% und
assignin('base','Variablename im WS',Variable zuübergeben) % ins WS speichern
% an
 


Gruss Fragewurm
Private Nachricht senden Benutzer-Profile anzeigen
 
andyheld
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 17.11.2009, 10:16     Titel:
  Antworten mit Zitat      
Das übergeben funktioniert schonmal super. Danke dir. Hatte das zwar auch schon selber gefunden gehabt, aber nicht zum Laufen bekommen.

Nun muss ich mir nur noch den Timer hinbiegen. Wink

Danke soweit. Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
andyheld
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 18.11.2009, 11:35     Titel:
  Antworten mit Zitat      
Hallo also ich denke das läuft soweit.
Nur hab ich jetzt das Problem, wenn ich mein Programm starte reagiert MATLAB auf nix mehr. Ich denke mal es liegt an der while-Schleife die ich da drin habe (als Endlosschleife).
Kann mir da einer ne Alternative verraten? Oder liegt es daran, dass die Schleife im Moment noch relativ wenig Befehle beinhaltet und somit einfach zu schnell ist?
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2009, 13:10     Titel:
  Antworten mit Zitat      
Hi
wenn du einen Timer hast brauchst du doch keine while-Schleife mehr da
du doch alles zyklische im Timer erledigen kannst.

Gruss Fragewurm
_________________

Fehler jeglicher Art Dienen zur allgemeinen Belustigung
Private Nachricht senden Benutzer-Profile anzeigen
 
andyheld
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 18.11.2009, 13:17     Titel:
  Antworten mit Zitat      
Fragewurm hat Folgendes geschrieben:
Hi
wenn du einen Timer hast brauchst du doch keine while-Schleife mehr da
du doch alles zyklische im Timer erledigen kannst.

Gruss Fragewurm


Kann ich den selben Timer für das GUI und die anderen mfiles benutzen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2009, 13:23     Titel:
  Antworten mit Zitat      
Generel würde ich mit meinem Wissenstand sagen Nein.
Was macht den deine Funktion(M-File) das sie permanet laufen muss
aber nicht deine GUI machen kann (wo du den Timer hast)?

Gruss Fragewurm
_________________

Fehler jeglicher Art Dienen zur allgemeinen Belustigung
Private Nachricht senden Benutzer-Profile anzeigen
 
andyheld
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 10.11.09
Wohnort: Ilmenau
Version: R2009a
     Beitrag Verfasst am: 18.11.2009, 13:32     Titel:
  Antworten mit Zitat      
Momentan liest sie Messwerte aus (+Umrechnung) und gibt die Stellwerte aus.
Dabei werden alles in allem noch vier weitere mfiles benutzt, die die Kommunikation zwischen dem Modbus und Matlab übernehmen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2009, 13:36     Titel:
  Antworten mit Zitat      
Dann ruf das M-File doch durch den Timer auf dann kannst du dir die While-Schleife sparen.
Oder nicht?

Gruss Fragewurm
_________________

Fehler jeglicher Art Dienen zur allgemeinen Belustigung
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.