Gnuplot ist toll!
Ein Arduino liefert mir serielle Daten wie folgt:
Code: Alles auswählen
microcom -s 9600 -p /dev/ttyUSB0 -l test.dat
Code: Alles auswählen
microcom -s 9600 -p /dev/ttyUSB0 > test.dat
Die Ergebnisse sollen in einem Liveplot dargstellt werden, auch das funktioniert.
Da entsteht nun gleich die Frage 1:
Wie bekomme ich es hin, jeweils die letzten n Linien in einer Datei zu speichern? Versucht habe ich so etwas wie in versch. Varianten:
Code: Alles auswählen
microcom -s 9600 -p /dev/ttyUSB0 | tail -n100 > test.dat
Frage 2:
Als Alternative für das Dateiabschneiden könnte ich in gnuplot jeweils in ein dynamisch sich verschiebendes Fenster plotten, müsste ja nur den jeweiligen letzten X-Wert abspeichern (es handelt sich um ein einfachen xy-Graph). Gedacht wie folgt:
Code: Alles auswählen
plot "test.dat" using ($1 / 10 ** 6) : ($2 / 10 ** 4) with lines
pause 1
set xrange [($1) - 100 : ($1) + 100]
reread
Code: Alles auswählen
column() called from invalid context
Ansonsten funktioniert der sog. Live-Plot mit "pause n" und "reread" prima.
Frage 3: (die Unwichtigste)
Dieses Plot-Fenster mit dem "reread" ist außerordentlich schwer wieder wegzubringen. Ich starte den microcom ... über xfce-Terminal, das kleines Plot-Script in einem anderen tab, das script wird in einem weiteren Editor-Fenster bearbeitet. Normalerweise kann man alles schön beenden. Wenn der Live-Plot läuft, ist allerdings aus: Gnuplot reißt sofort den Focus an sich und läßt sich nicht mehr beenden, auch wenn die Terminal-Fenster geschlossen werden. Bis jetzt hilft nur der kill-Befehl, und zwar über die "echte" Konsole, aber das kanns doch wohl nicht sein? Habe auch mit einiger Suche mit "gnuplot liveplot break" nur immer wieder die Linebreaks gefunden, aber die kannte ich schon. Kann aber notfalls schon mit der Killerei leben.
Grüße, TuxPeter