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

Plotaktualisierung innerhalb einer Schleife

 

Chroume
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 29.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2013, 12:28     Titel: Plotaktualisierung innerhalb einer Schleife
  Antworten mit Zitat      
Hallo Leute,

Ich bin neu hier im Forum aber hoffe trotzdem dass mein Post am richtigen Ort und verständlich für euch sein wird Smile

Folgendes: Ich arbeite im Moment an einem Interface, welches ich mittes GUIDE erstelle. Es soll vorerst 3 Axes haben, ein Edit Text Feld sowie 2 Push buttons. Das .m file welches Automatisch beim speichern des Interfaces erstellt wird lasse ich zum größten Teil unverändert und rufe in den Callbackfunktionen der Pushbuttons eine Funktion
Code:
function NDI_track_handles(hObject,handles,action)
mit switch cases für den jeweiligen Button auf.

Der erste Pushbutton stellt die Kommunikation mit einem Gerät her, sprich ich definiere ein handle
Code:
handles.s1=serial('COM3','BaudRate',9600,'DataBits',8,'Parity','none','StopBits',1,'Terminator','CR');
öffne die Schnittstelle, initialisiere das Gerät mit ein paar Befehlen und schliesse die Schnittstelle wieder. Funktioniert alles soweit ganz gut.

Beim zweiten Pushbutton treten allerdings mehrere Fehler auf. Zum einen kann ich das gerade mit dem ersten Pushbutton angelegte handle "s1" mittels
Code:
nicht öffnen weil er angeblich das Handle nicht mehr kennt (sollten handles nicht so ne Art übergeordnete "Variable" sein die man für das gesamte Programmspeichert?). Naja gut ich definiere die s1 mit den selben Parametern neu und kann die Schnittstelle wieder ansprechen - kein Problem.

Jetzt kommt der knifflige Teil:

1. Ich lege in dem Switch case für den zweiten Pushbutton eine Matrix mit i=x Zeilen, und 8 Spalten an. X hole ich mir über Eingabe in ein Edit Text Feld im Interface. In diese Matrix speichere ich Werte ein, welche ich mittels einer for-Schleife abhole
Code:
          for i = 1:x

                pause(1/20);
                fprintf(s1, 'TX 0001');
                reply = fscanf(s1);
...


Gleichzeitig möchte ich in dem jeweiligen Scheifenumlauf die aktuellen werte in meine 3 Achsen einzeichnen(XY, YZ, XZ Koordinaten), das klappt irgendwie nicht so wie ich mir das vorstelle.

Ich führe in jedem Schleifenumlauf also folgendes aus:
Code:
 
cla(handles.axes1,'reset')
            cla(handles.axes2,'reset')
            cla(handles.axes3,'reset')
           
%Daten aus der Matrix
x=str2double(Datenmatrix(i,5));                                                    
y=str2double(Datenmatrix(i,6));
z=str2double(Datenmatrix(i,7));

            axes(handles.axes1);
            axis([-400 400 -200 200])
            xlabel('X-Achse');
            ylabel('Y-Achse');
            grid on;
            hold on;
            handles.xyachse=plot(handles.axes1,x,y,'ro');
           

            axes(handles.axes2);
            axis([-1200 1200 -1200 1200])
            xlabel('X-Achse');
            ylabel('Z-Achse');
            grid on;
            hold on;
            handles.xzachse=plot(handles.axes2,x,z,'ro');
           
            axes(handles.axes3);
            axis([-1200 1200 -1200 1200])
            xlabel('X-Achse');
            ylabel('Z-Achse');
            grid on;
            hold on;
            handles.yzachse=plot(handles.axes2,y,z,'ro');


Allerdings funktioniert es irgendwie nicht so wie ich mir das vorstelle , auserdem kommt es mit auch seltsam vor das ich gefühlte 20 mal in der Sekunde die Achsen initialisiere, etwas plott und dann wieder säubere, weil ich sonst sämtliche Messwerte angezeigt bekomme und nicht nur den aktuellen. Ich kenne leider keine andere Möglichkeit wie ich dass hinbekommen könnte. Gibt es da irgendwie eine Variante wie ich vieleicht die Achsen nur 1x initialisieren muss, und dann die Werte "updaten" kann? Eventuell mit handles oder sowas? Ausserdem habe ich versucht den obigen Code in eine eigene Funktion zu schreiben und diese dann mit jedem Schleifenumlauf aufzurufen, aber da sagt er mir dann wieder dass er die Achsen nicht kenn? Ich bin etwas mit der "Sichtbarkeit" von Daten/Objekten in Matlab verwirrt mal kennt er sie mal wieder nicht.

Danke schonmal für jeden der mir auch nur bei einem Teilproblem helfen kann!
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 18.11.2013, 13:56     Titel:
  Antworten mit Zitat      
ja giebt es. mittels set und xdata,ydata... etc. wurde hir im forum schon mal angesprochen. irgendwie so in der form weis grade nicht genau
Code:
set(h,'XData',A)
h ist der handle und A halt die daten.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 18.11.2013, 16:18     Titel:
  Antworten mit Zitat      
Hallo,

wenn du nur die Positionen einzelner Daten ändern willst, aber den Rest behalten, dann ist der Tipp von Winkow goldrichtig. Vorhin habe ich dafür zufällig ein Beispiel für einen anderen Fragenden erstellt, bei dem sowas passiert. Das sollte alles selbsterklärend sein, sonst frag doch noch mal nach.

Hier geht's zu dem Beitra
http://www.gomatlab.de/visualisieru.....e-koordinaten-t31164.html

Viele Grüße.
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.