none
C# - serielle Schnittstelle und fortlaufendes Diagramm RRS feed

  • Frage

  • Hallo,

    Für ein kleines Projekt möchte ich Daten von einem uController über die serielle Schnittstelle an meinen PC senden.

    Dort sollen diese dann gefiltert werden und in einem "fortlaufenden" Diagramm ausgegeben werden, also quasi wie ein Oszi-Bild. Ich messe mit f = 8 Hz und die letzten 20 Sekunden sollen dann immer in dem Diagramm veranschaulicht werden. Aus älteren Beiträgen habe ich bereits entnommen das "ZedGraph" super eingebunden werden kann und sich für diese Zwecke auch gut eignet.

    Generell habe ich dazu 2 Fragen.

    1) Wie kann ich ZedGraph zu einem fortlaufenden Diagramm umfunktionieren?

    2) Kann ich ein 2tes Windows Form anlegen und über diese die Verbindung herstellen, oder sollte ich alles in einem Fenster erledigen?

    Ich nehme jede Hilfe gerne an ( auch Buch und Skriptumvorschläge). ( Ich programmiere mit Visual C# 2010 Express )

    mfg

    Florian

    Ich programmiere mit Visual C# 2010 Express

    Donnerstag, 4. Oktober 2012 14:21

Antworten

  • Hi flo1993,

    das is jetzt echt blöde, denn ich hatte erst kürzlich ZedGraph genau dazu gebracht.

    Nachdem mir dann aber gesagt wurde, daß es so nicht sein soll, sondern nur nur immer eine bestimmte Anzahl an Messungen und dann gesammelt die nächsten, habe ich den Code wieder verworfen.

    Zuerst schau mal hier: ZedGraph Help/Tutorial

    Das is die "offizielle" Seite zu ZedGraph.

    Was ich noch weiß ist, daß du den Graphen fortlaufend mit den Werten fütterst, und dnach den Graphen mit Refresh (oder so ähnlich) neu laden mußt. Ist dann das Bild des Graphen einmal "vollgelaufen" musst du einfach nur bei deinne gesammelten Werten den ältesten Löschen und hinten den neusten anfügen.

    Also Werte sammlen und im Graphen anzeigen (übergeben), dann Graphen neu laden/refreshen, ist dann z.B. das Ende der Skalierung (maximum) der X-Achse erreicht, den ältesten Wert löschen und dann den neusten an den Graphen mit übergeben, usw

    Und schon hast du ne Anzeige wie beim Oszi. Einzig mit der Geschwindigkeit noch rumprobieren, damit auch das passt. Also z.B. einfach die Application kurzzeitig pausieren lassen.

    Ich hoffe, das hilft Dir weiter ;-)

    [Edit:]

    Hab noch was in meinem Code gefunden. Damit wird der Graph aktualisiert, is also zwingend erfoderlich!

    //Anzeige des Graphen neu erzeugen/laden
                zedGraphControl1.AxisChange();
                zedGraphControl1.Invalidate()


    Grüße, Jochen


    • Bearbeitet morfeus3009 Donnerstag, 11. Oktober 2012 10:00 C'-Code als Beispiel eingefügt
    • Als Antwort vorgeschlagen Robert Breitenhofer Donnerstag, 11. Oktober 2012 10:07
    • Als Antwort markiert Robert Breitenhofer Dienstag, 23. Oktober 2012 09:57
    Donnerstag, 11. Oktober 2012 09:53

Alle Antworten