- Labornetzteil AliExpress         
Ergebnis 1 bis 8 von 8

Thema: Matlab GUI Plot

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Einstein Avatar von HannoHupmann
    Registriert seit
    19.11.2005
    Ort
    München
    Alter
    42
    Beiträge
    4.534
    Blog-Einträge
    1
    Hallo Malthy ja stimmt du hast mir da mal was gezeigt, hatte ich auch ausprobiert, aber ging dann - soweit ich mich erinnere - auch nicht richtig. Ist aber schon lange her, dass ich mich damit beschäftigt habe.

    Bisher habe ich es so gelöst:
    Code:
        while on_off == 1
             fopen(com);
             fwrite(com, 'SE00051P', 'uint8'); //Sensor aktivieren
             pause(0.065); 
             fwrite(com, 'SE103P', 'uint8'); //Sensor Werte abfragen 
             A = fscanf(com) //Einlesen 
             fclose(com); 
             // Konvertieren der Daten 
             A_b = regexp(A,' ','split'); 
             Distanz = hex2dec([A_b{2} A_b{3}])
             Daten{i}= Distanz 
             plot(i,Daten{i}, '.')
             on_off = get(hObject,'Value');
             i = i+1;
        end
    Da mein Plot auf der x-Achse aber nur bis Wert 100 geht, kann ich nur 100 Messwerte anzeigen, alle weiteren werde nicht mehr angezeigt. Ich hätte gerne, dass der Messwert 101 angezeigt wird dafür Messwert 1 verschwindet. Sprich die X-Achse weiter wandert. Es sollte dann eine kontinuierliche Messanzeige sein.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von malthy
    Registriert seit
    19.04.2004
    Ort
    Oldenburg
    Beiträge
    1.379
    Hallo!

    Hm, also so ganz optimal ist Dein Ansatz für meinen Geschmack eher nicht. Natürlich kannst Du die Daten in einem Loop abholen - Du könntest aber auch einen Callback machen, der jedesmal aufgrufen wird, wenn das serial Objekt Daten für Dich hat. Dann wird das Timing durch die einlaufenden Daten bestimmt und du müsstest nicht "pause" verwenden. Aber gut, kannst ja ggf mal ändern, erstmal mag es so gehen. Was man aber auf jeden Fall vermeiden sollte - insb wenn du alle 65 ms lesen willst - ist für jeden Lesevorgang die Schnittstelle auf- und wieder zuzumachen. Mach vor dem Loop einmal die Schnittstelle auf und danach, wenn das Programm beendet wird, wieder zu. Das eigentliche Plotten würde ich dann so machen, wie weiter oben schon beschrieben. Du legst Dir ein Vektor für Deine Daten (zB 500 Punkte) an und initialisiert ihn zB mit Nullen:

    Code:
    vals = zeros(500, 1);
    Dann plottest Du den Vektor einmal und lässt Dir das Handle von dem plot (hier nennen wir es h1) zurückgeben:

    Code:
    h1 = plot(vals);
    jetzt kommt ein kleiner Trick. Mit

    Code:
    set(h1, 'YDataSource', 'vals')
    sorgst Du dafür, dass Du in Deinem Loop die Daten des Diagramms einfach updaten kannst. Das o.g. führst Du also einmal vor Deinem Hauptloop aus. Für den Loop übernehm ich mal Deine Art des Auslesens - auch wenn man da vielleicht noch einiges verbessern kann.

    Code:
    while run  
        fwrite(com, 'SE00051P', 'uint8'); 
        pause(0.065); 
        fwrite(com, 'SE103P', 'uint8'); 
        A = fscanf(com) 
        A_b = regexp(A,' ','split'); 
        Distanz = hex2dec([A_b{2} A_b{3}])
        vals(2:500) = vals(1:499);
        vals(1) = Distanz;
        refreshdata(h1, 'caller')
    end
    So müsste es in etwa gehen.

    Gruß
    Malte

Ähnliche Themen

  1. Befehle plot
    Von Achim S. im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 25.10.2010, 16:23
  2. GUI
    Von RobbyFan im Forum Robby RP6
    Antworten: 12
    Letzter Beitrag: 17.03.2010, 20:05
  3. Antworten: 0
    Letzter Beitrag: 11.11.2008, 20:36
  4. So ne nette GUI
    Von carlitoco im Forum Robby RP6
    Antworten: 5
    Letzter Beitrag: 29.10.2008, 18:17
  5. GUI für AVR
    Von nike2007 im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 23.01.2007, 15:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress