Forum: PC-Programmierung C++ mit GUI zur Messdatenerfassung


von Thomi (Gast)


Lesenswert?

Hallo!

Ich möchte mit einem PC mit ca. 50MB/s Messdaten von erfassen. Ich habe 
bisher immer nur Konsolenanwendungen mit C programmiert und soll jetzt 
auch GUIs entwickeln. Hier gibt es zahlreiche Frameworks, aber so recht 
weiß ich auch nicht. Wichtig wäre mir eine schnelle Einarbeitung, also 
ein nicht so kompliziertes Framework. Plattform wäre Windows, 
Portabilität ist also nicht wichtig.

.net/WPF/Winforms ist ja eher was für VB oder C#, die Libs der Hardware 
sind aber oft in C oder C++, daher vielleicht nicht so geeignet?

Qt kommt Lizenztechnisch eher nicht so in Frage, da ich auch plotten 
möchte!

wxwidgets sieht so erstmal gut aus, ist das eher ein Ausläufer oder gibt 
es noch aktive Projekte? Kennt jemand gute Plot-Libs dafür?

GTK fällt mir dann noch ein. Fragen wären ähnlich zu wxwidgets.

Danke im Vorraus!

von LinksRevolutzer (Gast)


Lesenswert?

Thomi schrieb:
> Qt kommt Lizenztechnisch eher nicht so in Frage, da ich auch plotten
> möchte!

Wieso, auf die schnelle hab ich jetzt keine Einschränkung gesehen, außer 
den gewöhnlichen?

Willst du eine kommerzielle, Open Source, oder nur für dich selbst 
genutzte Software entwickeln?

von LinksRevolutzer (Gast)


Lesenswert?

LinksRevolutzer schrieb:
> Thomi schrieb:
>> Qt kommt Lizenztechnisch eher nicht so in Frage, da ich auch plotten
>> möchte!
>
> Wieso, auf die schnelle hab ich jetzt keine Einschränkung gesehen, außer
> den gewöhnlichen?

Korrektur jetzt hab ich es auch gesehen, QT Charts und Data 
Visualization sind GPL use only, mein faux pax ;)

von LinksRevolutzer (Gast)


Lesenswert?

Wenn du allerdings Python kannst wäre eventuell matplotlib* etwas für 
dich, kann man auch an QT verheiraten.
Vorteil von Python ist das man damit auch C und C++ (und auch Fortran, 
daher beliebt bei einigen Maschinenbaufakultäten) ansprechen kann, kann 
also als glue language eingesetzt werden, ergo den kritischen Teil 
machst du in C++, den GUI Kram in Python (also zB PyQt).

*Eigene Lizenz, siehe hier: https://matplotlib.org/users/license.html

von Arc N. (arc)


Lesenswert?

Thomi schrieb:
> Hallo!
>
> Ich möchte mit einem PC mit ca. 50MB/s Messdaten von erfassen. Ich habe
> bisher immer nur Konsolenanwendungen mit C programmiert und soll jetzt
> auch GUIs entwickeln. Hier gibt es zahlreiche Frameworks, aber so recht
> weiß ich auch nicht. Wichtig wäre mir eine schnelle Einarbeitung, also
> ein nicht so kompliziertes Framework. Plattform wäre Windows,
> Portabilität ist also nicht wichtig.
>
> .net/WPF/Winforms ist ja eher was für VB oder C#, die Libs der Hardware
> sind aber oft in C oder C++, daher vielleicht nicht so geeignet?

UWP mit C++ wäre noch eine Option, wenn ab W8/W10 reicht.
U.U. kann die Einbindung von "alten" DLLs etwas tricky sein. Siehe 
https://github.com/MicrosoftDocs/cpp-docs/blob/master/docs/porting/how-to-use-existing-cpp-code-in-a-universal-windows-platform-app.md
Ansonsten kommt es auf die Libs, die verwendet werden sollen, an, wie 
gut diese in VB/C# eingebunden werden können. Mit P/Invoke geht 
eigentlich alles und wenn man mag geht auch Qt mit C# (siehe QtSharp und 
CppSharp)

> Qt kommt Lizenztechnisch eher nicht so in Frage, da ich auch plotten
> möchte!

Wenn's nur Inhouse ist und nicht verkauft werden soll, ist die Lizenz 
kein Problem oder geht's da um Controls/Libs, die zugekauft werden 
müssten? Alles Open Source unter passender Lizenz -> auch kein Problem, 
nur gemischt kann's schwierig werden.

> wxwidgets sieht so erstmal gut aus, ist das eher ein Ausläufer oder gibt
> es noch aktive Projekte? Kennt jemand gute Plot-Libs dafür?

Wenn die Plot-Libs mit der obigen Datenrate mithalten sollen, sind mir 
nur kommerzielle (bspw. für WPF/WinForms LightningChart oder SciChart) 
oder selbst entwickelte Controls bekannt. Stichworte: Shader + je nach 
Geschmack OpenGL oder Direct3D.

Wenn HTML/CSS eine Option ist: Sciter. Kostenlos, wenn man keine 
Quelltexte braucht, native C++ und Bindings für u.a. C#, Go und Rust

von Thomi (Gast)


Lesenswert?

Ich kenne Python von Chipwhisperer... da wird ja teilw. auch auf C/C++ 
zurückgegriffen. Insgesamt ist das nicht sehr schnell und man muss doch 
eine Menge auf dem Zielsystem installieren.

Kann denn jemand etwas zur wxwidgets oder GTK sagen?

von Kaj (Gast)


Lesenswert?

Python für die GUI ist völlig ausreichend, was die Geschwindigkeit 
angeht. Man kann auch in C und C++ sehr langsamen Code schreiben. Und 
mit Python kann man auch ziemlich schnellen Code schreiben, wenn man 
weiß was man macht. Und auf dem Zielsystem muss gar nichts weiter 
installiert werden. Man kann das ganze nämlich als exe verpacken. Such 
mal nach PyInstaller, Py2exe, cx_freeze.

Wenn dir Python zu langsam ist, dann nimm einfach Qt mit C++.

von Rolf M. (rmagnus)


Lesenswert?

LinksRevolutzer schrieb:
> LinksRevolutzer schrieb:
>> Thomi schrieb:
>>> Qt kommt Lizenztechnisch eher nicht so in Frage, da ich auch plotten
>>> möchte!
>>
>> Wieso, auf die schnelle hab ich jetzt keine Einschränkung gesehen, außer
>> den gewöhnlichen?
>
> Korrektur jetzt hab ich es auch gesehen, QT Charts und Data
> Visualization sind GPL use only, mein faux pax ;)

Es gibt ja immer noch Qwt. Das steht unter LGPL mit ein paar Ausnahmen, 
die aber zugunsten des Nutzers sind, und bietet einiges an Möglichkeiten 
fürs Plotten.

: Bearbeitet durch User
von Thomi (Gast)


Lesenswert?

Hab ein bisschen bzgl. Python, insb. PyQT recherchiert und bin doch 
etwas mehr davon überzeugt.

Wie ist es mit dem Einbinden von C++ DLLs wenn die Klassen der DLL auch 
Structs oder Pointer als Übergabeparameter haben? Wie stehts mit der 
Performance von C/C++ unter Python?

von Nase (Gast)


Lesenswert?

Thomi schrieb:
> Hab ein bisschen bzgl. Python, insb. PyQT recherchiert und bin doch
> etwas mehr davon überzeugt.

PyQT steht aber auch unter GPL.

Qwt ist aber eigentlich etabliert wenn es um (wissenschaftliche) 
Visualisierung mit Qt 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.