Hallo zusammen Auf der Suche nach einem passenden GUI, habe ich GITHub durchstöbert. Dabei habe ich einige interessante Projekte gefunden. Interessanterweise finden sich dazu keinerlei Ergebnise in Zusammenhang mit Mikrocontrollern. Ich habe hier mal ein paar interessante GUIs gelistet. Mich würde es interessieren, ob jemand von euch bereits versucht hat, eines dieser auf einen Mikrocontroller zu portieren. - https://github.com/vurtun/nuklear (nur ein einziges File) - https://github.com/littlevgl/lvgl (gibts für arduino, aber keine demos gefunden) - https://github.com/MaJerle/EasyGUI - https://github.com/SL-RU/MakiseGUI - https://github.com/ryankurte/micro-gui Gruss Holger
:
Bearbeitet durch User
Ein GUI ... eine tolle Sache. Auf einem Controller.. ? Was soll's denn koennen ?
Holger, ich würde den Thread gerne etwas präzisieren: du schreibst, du suchst "eine GUI" für µC. Wenn man von "einer GUI" spricht, meint man eine konkrete Visualisierung von bestimmten Inhalten. Das würde so vermuten lassen, du suchst eine Art Config-Wizard-GUI z.B. >Aber ich vermute, du suchst ein Framework, mit dem man GUI´s erstellen kann? >Wahrscheinlich am besten plattformunabhängig? Zwar nicht unabhängig, dafür aber dokumentiert und verfügbare Starterkits und Demoprojekte währe GrLib von Texas Instruments. Ist in so fern nicht plattformunabhängig, als das an manchen Stellen Assembler zu finden ist. Außerdem verbieten die Nutzungsrechte ein Portieren auf anderen Plattformen wenn ich das richtig sehe. Aber solange du das im stillen Kämmerlein machen würdest - könntest nur nix posen, ach ich meine posten^^
PS.: wie schon einer vor mir fragte >was soll es denn können? Dinge darstellen ist das eine, aber willst du auch interaktive Flächen wie Buttons, Slider etc darstellen?
Danke für die Antworten. Also die Featurelist: - Weitestgehend Hardware unabhängig (also eigene SetPixel) - Sämtliche gängigen Widgets unterstützen (Buttons, Bargraphs etc.) - Event management. Funktion um den x, y, punkt des touch events zu übergeben - Layers: Verschiedene "ansichten" mit einer gruppe von Elementen - KEIN Framebuffer benötigt. Da einige Mikrocontroller nicht genügend Platz haben um ein vollständiges Frame im RGB565 Format zu halten.
Hier hab ich noch eine: https://github.com/achimdoebler/UGUI Einige deiner oben Aufgelisteten habe ich evaluiert, aber kaum eine brauchen können. Das 'nuklear'-Single-File-Konzept ist zwar nerdy, aber für kleine uC eher unbrauchbar. Die UGUI ist schnell mal angeschmissen, aber nicht sonderlich schnell wegen dem sehr dünnen "SetPixel"-Abstraction-Layer. Ansonsten läuft es bei vielen Custom-Widgets auf Selbermachen raus. Wenn C++ eine Option ist, könntest du dir auch die GUI aus der recht eleganten DS203 'gabonator'-FW klauben: https://github.com/gabonator/DS203/tree/master/Source/Gui
> - KEIN Framebuffer benötigt. Da einige Mikrocontroller nicht genügend
Platz haben um ein vollständiges Frame im RGB565 Format zu halten.
Wenn ein Framebuffer nicht drinliegt ... die Datenstrukturen werden
einiges komplizierter und aufwendiger sein. .. Vergiss es. Ein 128x64
Display laesst sich von der Rechenleistung her nicht mehr von einem Tiny
bemalen, wenn sonst noch etwas gemacht werden sollte.
Richtig. Es ist 2018. Da sollte mans ich nicht selbst in der Microcontroelr Größe so extrem beschneiden wenn da sowas großes wie ein Dispaly dran kommt. Wenn das Dispaly nicht dauerhaft gebraucht wird, aber Akkulkaufzeit das allerhöchste Gebot ist, dann eventuell an eine 2-Controler Lösung denken.
Holger K. schrieb: > Also die Featurelist: ...na dann mache einfach (auf deiner Hardware) los und melde dich, wenn du eine Frage hast bzw. ein Teilergebnis vorliegt... ...was erwartest du eigentlich? Wir kennen deine Hardware nicht, wir kennen deine Toolchain nicht, wir kennen deine Kenntnisse nicht..., was willst du eigentlich?
Holger K. schrieb: > nicht genügend Platz haben um ein vollständiges Frame im RGB565 Format > zu halten. Dann 1bit monochrom bzw. Farblayer oder explizites farbhandling
Für mich dienen Mikrocontroller dazu, Sachen zu steuern, die ein normaler PC oder ein normales Tablet nicht direkt steuern kann. Für grafische Oberflächen würde ich immer PC basierte Hardware, Tablets oder Smartphones verwenden. Wahlweise mit eigenem Programm/App oder Web Browser (also Javascript). Im letzten Fall kann der µC je nach Leistung entweder nur die Daten liefern oder die gesamte Webseite. Nicht vergessen sollte man die Nextion Displays, da ist das GUI Kit im Display integriert.
Holger K. schrieb: > Danke für die Antworten. > > Also die Featurelist: > > - Weitestgehend Hardware unabhängig (also eigene SetPixel) Es macht es natürlich flexibel und einfach nutzbar, aber auch ggf. langsam und ressourcenfressend. > - KEIN Framebuffer benötigt. Da einige Mikrocontroller nicht genügend > Platz haben um ein vollständiges Frame im RGB565 Format zu halten. Auch das dürfte ziemlich Performance kosten. Stefan U. schrieb: > Für mich dienen Mikrocontroller dazu, Sachen zu steuern, die ein > normaler PC oder ein normales Tablet nicht direkt steuern kann. Für mich ist noch ein wesentlicher Aspekt, dass man nicht erst ein komplettes Betriebssystem booten muss, bevor es überhaupt mal anfängt zu funktionieren. > Für grafische Oberflächen würde ich immer PC basierte Hardware, Tablets > oder Smartphones verwenden. Kann je nach Anwendungsfall aber übertrieben sein. Manchmal will man eben einfach ein Display mit ein paar Bedienelementen, ohne da gleich wieder WLAN und eine App zu brauchen. > Wahlweise mit eigenem Programm/App oder Web Browser (also Javascript). Im > letzten Fall kann der µC je nach Leistung entweder nur die Daten liefern > oder die gesamte Webseite. Ob es jetzt einfacher ist, auf einem µC einen kompletten Webserver mit Weboberfläche zu machen als ein Display anzusteuern? Ich finde es auch einfacher nutzbar, wenn ich direkt ein Display einfach so verwenden kann, als wenn ich erst mein Handy rausholen, entsperren, ggf. mit WLAN oder Bluetooth verbinden, den Browser starten und die URL eingeben muss.
Rolf M. schrieb: > Ich finde es auch einfacher nutzbar, wenn ich direkt ein Display einfach > so verwenden kann, als wenn ich erst mein Handy rausholen, entsperren, > ggf. mit WLAN oder Bluetooth verbinden, den Browser starten und die URL > eingeben muss. ... dafür geht das aber von überall! So ein billiges Tablet kann man ja als ständige Anzeige auch verwenden. Wichtig ist allein die Abrufbarkeit des Inhalts als Webseite.
Ein China-Handy oder Tablet kostet heute <100€ inkl. Quad-Core Prozessor und HD-Display. Da würde ich mal schauen, ob man diese Geräte nicht geeignet nutzen kann. Von Deiner Anwendung hast Du ja leider nichts erzählt.
Holger K. schrieb: > Ich habe hier mal ein paar interessante GUIs gelistet. > Mich würde es interessieren, ob jemand von euch bereits versucht hat, > eines dieser auf einen Mikrocontroller zu portieren. Ein GUI setzt eine Anzeige- und Bedieneinheit voraus. Gemeinhin brauchst du dafür ein bisschen Speicherausstattung. Mit einem ATtiny kann das also schnell eng werden. Woran denkst du also konkret? Und was bezeichnest du in diesem Zusammenhang ams "Mikrocontroller"? Und selbst ein Raspberry Pi ist da schon deutlich gefordert, wenn man sich nennenswert von Klötzchengraphik abheben möchte.
Es gibt aber sicher immer noch Gerätchen die autark laufen sollen und bei denen eine lokale Bedienung und Statusanzeige sinnvoll ist. Ein QVGA TFT mit Controller und Touchscreen kostet ca. 10€, ein direkt steckbares Prozessorboard wie Arduino mega2560 oder ein STM32F407 kostet noch einen 10er dazu. Das ist schon spottbillig und genug Power für Steuer und Messaufgaben hat man damit auch. Ich hatte auch Software für ein Chart gesucht, bin aber beim selber schreiben gelandet. Als Basis die AdafruitGFX, dafür gibt es schon einige Aufsätze (einfache Bargauges zB: https://github.com/pljakobs/Arduino_Gauges) und einen Ansatz mit Canvas und Button ist auch drin.
> Manchmal will man eben einfach ein Display mit ein paar Bedienelementen Ja schon, dann braucht man aber auch kein aufwändiges GUI Framwork. Ein einfacher Display Treiber, der neben Text auch Linien, Rechtecke, Kreise und Bitmaps zeichnen kann, genügt. > Ob es jetzt einfacher ist, auf einem µC einen kompletten Webserver mit > Weboberfläche zu machen als ein Display anzusteuern? Ich dachte eher eine statische HTML Seite mit Javascript, welches das eigentliche "Zeichnen" übernimmt. Entsprechende Server-Seitige Libraries sind im Arduino Framework z.B. enthalten. Wer Arduino nicht mag, könnte meinen Plain-C Ansatz als Vorlage verwenden: http://stefanfrings.de/net_io/index.html Oder man installiert die HTML+Javascript Dateien auf seinen PC bzw Smartphone, so dass der µC wie gesagt nur die Daten liefert. Siehe https://de.wikipedia.org/wiki/Ajax_(Programmierung). Dazu langt schon ein sehr minimalistischer HTTP Service, der den Namen "Server" nicht wirklich verdient. > Ich finde es auch einfacher nutzbar, wenn ich direkt ein Display > einfach so verwenden kann, als wenn ich erst mein Handy rausholen, > entsperren, ggf. mit WLAN oder Bluetooth verbinden, den Browser > starten und die URL eingeben muss. So meinte ich das nicht. Das Handy/Tablet als Display wäre fest montiert und würde über Bluetooth, WLAN oder USB mit den µC kommunizieren. Das müsste man nur einmalig einrichten. > ... dafür geht das aber von überall! Das wäre der angenehme Nebeneffekt, den man dann zusätzlich hätte.
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.