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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren