Hallo, ich möchte mit dem Programm GNUplot Messdaten (Strom und Spannung) grafisch anzeigen lassen. Die Daten sende ich von meinem Mikrocontroller über die UART-Schnittstelle und einem UART/USB-Wandler an den PC. Weiß jemand, wie ich die empfangenen Daten auf der Seite des PC genau verarbeiten muß, damit GNUplot diese Daten grafisch anzeigt?
Du könntest die Daten in eine Datei umleiten, und dann gnuplot mit diesem Dateinamen aufrufen. Wie der Aufruf genau aussieht, hängt davon ab, wie die Daten aussehen (t in der ersten Spalte, I in der zweiten, U in der dritten?). Wenn man gnuplot aufruft, kann man mit dem Kommando help sich durch eine Online-Doku hangeln. Im Internet gibt es natürlich auch viel, inkl. Beispielen.
Klaus Wachtler schrieb: > Du könntest die Daten in eine Datei umleiten, und dann gnuplot mit > diesem Dateinamen aufrufen. Wie erstelle ich bzw. wie leite ich die seriellen Daten in diese Datei?
H. G. schrieb: > Wie erstelle ich bzw. wie leite ich die seriellen Daten in diese Datei? Das kommt auf dein Betriebssystem drauf an.
Christian Berger schrieb: > In der Regel so was wie cat /dev/ttyS0 > datei Unter Windows funktioniert das so bestimmt nicht. Dort könnte LogView eine alternative Möglichkeit sein.
Wenns nur um die "Verarbeitung" der Daten geht -> Soweit ich weiß zeichnet Gnuplot so ziemlich alles, was einen simplen Space besitzt. Also 2 Spalten Messwert1 Messwert2 Messwert3 Messwert4 usw. usf. Textfile schreiben unter unix: open + write Mehr brauchts da eigentlich nicht, dürften ein paar Zeilen Code sein.
Wolfgang schrieb: > Unter Windows funktioniert das so bestimmt nicht. Dort könnte LogView > eine alternative Möglichkeit sein. Unter Windows geht dafür type com1: > datei Oder er installiert einfach cygwin.
Im ZIP-Archiv von Beitrag "Re: Visualisierung von geloggten Daten" ist das Kommandozeilentool "sercapt" enthalten, welches diesem Zweck dient und jeder neuen Textzeile gleich noch einen Zeitstempel vorlegt, falls der nicht schon vom Quellsystem kommen sollte. Benutzung, siehe Anleitung. mfG ingo
Christian Berger schrieb: > Unter Windows geht dafür > type com1: > datei Kannst du mir das genauer erläutern? Gebe ich das im cmd-Fenster ein?
Hier ein nettes Beispiel zur Verwendung von Gnuplot für Messdaten: http://blog.sarine.nl/2012/08/19/commandline-logging-of-data-the-plotting/
Hier im Forum wurde das ebenso schon mehrfach behandelt. Wie bei allen Fragen von H. G. (ledi) lässt er sich wieder den Hinweis auf elementare Doku/Datenblatt/Suchfunktion/Tutorial hinterhertragen. Es wird Zeit, endlich so etwas wie google zu erfinden. Naja, jeder wie er will. Bis man hier tausend Leute bemüht, hätte man es schon selbst im Netz gefunden.
Ich hab jetzt versucht, die Messdaten mit HTerm aufzuzeichnen und abzuspeichern. Das geht ganz gut. Allerdings sind die gespeicherten Daten so nicht GNUPlot kompatibel. Beispiel: 12:41:30.075: 073 12:41:31.075: 074 12:41:32.074: 075 12:41:33.073: 076 12:41:34.073: 077 12:41:35.072: 078 12:41:36.072: In Zeile 1 steht der timestamp gefolgt vom Messwert (hier 73) in der Zeile 2. Dann wieder timestamp, Messwert usw. Für GNUPlot brauche ich die Daten aber mit Tabulator getrennt: 12:41:30 073 12:41:31 074 12:41:32 075 Wie kann ich diese Daten am einfachsten umwandeln?
H. G. schrieb: > Wie kann ich diese Daten am einfachsten umwandeln? Ich habe jetzt nur dein letztes Posting angesehen, aber ich denke, Umwandeln ist nicht unbedingt nötig. set datafile separator ":\n" oder ähnlich könnte funktionieren. Doppelpunkt gefolgt von Zeilenumbruch ist ja dein "Trenner" zwischen Zeit und Datenwert. \n wäre der Zeilenumbruch bei Linux/Unix, bei anderen OS womöglich etwas anders. Guck mal in der Dokumentation nach "set datafile separator". Wenn man die Datei verändern will, wäre das mit sed sicher einfach, wobei sed bei Windows womöglich nicht verfügbar ist.
Habs versucht mit set datafile separator ":\n", aber leider nix. In der Hilfe steht auch nur: Syntax: set datafile separator {"<char>" | whitespace} Examples: # Input file contains tab-separated fields set datafile separator "\t" # Input file contains comma-separated values fields set datafile separator "," Zum Test habe ich die Datendatei geändert auf: 12:41:30 073 12:41:31 074 12:41:32 075 12:41:33 076 12:41:34 077 mit set datafile separator "\n" plot "testfile.dat" erhalte ich nur einen leeren Graphen
Ist in python ein Zweizeiler:
1 | import sys |
2 | print(sys.stdin.read().replace(":\n", "\t")) |
Lukas K. schrieb: > Ist in python ein Zweizeiler: >
1 | > import sys |
2 | > print(sys.stdin.read().replace(":\n", "\t")) |
3 | > |
Cool das es in Phyton so geht. Aber wie kann ich das auf meine Textdatei anwenden?
H. G. schrieb: > Lukas K. schrieb: >> Ist in python ein Zweizeiler: >>
1 | >> import sys |
2 | >> print(sys.stdin.read().replace(":\n", "\t")) |
3 | >> |
> > Cool das es in Phyton so geht. Aber wie kann ich das auf meine Textdatei > anwenden? Hau das in ne datei, nennen wir sie mal conv.py dann im Terminal
1 | pythton conv.py < eingabe > ausgabe |
Liest die Datei eingabe ein, wandelt sie um und schreibt die Ergebnisse in die Datei ausgabe
H. G. schrieb: > Die Daten sende ich von meinem Mikrocontroller Wenn du die Daten selber mit dem µC erzeugst, kann dich doch niemand davon abhalten, Timestamp und Messwert in einer Zeile zu senden, so dass GnuPlot das direkt versteht.
Hallo, um live daten darzstellen ist gnuplot vielleicht keine so gute Idee. Python in Verbindung mit pyserial und mathplotlib ist ideal um schnell Daten direkt von der seriellen Schnittstelle plotten. Grüße,
Nicht "Gast" schrieb: > um live daten darzstellen ist gnuplot vielleicht keine so gute Idee. Auch das ist kein Ding der Unmöglichkeit: http://blog.mister-muffin.de/2011/11/13/gnuplot-live-update/
Michael schrieb: > Wenn du die Daten selber mit dem µC erzeugst, kann dich doch niemand > davon abhalten, Timestamp und Messwert in einer Zeile zu senden, so dass > GnuPlot das direkt versteht. Ja, aber ich habe keine RTC für die Zeit auf der Mikrocontrollerseite.
Lukas K. schrieb: > Hau das in ne datei, nennen wir sie mal conv.py > dann im Terminal >
1 | > pythton conv.py < eingabe > ausgabe |
2 | > |
> Liest die Datei eingabe ein, wandelt sie um und schreibt die Ergebnisse > in die Datei ausgabe Das geht aber nur unter Linux oder?
H. G. schrieb: > Ja, aber ich habe keine RTC für die Zeit auf der Mikrocontrollerseite. Im Prinzip wäre das hinzukriegen Beitrag "Die genaue Sekunde / RTC" Hast du LogView schon probiert? Das plottet live mit und fügt auch einen Timestamp hinzu.
H. G. schrieb: > Das geht aber nur unter Linux oder? Nein, das Unix deiner Wahl tut's ebenfalls. Ich meine Windows könnte das auch, aber afaik wird die Ausgabe erst geschrieben, wenn das Programm fertig ist. Wo wir 'grad bei Windows wären: Achte darauf, welche Zeilenenden die Eingabedaten haben.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.