Liebes Forum Ich habe eine Frage bezüglich einer komplexen GUI-Programmierung. Ich möchte (wie im Bild oben) ein sogenanntes Bildschirmstellwerk (für meine Modellbahn) programmieren, bin allerdings im Netz nur auf einfache Anwendungen gestossen. Die Taster, die Ausleuchtung und die Signal-Linsen sollten einfach auf einen Ausgang bzw. einen Eingang bei den GPIO's. Ist dies möglich oder nicht realisierbar und wie wird das gemacht? Mit Phyton oder per schon vorhandenem Programm? Ich danke für eure Mithilfe.
Das ist keine komplexe GUI-Programmierung, das ist ein statisches Bild mit wenigen Handvoll einfachen Zustandsanzeigen. Das geht in jeder Programmiersprache, sicher auch in Phyton, wobei ich nur Python kenne. Ich bin bereit zu wetten dass auch jemand zu finden ist der das mit einer Tabellenkalkulation hinbekommt.
Tobas schrieb: > Ist dies möglich oder nicht realisierbar und wie wird das gemacht? Mit > Phyton oder per schon vorhandenem Programm? Da andere es schon gemacht haben (z.B. die Bahn selbst), ist es garantiert möglich und realisierbar. Man kann das mit einem Programm machen, was man sich selbst schreibt. Python ist dafür geeignet, andere Sprachen auch. Für das "Wie" gibt es verschiedene Ansätze. So, wie du fragst, wird es wohl am einfachsten sein, wenn du den statischen Teil des Bildes in Paint (oder einem beliebigen anderen Programm) reinmalst und als Bitmap speicherst. Das gleiche machst du mit den dynamischen Teilen (also "Lampe an", "Lampe aus", "Weiche oben", "Weiche mitte", usw.). Dein Programm muss dann nur noch a) das statische Bild malen b) die darzustellenden Werte auslesen c) die zu den Werten passenden Bitmaps oben drauf malen.
Hallo ! Sowas in der Art hab' ich mit einem ATmega gemacht - natürlich ohne Bildschirm sondern mit einem schnöden Gleisbildstellwerk. Mit Arduino-IDE programmiert (pfui!). Was mir auffällt: Hast Du an Deinem Rechenknecht (Raspi?) überhaupt genug Ein-und Ausgänge dran? Ich zähle 43 Taster - einen ganze Menge. Ich hab das via I2C erweitert. MfG
Zum GPIO erweitern gehen MCP23S08 (SPI z.B. mit bit schubsen) oder I2C MCP23008. Zu Fuß GUI in Phyton funktioniert tkinter ganz gut. Zumindest funktioniert das parallel zur GPIO Bibliothek.
Christian K. schrieb: > Zu Fuß GUI in Phyton funktioniert tkinter ganz gut Wenn man sich das Leben schwer machen will. Auch unter Linux geht für Desktop / Grafik nichts über Visual BASIC: https://www.xojo.com/ Oder man lässt Linux ganz weg und macht nur BASIC: https://www.riscosopen.org/
Danke für alle Antworten. Habe mich jetzt für Phyton entschieden, da dies mehrmals erwähnt wurde. Ich beherrsche diese Sprache ein wenig, weiss also ein wenig darüber, aber wie kann man jetzt ein Bitmap einfügen? Was wäre da der Befehl? Danke im voraus!
Schon zu früh abgesendet...Müsste auch noch wissen, wie mann dann die einzelnen Wigets mit den GPIOs verknüpft. Die GPIO werde ich per Gertboard erweitern, ist meiner Meining nach die einfachste Variante.
Ich würde das vermutlich als einfache Webseite realisieren. Das Zeichnen der Grafik ist damit ein Klacks: statisches .png anzeigen, oder sogar gleich eine .svg Vektografik? Oder per HTML5 Canvas on the fly zeichnen? Alles ist möglich :-) Zugriff auf die GPIOs hast du damit auch (PHP, NodeJS etc.). Und du kannst mit jedem Endgerät (Tablet, Smartphone, Laptop) auf die Webseite zugreifen.
Tobias schrieb: > Habe mich jetzt für Phyton entschieden, da > dies mehrmals erwähnt wurde. Ach doch so schnell... Ich hätte da noch Pascal zu bieten, in der Konfig Freepascal mit Lazarus IDE. Wenn Du das aktuelle Raspbian Stretch drauf hast, ist eine aktuelle Lazarus + Freepascal Version im Paketmanager zu finden. Das deutsche Lazarus Forum ist recht kompetent - und deutlich angenehmer im Umgangston als... Lazarus kann auch Crosskompiling von Windows oder PC-Linux auf den Raspberry, sprich Du entwickelst das Programm unter Windows und läßt es dann auf dem Raspberry laufen.
Wenn man das mit Web-Technologien macht, würde sich ein ESP8266 (z.B. NodeMCU Board) als Webserver geradezu aufdrängen.
Stefan U. schrieb: > Wenn man das mit Web-Technologien macht, würde sich ein ESP8266 (z.B. > NodeMCU Board) als Webserver geradezu aufdrängen. Warum sollte man das krampfhaft mit Web-Technologie machen wollen? Ein einfaches Programm, welches über File-IO die GPIOs oder den I2C bedient und das Stellpult als Bild darstellt reicht da. Mit Web musst Du einen Webserver einrichten, mit HTML, JavaScript, Python rummachen. Ja, man könnte dann das Stellwerk von jedem Tablet aus bedienen. Scheint mir aber nicht gewollt zu sein.
> Warum sollte man das krampfhaft mit Web-Technologie machen wollen? Wer zum beispiel beruflich Web Anwendungen entwickelt (also mich), für den wäre das nicht krampfhaft sondern der einfachste Weg wo man sich außerdem sicher fühlt. Das das technisch gesehen mit primitiveren Mitteln auch geht, will ich gar nicht abstreiten. > über File-IO die GPIOs oder den I2C bedient Also Linux. Das wäre für einige andere wiederum ein krampfhafter Weg. > Mit Web musst Du einen Webserver einrichten, mit HTML, JavaScript, > Python rummachen. Webserver gibt bei Arduino schon. HTML und Javascript tippe ich Dir schneller runter als ein Hello-World Programm in C. Python braucht man dazu nicht, man kann die Funktionen hinter Knöpfchen in C++ schreiben. Ist gar nicht schwer, wenn man sich nicht scheut, das Framework zu benutzen. Wer mit Web Technologien nicht vertraut ist, für den ist der andere Weg über klassische Desktop GUI Frameworks mit Widgets und Bildern sicher einfacher.
Stefan U. schrieb: > Also Linux. Das wäre für einige andere wiederum ein krampfhafter Weg. Da oben steht Raspberry. Gehe ich mal davon aus, dass das unter Linux laufen soll. Stefan U. schrieb: > Wer zum beispiel beruflich Web Anwendungen entwickelt (also mich), für > den wäre das nicht krampfhaft sondern der einfachste Weg wo man sich > außerdem sicher fühlt. Und wer nur einen Hammer hat, sieht überall Nägel.
Karl schrieb: > Warum sollte man das krampfhaft mit Web-Technologie machen wollen? - Dann reicht schon ein kleiner ES8266 zur Ausführung (ist günstiger, muss nicht booten, kann einfach vom Strom getrennt werden, verbraucht weniger, läuft mit Akku etc.) - Du kannst es von jedem Tablet/Smartphone etc. bedienen (auch per Touch) - Grafische Ausgaben mit Animationen, Scrollen, Zoomen etc. sind quasi geschenkt - Das Ganze ist mit sehr wenig Aufwand umsetzbar - Es läuft am Ende auf jedem Gerät, sei es ein raspi, ein NodeMCU, ein ESP32, ein Laptop etc. - Du kannst es komfortabel am PC entwickeln Scheint also ein ziemlich gut geeigneter Ansatz zu sein...
Es wirkt halt schon ein bisschen wie mit Kanonen auf Spatzen zu schießen. Aber zeige mir mal eine Java oder .NET Enterprise Anwendung bei das nicht der Fall wäre. Wir schürfen Bitcoins, also Scheiß auf Rechenleistung.
Stefan U. schrieb: > Wir schürfen Bitcoins, also Scheiß auf Rechenleistung. Genau, sein Stellwerks-Pi schürft Bitcoins... is kla. Es gibt für den Raspberry genug Beispiele, wie man damit mit Python (nicht Phyton!) die GPIOs ansteuert. Außerdem gibt es genug Beispiele, wie man mit Python eine GUI baut. Das kann man mit tkinter machen (Python-Standard), oder mit SDL, oder mit irgendwas anderem. Diese Kenntnisse muss sich der TO erstmal erarbeiten, bevor er weitermachen kann. Ja, man kann auch noch einen Arduino UND einen ESP32 da mit einbeziehen, das ganze über die Hausautomatisierung und Google sprachsteuern und zu guter Letzt über Alexa an Facebook weiterleiten, während man mit seinem Tablet live zuschaut, wie schnell das geht. Darum ging es aber offensichtlich nicht.
Ich hab mir mal das hier bestellt: https://www.itead.cc/display/nextion.html das sollte gui und serial communication erledigen!
> Ich hätte da noch Pascal zu bieten, in der Konfig Freepascal mit Lazarus > IDE. > > Wenn Du das aktuelle Raspbian Stretch drauf hast, ist eine aktuelle > Lazarus + Freepascal Version im Paketmanager zu finden. Das deutsche > Lazarus Forum ist recht kompetent - und deutlich angenehmer im > Umgangston als... > > Lazarus kann auch Crosskompiling von Windows oder PC-Linux auf den > Raspberry, sprich Du entwickelst das Programm unter Windows und läßt es > dann auf dem Raspberry laufen. Lazarus ist tatsächlich genial :D. Wie kann ich damit dann die GPIO's steuern? Das mit den Ausgängen ist kein Problem, da ich alles Hexadezimal codieren werde (da das Raspi nur als Weitergabe dient, es führt keine Funktionen aus) damit ich die Infos weitergeben kann. An den Eingängen wird auch wieder alles codiert sein, was mich zur nächsten Frage bzgl. Lazarus bringt: Wie kann man dann die Inputs visuell wiedergeben? Danke für die Antwort!
Ich verwende dazu Codesys für Raspberry die kostenlose Testversion. Da kann man tolle Oberflächen programmieren und hat gleichzeitig eine Webvisualisierung ohne etwas zusätzlich zu machen. Die Testversion bleibt zwar alle 2 Stunden stehen, kann aber relativ leicht mit einem Bash scrip austomatisch neu gestartet werden. Mit den "Echtzeitsystemen" die ich in C realisiert habe, kommuniziert das Codesys über die RAM-Disk. So stört der sekündliche Unterbruch alle 2 Stunden gar nicht. Sind irgentwelche Daten in der Visualisrung zu merken, legt man diese einfach in den persistenten Datenbereich.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.