Forum: Mikrocontroller und Digitale Elektronik GUI mit LVGL: eigenes Widget?


von Max G. (l0wside) Benutzerseite


Lesenswert?

Hallo zusammen,

nachdem das Forum von LVGL eher bescheiden frequentiert ist, versuche 
ich mein Glück mal hier. Wer es nicht kennt: LVGL ist eine freie 
GUI-Bibliothek für Mikrocontroller, vergleichbar mit TouchGFX (aber 
nicht auf STM32 beschränkt).

Auf einem STM32L452 mit einem ILI9341-Bildschirm habe ich das auch 
einschließlich FreeRTOS schön ans Laufen bekommen. Nun würde ich gerne 
ein eigenes Widget implementieren - einfach nur eine viereckige "LED", 
als Abwandlung von lv_led.

Ich habe also erst mal nur den Code von lv_led kopiert, alles in 
lv_led_rect umbenannt, compiliert und gelinkt. Der Konstruktor und der 
Event-Handler werden auch brav aufgerufen. Nur auf dem Bildschirm 
passiert nichts.

Verwende ich stattdessen lv_led (dessen Code ja bis auf die Umbenennung 
nach lv_led_rect exakt identisch ist), sind die "LEDs" da.

*Frage*: Muss ein neues Widget noch in irgendeiner Form registriert 
werden, oder muss man sonst etwas beachten? Leider bekommt man bei einer 
Google-Suche nach "lvgl custom widget" nur ein (nicht hilfreiches) 
Python-Beispiel und einen Haufen Schrottseiten.

Viele Grüße,

Max

von J. S. (jojos)


Lesenswert?

Hattest du im lvgl Forum schon gefragt? Der Chef antwortet da häufig 
auch selber.
Die Widgets werden ja zur Laufzeit instantiiert, also können die auch 
eine ID haben die einem Interpreter dann fehlt. Wenn es nicht mit 
Funktionpointern geht.
Eckige LED wäre auch über die Styles möglich, aber dir geht es 
vermutlich um das Prinzip. Alternativ kann man Widgets ja auch über 
zusammensetzen vorhandener Elemente bauen.
Bin gespannt wie das im SLS gelöst werden soll, da fehlt das ja auch 
noch.

Edit: IDs sehe ich im Code nicht, es läuft alles über linked lists von 
Objekten und daher müssten eigene Widgets funktionieren.

: Bearbeitet durch User
von 🕵︎ Joachim L. (Gast)


Lesenswert?


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.