Forum: PC-Programmierung Live Graph, Live Plot unter C++ (wxWidgets)


von Simon K. (simon) Benutzerseite


Lesenswert?

Hallo,
Ich nehme zur Zeit Daten über eine serielle Schnittstelle (in einem 
extra Thread) entgegen und möchte diese gerne auf einer bestimmten 
Fläche graphisch als Plot darstellen. Dabei soll der Plot live 
aktualisiert werden und dabei nach rechts wandern.

Das Fenster soll aber resizable sein und auch die X Auflösung soll 
einstellbar sein. Die Skalierung in Y Richtung natürlich sowieso.

Das Ganze unter wxWidgets. Im Moment benutze ich wxPlotCtrl, aber das 
scheint teilweise nicht so ganz gut geeignet zu sein für Live Plots.
Deshalb wollte ich mir ein eigenes Control bauen.
Soweit so gut, leider fehlt mir der Ansatz.
Also, wann allokiere ich wie viel Speicher. Was passiert beim Resizen? 
Ein größerer Speicherblock wird angefordert, vom alten umkopiert und der 
alte wird gelöscht?

Hat schon mal jemand sowas selbst gebaut und kann ein paar hilfreiche 
Tipps geben? Nicht, dass ich mich da im falschen Konzept ver-renne.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Erstmal würde ich das ganze aufteilen:

- Einmal die Daten erfassen in einer Struktur (xy koordinaten, 
verbindung der Punkte mit Linien, Strichstärken, Farben)
- Zeichnen auf Zeichenfläche. Soll das ganze skalieren bei 
größer/kleiner? Dann bei resize x und y skalierungsfaktor berechnen und 
neuzeichen, ebenso beim hinzufügen von Werten.

Wie das konkret aussehen soll kann ich dir leider nicht sagen da ich 
eher in Java als in C++ zuhause bin, habe aber soetwas ähnliches mal für 
das erstellen von Diagrammen aus Meßreihen gebaut, mit automatischer 
Achsenbeschriftung und Legende.

von Klaus W. (mfgkw)


Lesenswert?

Wenn du wxWidgets nimmst, wirst du deine Gründe haben.
Falls du aber noch flexibel bist und auch Qt in Frage kommt,
dann gibt es dafür das Paket qwt, mit dem sowas recht simpel geht.

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.