Forum: PC-Programmierung Echtzeit-Plotting parallel zu data acquisition


von Nicolas B. (bourbaki)


Lesenswert?

Es gibt eine Vielzahl von Projekten, in welchen Daten von Sensoren (über 
Arduino, Raspberry Pi etc.) mit einem Computer aufgezeichnet werden, 
aber man findet kaum Bibliotheken, welche speziell für das Plotten von 
Daten in Echtzeit parallel zur Aufzeichnung geschrieben wurden.

An vielen Stellen wird die Python Bibliothek Matplotlib verwendet, aber 
mir erscheint das nicht besonders elegant.

Als einzige speziell dafür entwickelte Bibliothek habe ich bisher 
"PyQTGraph" gefunden, aber mich würde interessieren, warum diese 
Bibliotheken so rar sind.

Mein Ziel wäre, eine GUI zu schreiben, welche Daten in Echtzeit 
darstellt und bei Bedarf entsprechend aufzeichnet.

Wahrscheinlich fürchte ich, dass dies ein typischer Anwendungsfall für 
Labview ist, womit ich aufgrund der damit verbundenen Kosten bisher 
keine Erfahrung habe.

: Verschoben durch User
von realtime (Gast)


Lesenswert?


von Pandur S. (jetztnicht)


Lesenswert?

Eine spezielle Library ? Wo sollen denn die Schwierigkeiten liegen ? 
Kannst doch per putpixel irgendwas in Echtzeit malen. Was auch immer 
Echtzeit ist.

: Bearbeitet durch User
von D.M. (Gast)


Lesenswert?


von Christian R. (supachris)


Lesenswert?

Wir hatten früher mal Plotlab im Einsatz, ist auch kommerziell aber 
kostet nicht die Welt.
http://www.mitov.com/products/plotlab#overview
Da kann man ne Menge machen...

von Arc N. (arc)


Lesenswert?

Zitronen F. schrieb:
> Eine spezielle Library ? Wo sollen denn die Schwierigkeiten liegen ?
> Kannst doch per putpixel irgendwas in Echtzeit malen. Was auch immer
> Echtzeit ist.

Eben. Je nach dem was Echtzeit sein soll und um wie viele Daten es geht 
reicht entweder einzelne Pixel passend zu setzen oder es wird selbst 
dann knapp, wenn alles mit Shadern von der GPU berechnet wird...

von Asdf (Gast)


Lesenswert?

Schau Dir mal Grafana an. Damit geht sowas

von georg (Gast)


Lesenswert?

Nicolas B. schrieb:
> speziell für das Plotten von
> Daten in Echtzeit parallel zur Aufzeichnung geschrieben wurden.

Meinst du eine durchlaufende Anzeige wie im Task Manager? Sowas ist doch 
nicht schwierig zu programmieren. Nicht jedes Problem kann man mit Copy 
& Paste lösen. Dann bräuchte man ja keine Programmierer mehr, die BWLer 
definieren ihre Anforderung und die KI klickt alles selbst zusammen.

Georg

von Nicolas B. (bourbaki)


Lesenswert?

Vielen Dank für eure Antworten.

Der Hinweis auf die putpixel() von C war interessant für mich.
Falls es schon ein ausgereiftes Framework gegeben hätte, dann macht es 
wahrscheinlich wenig Sinn, das Rad neu zu erfinden.
Aber so weiß ich zumindest, dass man eher darauf zurückgreift.

Einen Prototyp würde ich der Einfachheit halber in Python erstellen und 
falls dazu jemand noch gute Ideen hat sind diese natürlich jederzeit 
willkommen.

Bezüglich der Echtzeitanforderung möchte ich mich entschuldigen, keine 
genaueren Spezifikationen gemacht zu haben -e s ist natürlich keine 
besonders strenge Anforderung: Falls die graphische Darstellung 1 sec 
hinterherhängt, über 2 wäre dann aber schon ungeeignet.

von Nase (Gast)


Lesenswert?

Wenns ne Bibliothek sein darf: Qwt?

von Bourbaki (Gast)


Lesenswert?

Danke für deine Antwort. Ich bin nich untätig gewesen und hatte mir Qwt 
angesehen.
Die Python Version scheint einige Probleme zu bereiten:
"PyQwt has a very nice set of features and is fast enough for realtime 
work. Its main drawback is that it is currently unmaintained and can be 
difficult to get working on a variety of platforms. Hopefully in the 
future it may find a new maintainer, but until then it may be best to 
avoid PyQwt (the original PyQwt maintainer is currently recommending to 
use pyqtgraph instead; check their mailing lists for updates). Like 
matplotlib, PyQwt lacks some of the more advanced features of 
pyqtgraph."

von Strubi (Gast)


Lesenswert?

Moin,

>
> Als einzige speziell dafür entwickelte Bibliothek habe ich bisher
> "PyQTGraph" gefunden, aber mich würde interessieren, warum diese
> Bibliotheken so rar sind.

Es gibt eigentlich eine Menge Widget-Libraries mit Plot-Elementen (Qt, 
wxWidgets, ...). Vielleicht hast du dich zu sehr auf's Plotten bei der 
Suche fixiert...

>
> Mein Ziel wäre, eine GUI zu schreiben, welche Daten in Echtzeit
> darstellt und bei Bedarf entsprechend aufzeichnet.
>
> Wahrscheinlich fürchte ich, dass dies ein typischer Anwendungsfall für
> Labview ist, womit ich aufgrund der damit verbundenen Kosten bisher
> keine Erfahrung habe.

Bei Labview brockst du dir einen Haufen anderer Probleme ein, aber klar, 
das Problem kann man damit lösen. Kostenfreier geht es mit anderen 
Process-Monitoring-Tools:

- pvbrowser (https://www.pvbrowser.de/pvbrowser/index.php), nutzt auch 
genanntes Qwt.
- OpenLab (http://myopenlab.org)
- Webbasierte Plot-Libs (Javascript oder gar WebGL) im Sinne von Grafana 
und Konsorten. Da gibt es unzählige..

PVBrowser ist eigentlich mein Favorit für skalierbare und robuste 
Lösungen. OpenLab ist auch nett, aber ich musste gehörig am Source 
(Java) rumschrauben, ein paar Sachen waren nicht wirklich getestet.
Eine wirklich Echtzeitgarantie gibt es bei den TCP-basierten 
Verbindungen nicht, fragt sich, wie streng du setzt, ev reicht ja ein 
einfacher Timeout für die "Nicht mehr Echtzeit verfügbar"-Warnung
Mit einem pvserver der lokal läuft lässt sich aber RTP tunneln (da hast 
du einen Zeitstempel).

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Nicolas B. schrieb:
> Wahrscheinlich fürchte ich, dass dies ein typischer Anwendungsfall für
> Labview ist, womit ich aufgrund der damit verbundenen Kosten bisher
> keine Erfahrung habe.

Heutzutage ist das ein typischer Anwendungsfall für eine Webseite. Ja, 
ich mag das auch nicht (Kanonen auf Spatzen), aber so macht das der 
Digital Na(t)ive Hipster. Der Browser ist das neue GUI-Toolkit :( am 
besten direkt "responsive" auch fürs Handy und der Server steht in der 
Cloud.

Das Problem ist nicht dass es nichts gibt, sondern dass du mit 
Frameworks und Libraries fürs Web regelrecht erschlagen wirst:

Stichworte zum Suchen sind "web data visualization" 
https://www.google.com/search?q=web+data+visualisation, "web dashboard" 
https://www.google.com/search?q=web+dashboard und ähnliches. Du kannst 
auch noch "IoT" oder "real time" als Suchbegriff mit rein nehmen.

von Bernd K. (prof7bit)


Lesenswert?

Mit der TAChart-Komponente von Lazarus geht das ziemlich leicht. 
Benutzen wir hier auch ausgiebig für alle Prüf- und Test-Tools die 
Messwerte visualisieren sollen.

von Bourbaki (Gast)


Lesenswert?

Vielen Dank für deine Antwort.
Ich hab meine Zweifel, ob ein Web-Framework das passende für mich ist. 
Es soll einfach auf einem Rechner gemessen und geschrieben werden. Das 
wäre eigentlich ausreichend.

von Bourbaki (Gast)


Lesenswert?

Der Hinweis auf PASCAL Programmierung ist sehr gut: Ich kann mir gut 
vorstellen, dass man damit schnell zu sauberen Ergebnissen kommt, die 
auch einigermaßen portabel sind. Das würde ich falls ich etwas Zeit 
finde gerne mal ausprobieren.

von Bernd K. (prof7bit)


Lesenswert?

Bourbaki schrieb:
> Der Hinweis auf PASCAL Programmierung ist sehr gut: Ich kann mir
> gut
> vorstellen, dass man damit schnell zu sauberen Ergebnissen kommt, die
> auch einigermaßen portabel sind.

Lohnt auf jeden Fall nen näheren Blick. Ich würd mir das aber erst mal 
auf niedriger Priorität als Beschäftigung für verregnete Wochenenden 
vornehmen und einige Monate einplanen, Du musst immerhin die Sprache 
lernen und das effiziente Arbeiten mit der IDE (ohne aktive Mithilfe 
der IDE macht der viele Boilerplate nur wenig Spaß, mit ihr dagegen 
sehr), scheue auch nicht davor zurück das Lazarus-Forum oder die 
Mailingliste nach Hilfe zu fragen. Wenn Du dann irgendwann damit etwas 
sicherer zurechtkommst und weißt wo Du was findest wirst Du mit diesem 
Tool Wunder bewirken können.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.