Messdaten mit GNUplot anzeigen

OP #2880409
Lesenswert?
• ▲
▼
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?
#2880414
Lesenswert?
• ▲
▼
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.
#2880612
Lesenswert?
• ▲
▼
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.
#2880922
Lesenswert?
• ▲
▼
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.
OP #2881720
Lesenswert?
• ▲
▼
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?
Gast #2881742
Lesenswert?
• ▲
▼
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.
OP #2881766
Lesenswert?
• ▲
▼
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
#2882088
Lesenswert?
• ▲
▼
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
Gast #2882117
Lesenswert?
• ▲
▼
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,

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.