Forum: PC-Programmierung Gui RaspberryPi C++ Programmieren


von Karsten (Gast)


Lesenswert?

Hallo,
ich möchte gerne eine Oberfläche erstellen, wo ich Daten (Temperatur, 
Nachrichten, Daten aus dem Internet) auf einem Bildschirm 
(Computerbildschirm) darstellen möchte. Diesen möchte ich dann im Flur 
aufhängen. Da ich keinen Richtigen Computer mit dahinstellen möchte, 
habe ich mir gedacht, dass ich das ganze mit einem Raspberry Pi mache. 
Allerdings weiss ich nicht, wie ich den RaspberryPi Programmieren kann. 
Die Oberfläche wollte ich mit QT und C++ erstellen. Kann ich auf meinem 
Computer und Qt eine Gui erstellen und diese dann auf dem RaspberryPi 
flashen? Oder muss ich direkt auf dem RaspberryPi Programmieren? Habe 
niergends eine Beschreibung gefunden, wie ich da vorgehen muss.

Karsten

von Sheeva P. (sheevaplug)


Lesenswert?

Karsten schrieb:
> ich möchte gerne eine Oberfläche erstellen, wo ich Daten (Temperatur,
> Nachrichten, Daten aus dem Internet) auf einem Bildschirm
> (Computerbildschirm) darstellen möchte. Diesen möchte ich dann im Flur
> aufhängen. Da ich keinen Richtigen Computer mit dahinstellen möchte,
> habe ich mir gedacht, dass ich das ganze mit einem Raspberry Pi mache.
> Allerdings weiss ich nicht, wie ich den RaspberryPi Programmieren kann.
> Die Oberfläche wollte ich mit QT und C++ erstellen. Kann ich auf meinem
> Computer und Qt eine Gui erstellen und diese dann auf dem RaspberryPi
> flashen? Oder muss ich direkt auf dem RaspberryPi Programmieren? Habe
> niergends eine Beschreibung gefunden, wie ich da vorgehen muss.

Du kannst auf Deinem lokalen Rechner mit C++ und Qt eine GUI schreiben. 
Damit die dann auf dem RasPi läuft, wirst Du sie allerdings auch auf dem 
RasPi übersetzen müssen, denn der hat eine ARM-CPU und Dein lokaler 
Rechner vermutlich nicht.

Flashen mußt Du dabei allerdings nichts, nur den Quellcode der Anwendung 
von Deinem lokalen Rechner auf den RasPi übertragen und sie dann dort 
noch einmal auf dem RasPi übersetzen. Der RasPi hat nämlich ein 
vollständiges Linux-Betriebssystem mit allem, was Du zum Übersetzen 
Deiner Qt-Anwendung brauchst: C++-Compiler mit Build-Werkzeugen (Paket 
"build-essential"), Qt selbst sowie die Qt-Werkzeuge wie qmake & Co.


Am Rande bemerkt: meine persönliche Erfahrung ist, daß solche Werkzeuge 
zur Datenerfassung und -Visualisierung niemals fertig sind, meist keine 
hohen Anforderungen an Performanz und Latenz haben, und es deswegen oft 
besser ist, so etwas mit einer Skriptsprache wie Python, Perl, oder Ruby 
zu entwickeln. Zudem kommt man später häufig auf die Idee, daß es doch 
wunderbar wäre, sich die Daten auch auf dem Tablet oder dem Smartphone 
anschauen zu können.

Deswegen greife ich in solchen Fällen meistens zu einem anderen Weg und 
schreibe eine schicke Webanwendung, zum Beispiel mit Python und Flask. 
Die wird dann auf dem RasPi von einem Webbrowser im Kiosk-Modus 
angezeigt, kann aber auch von anderen Geräten im Netzwerk abgerufen und 
angezeigt werden, sofern diese einen Webbrowser benutzen. Mit 
JS-Bibliotheken wie jqWidgets, Flot oder jQplot kann man sehr 
ansprechende Webanwendungen zur Datenvisualisierung entwickeln.

von MaWin (Gast)


Lesenswert?

Qt geht auch hervorragend in Kombination mit Python, dann spart man sich 
zumindest das erneute Kompilieren auf dem Pi.

Andererseits kann man natürlich durchaus gleich auf dem Pi entwickeln,
dann wohl am bequemsten remote per VNC.

von Sheeva P. (sheevaplug)


Lesenswert?

MaWin schrieb:
> Qt geht auch hervorragend in Kombination mit Python, dann spart man sich
> zumindest das erneute Kompilieren auf dem Pi.
>
> Andererseits kann man natürlich durchaus gleich auf dem Pi entwickeln,
> dann wohl am bequemsten remote per VNC.

Wozu denn VNC? Für Windows-User gibt es Moba XTerm und unter UNIXoiden 
existiert "ssh -X", beides ohne Einrichtungsaufwand auf dem RasPi. ;-)

von Dennis X. (Gast)


Lesenswert?

Sheeva P. schrieb:
> Deswegen greife ich in solchen Fällen meistens zu einem anderen Weg und
> schreibe eine schicke Webanwendung, zum Beispiel mit Python und Flask.

Hast du dazu einige Screenshots? Würde mich interessieren, was damit so 
zu realisieren ist wie du es sagt.

von Georg (Gast)


Lesenswert?

Du kannst auch wunderbar Cross-Compilieren. Also am PC programmieren, 
kompilieren, automatisch per SSH auf den rpi schieben lassen und mit 
debugger starten. fühlt sich an, als wäre es auf dem PC :D

Hier noch ein paar Links:

https://wiki.qt.io/RaspberryPi_Beginners_Guide
https://wiki.qt.io/Native_Build_of_Qt5_on_a_Raspberry_Pi

Ich habe die Anleitung hier am besten gefunden:
https://wiki.qt.io/RaspberryPi2EGLFS

von PittyJ (Gast)


Lesenswert?

Kleinere Programme schreibe ich direkt auf dem Raspi. Der Rechner ist 
schnell genug dafür. Es ist schneller als manche 'Workstations' auf 
denen ich Anfang des Jahrtausends beruflich entwickeln mußte. Einzig der 
Flash-Speicher auf SSD bremst etwas.

Größere PRogramm habe ich auf einem X86 PC mit normalem Linux 
entwickelt. Läuft dort alles wird am Am Ende einmal aus dem Raspi 
übersetzt.

von Wolfgang H. (drahtverhau)


Lesenswert?

Du kannst es im VisualStudio Programmieren mit c++, c#, vb, Python, 
node.js. Per Drag&Drop die Oberfläche erstellen. --> 
https://developer.microsoft.com/de-de/windows/iot/samples (Konkretes 
Beispiel: 
https://microsoft.hackster.io/en-US/windows-iot/weather-station-v-2-0-8abe16?ref=search&ref_id=weather&offset=0)

von Jean player (Gast)


Lesenswert?

Sheeva P. schrieb:
> Deswegen greife ich in solchen Fällen meistens zu einem anderen Weg und
> schreibe eine schicke Webanwendung, zum Beispiel mit Python und Flask.
> Die wird dann auf dem RasPi von einem Webbrowser im Kiosk-Modus
> angezeigt, kann aber auch von anderen Geräten im Netzwerk abgerufen und
> angezeigt werden, sofern diese einen Webbrowser benutzen. Mit
> JS-Bibliotheken wie jqWidgets, Flot oder jQplot kann man sehr
> ansprechende Webanwendungen zur Datenvisualisierung entwickeln.

Stichwort qwebengine oder qtwebkit.
Alles kein Problem.
Wobei ich zugeben muss nur mit qtwebkit bisher gearbeitet zu haben (Dank 
Apple deprecated).

von Maxi Z. (maxi_z)


Lesenswert?

Es gibt viele Möglichkeiten. Ich habe es mit C++ und Gtk mal gemacht. 
Eine Anwendung, die fullscreen direkt nach dem Booten startet, man macht 
quasi den raspi an und das war's. Die Anwendung läuft dann. Die inputs 
holt man sich dann von wo man will. Für webzugriff wäre der raspi 3 
empfehlenswert, da wlan vorhanden. Alle Einstellungen natürlich vorher 
definieren, testen, usw. Man kann dann später den raspi als webserver 
benutzen und es als webseite zur Verfügung stellen oder dann noch 
schnittstelllen hinzufügen, wenn man z.b. von extern zugreifen will. Ich 
würde in dem fall einfach mal netbeans auf dem raspi installieren und 
mit java eine gui erstellen (swing oder so). Geht recht schnell. Ich 
habe mal an einen Tag mit null Ahnung von swing, eine gui erstellt, die 
2D Objekte dynamisch bewegen konnte. Dann sind ein paar Text-Infos ein 
Kinderspiel.

von Sheeva P. (sheevaplug)


Lesenswert?

Dennis X. schrieb:
> Sheeva P. schrieb:
>> Deswegen greife ich in solchen Fällen meistens zu einem anderen Weg und
>> schreibe eine schicke Webanwendung, zum Beispiel mit Python und Flask.
>
> Hast du dazu einige Screenshots? Würde mich interessieren, was damit so
> zu realisieren ist wie du es sagt.

An meine eigenen UIs komme ich gerade nicht, die laufen woanders. Aber 
die beiden Screenshots bei jqwidgets.com und der Wikipedia geben Dir 
eine gute Idee:

http://www.jqwidgets.com/wp-content/images/jqwidgets-intro-chart.png

https://upload.wikimedia.org/wikipedia/en/5/5c/JQWidgets_software_screenshot.png

von Sheeva P. (sheevaplug)


Lesenswert?

Jean player schrieb:
> Stichwort qwebengine oder qtwebkit.
> Alles kein Problem.

BTDT, und es gibt Probleme: denn QWebKit hat Memory Leaks, QWebEngine 
gibt es IIRC noch nicht unter Debian.

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.