Echtzeit Plotten/data-logging
Werde ich ein Programm schreiben, plots, Daten von einem sensor an den computer angeschlossen. Der Sensorwert wird gezeichnet als eine Funktion der Zeit (sensor-Wert auf der y-Achse, Zeit auf der x-Achse). Ich möchte in der Lage sein, um neue Werte hinzufügen, die Handlung in Echtzeit. Was wäre am besten zu tun dies mit C++?
Edit: Und by the way, das Programm läuft auf einem Linux-Rechner
Paul, das ist nicht wirklich eine Frage, eher eine bitte um Ratschläge und selbst dann ist es vage. Ich vermute, Sie sind auf der Suche für ein charting-Bibliothek, die Ihnen erlaubt, um Daten hinzuzufügen, um die Handlung dynamisch. Ich schlage vor, pflücken Sie die Schlüsselwörter aus, der Satz und die überschrift für Google.
Brauchen Sie die genaue Zeit oder relative Zeit ausreichend? Holen relative Zeit von der OS schneller sein als die absolute Zeit.
Brauchen Sie die genaue Zeit oder relative Zeit ausreichend? Holen relative Zeit von der OS schneller sein als die absolute Zeit.
InformationsquelleAutor Paul | 2010-02-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben Sie eine Funktion, die dargestellt werden können, eine
std::deque
in einer Weise, die Sie mögen, dann.push_back()
Werte vom sensor auf die Warteschlange, wie Sie verfügbar sind, und.pop_front()
Werte aus der Warteschlange, wenn es zu lange schön Plotten.Die genaue Natur Ihrer plotting-Funktion hängt von der Plattform ab, Bedürfnisse, Sinn für ästhetik, etc.
Sie können nicht Durchlaufen eine
std::queue
, so würden Sie vermutlich benutzen wollenstd::deque
direkt statt; Sie können immer nochpush_back
undpop_front
mit einer deque.das ist ein sehr guter Punkt, werde ich update meine Antwort.
InformationsquelleAutor jilles de wit
Sind Sie besonders besorgt über die C++ - Aspekt? Ich habe getan, 10Hz oder so-rate-Daten, ohne einen Schweiß zu brechen, indem Sie gnuplot in eine lese - /plot - /refresh-loop oder mit LiveGraph ohne Probleme.
InformationsquelleAutor Digikata
Können Sie ring-Puffer. In einem solchen Puffer hat, das Sie gelesen haben, position und schreiben position. So ein thread schreiben kann, Puffer und andere Lesen, und Plotten Sie ein Diagramm. Für die Effizienz, die Sie in der Regel am Ende schreiben Sie Ihre eigenen Rahmen.
Größe dieser Puffer kann geschätzt werden, mit zB.: Daten Lieferung Geschwindigkeit vom sensor (40 KHz?), Größe einer Sonde und die Zeitspanne, die Sie behalten möchten, für plotting-Zwecke.
Es hängt auch davon ab, ob Sie möchten, speichern die Daten unkomprimiert speichern gerenderte plot - alle zur weiteren offline-Analyse. In nicht-RTOS Umgebung, Ihre "real-time" hängt von der Verarbeitung Geschwindigkeit: wie schnell können Sie abrufen/speichern/verarbeiten und darstellen von Daten. In der Regel ist es in der Nähe-Echtzeit-Effizienz.
InformationsquelleAutor Marcin Gil
Möchten Sie vielleicht zu prüfen, aus RRDtool, um zu sehen, ob es Ihren Anforderungen entspricht.
InformationsquelleAutor Dave Bacher
Ich habe eine ähnliche Sache für ein Gerät, das hatte eine Durchlässigkeit sensor angeschlossen über RS232.
Btw ich denke, es gibt so viele Bibliotheken, suchen Sie einfach für Sie:
InformationsquelleAutor Jack
Ich gehe davon aus, dass Sie sich für die Bereitstellung dieser Anwendung auf einem Echtzeit-BETRIEBSSYSTEM. Aber, was wird die Datenrate und was sind real-time-Anforderungen! Daher, wie oben geschrieben, eine einfache Lösung kann sein, mehr als genug. Aber, wenn Sie hart-Echtzeit-Einschränkungen, ändert sich alles drastisch. Multi-threaded-design mit Daten-Rohre lösen können, Ihre real-time-Probleme.
InformationsquelleAutor baris.aydinoz