Hallo Miteinander, Ich arbeite mich mal grob in die ST32 Programmierung ein und versuche vorab eine Übersicht über die Techniken und Möglichkeiten der Grafikprogrammierung zu bekommen, wo sich einige Fragen aufgetan haben. Habe bisher nur mit dem Arduino LCD's und OLED's programmiert. 1: Ist es nur mit speziellen ST32-Boards möglich ein GUI mit Qt und TouchGFX zu erstellen? 2: Herkömmliche LCD's und OLED's werden sicher genau so programmiert wie mit der Arduino IDE?
Roman R. schrieb: > 1: Ist es nur mit speziellen ST32-Boards möglich ein GUI mit Qt und > TouchGFX zu erstellen? Nein. Roman R. schrieb: > 2: Herkömmliche LCD's und OLED's werden sicher genau so programmiert wie > mit der Arduino IDE? Wenn du erklärst was du unter "genau so programmiert" verstehst kann man dir vielleicht eine Antwort geben. Bitte keine Deppenapostrophen! http://www.deppenapostroph.info
Für touchGFX ist dokumentiert was man für eigene Hardware braucht: https://support.touchgfx.com/docs/development/hardware-selection/hardware-selection-introduction https://support.touchgfx.com/docs/development/touchgfx-hal-development/scenarios/scenarios-fmc Das ist ein gutes allgemeines YT Video zu STM32 Grafik: https://youtu.be/khh2-voq3Vo Und https://lvgl.io/ kann ich als Alternative zu den genannten empfehlen.
Rein technisch gibt es zahlreiche unterschiedliche Schnittstellen zu den Displays. Da gibt es gefühlt fast so viele Protokolle/Befehlssätze wie Modelle. Ob es dir gelingt, alle gewünschten Displays mittels Bilbiothek zu abstrahieren, so dass diese alle das gleiche Interface haben, wage ich zu bezweifeln. Die Adafruit GFX Bibliothek macht vor, wie man so etwas angehen kann. Ich finde sie gut. Aber in meinen Anwendungen hatte ich bisher immer gute Gründe, sie nicht zu benutzen.
AdafruitGFX oder die U8g Libraries sind aber eine andere Liga, die
bieten 'nur' Primitive zum Zeichnen von z.B. Linien, Kreisen, Texten.
Bei touchGFX, Qt, lvgl, emWin gibt es high level Komponenten die dann
Widget o.ä. heißen und damit ein GUI definieren.
Die Frage ist da nicht
> Ist es nur mit speziellen ST32-Boards möglich
sondern welche Boards sind für die gewünschen Libs geeignet. Die
schicken Animationen sehen bescheiden aus wenn die Daten nicht schnell
genug in das Display geschaufelt werden können.
touchGFX verwendet C++, das mag ich, es ist aber durch das MVC aufwändig
einen Button einfach mit einer Funktion zu belegen. Ich habe das auch
mal ausprobiert, da gab es den Designer noch nicht und alles war
Handarbeit. Das war mir einen touch too much und mir gefällt lvgl jetzt
ganz gut. Ist zwar plain C und deshalb erstmal viel probieren welche
Objekte (lvgl baut ein bisschen C++ und CSS nach) welche Styles und
Eigenschaften haben, aber das ist gut durchschaubar. Den Simulator in VS
unter Windows zu kompilieren sind wenige Klicks, und auch unter Linux
kann man den Simulator bauen und damit wird das Probieren erträglicher.
Der Simulator verwendet dabei den gleichen Code und auf dem µC sieht das
Ergebnis dann gleich aus.
Basis ist aber auch hier ein µC oder Board mit genug Speicher und
schnellem Displayinterface. Der ESP32 oder RPi Pico sind da auch gute
Kandidaten, da gibt es auch schon schöne Projekte.
> Ob es dir gelingt, alle gewünschten Displays mittels Bilbiothek zu > abstrahieren, so dass diese alle das gleiche Interface haben, wage ich > zu bezweifeln. Ich mache das jetzt schon bestimmt seit 20Jahren mit allen Display die mir in die Finger gefallen sind. Letztlich laeuft es auf setpixel(x,y) hinaus. .-) Olaf
Olaf schrieb: > Letztlich laeuft es auf setpixel(x,y) > hinaus. .-) was bei ILI & Co aber sehr lahm wird weil da mehr Verwaltung (setze Schreibadresse auf x,y) übertragen wird als Daten. Deshalb haben die GUI Libs da eine flush_buffer Funktion die nur einmal das Schreibfenster setzen und dann die Pixeldaten eines (partitiellen) Framebuffers raushauen. Was dann auch gut per DMA geht.
Olaf schrieb: > Letztlich laeuft es auf setpixel(x,y) hinaus. Wenn man sich auf den kleinsten gemeinsamen Nenner beschränkt, ist die Abstrahierung einfach. Aber auch super lahm. So weit waren wir mal beim PC, bevor DirectX und OpenGL eingeführt wurde. Zum Beispiel lässt sich sanftes Scrolling so nicht auf einem SSD1306 implementieren, wohl aber mit einem Framebuffer.
D.h. wenn ich schöne GUI's erstellen möchte verwende ich das Entwicklungsboard welches von Qt oder TouchGFX unterstützt wird, wo ich gezwungen bin den ganzen Kit so zu nehmen wie er ist!? Wenn ich das nicht mit herkömmlichen Displays mache bleibt die alte Laier wie setPixel(x,y,color)...
nein, du sollst nur nicht erwarten das du auf einem Arduino Nano ein touchGFX laufen lassen kannst.
Roman R. schrieb: > wenn ich schöne GUI's erstellen möchte .... auch dann sollst du keine Deppenapostrophen verwenden. erklehr behr schrieb: > Bitte keine Deppenapostrophen! > http://www.deppenapostroph.info
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.