LVGL 01 Bindings
LVGL-MicroPython-Bindings: Überblick[Bearbeiten | Quelltext bearbeiten]
LVGL ist eine in C geschriebene GUI-Bibliothek. Um sie aus MicroPython heraus nutzen zu können, braucht es ein Binding: generierten Wrapper-Code, der die C-API von LVGL als Python-Modul verfügbar macht (z. B. lv.obj() statt lv_obj_create()).
Für MicroPython existieren dabei zwei getrennte, nicht kompatible Entwicklungslinien. Dieses Handbuch bezieht sich ausschließlich auf Linie 2 (kdschlosser's lvgl_micropython).
Linie 1: Das offizielle LVGL-Projekt[Bearbeiten | Quelltext bearbeiten]
- lv_binding_micropython
- Der eigentliche Binding-Code ("lib"). Kein eigenständiges MicroPython, sondern das Bindeglied zwischen LVGL und MicroPython. Repository: https://github.com/lvgl/lv_binding_micropython
- lv_micropython
- Ein Fork des offiziellen MicroPython-Repos, der
lv_binding_micropythonals Submodule einbindet und fertige Ports für ESP32, STM32, RP2 und Unix bereitstellt. Ursprünglich als Referenzbeispiel gedacht, hat sich aber zum von den meisten Nutzern bevorzugten Weg entwickelt, weil kaum jemand die Bindings selbst in einen eigenen MicroPython-Fork integrieren möchte. Repository: https://github.com/lvgl/lv_micropython
Diese Linie stellt die Event-Loop über lv_utils.event_loop bereit.
Linie 2: kdschlosser's lvgl_micropython[Bearbeiten | Quelltext bearbeiten]
Kein Fork von lv_binding_micropython, sondern eine eigenständige Neuentwicklung, mittlerweile unter der GitHub-Organisation lvgl-micropython gepflegt (ursprünglich ein persönliches Projekt von kdschlosser). Repository: https://github.com/lvgl-micropython/lvgl_micropython
Schwerpunkte gegenüber Linie 1:
- Eigenes Build-System (
make.py) statt klassischer MicroPython-Makefiles - Eigene Bus-Abstraktion (
lcd_bus-Modul) für die Kommunikation mit Display-Controllern, inklusive Framebuffer-Verwaltung (MEMORY_INTERNAL/MEMORY_DMA) - Deutlich breitere Treiberauswahl direkt verfügbar (u. a. ST7789, ST7796, ILI9341, XPT2046, FT6X36), ohne eigenen C-Code
- Eigenes
task_handler-Modul für die Event-Loop - Fokus auf LVGL v9 und aktuelle Consumer-Boards (CYD, JC-Serie, WT32-SC01 u. a.)
- Aktiv gepflegt, reaktiver Maintainer im LVGL-Forum
Dies ist die Codebasis, die für alle Anleitungen in diesem Handbuch verwendet wird.
Gegenüberstellung[Bearbeiten | Quelltext bearbeiten]
| lv_binding_micropython (offiziell) | lvgl_micropython (kdschlosser) | |
|---|---|---|
| Event-Loop-Helfer | lv_utils.event_loop |
task_handler.TaskHandler
|
| Low-Level-Aufruf | lv.task_handler() |
lv.task_handler()
|
| Build-System | MicroPython-Makefiles | make.py
|
| Bus / Framebuffer | treiberspezifisch, meist in C | lcd_bus-Modul, Python-seitig konfigurierbar
|
| Zielgruppe | generische MicroPython-Ports | aktuelle Consumer-Boards (u. a. CYD) |
Relevanz für dieses Handbuch[Bearbeiten | Quelltext bearbeiten]
Da beide Linien unterschiedliche Modulnamen und Architekturen für dieselben Grundkonzepte verwenden, gilt beim Nachschlagen externer Beispiele: Stammt ein gefundenes Codebeispiel aus lv_binding_micropython / lv_micropython, sind Details wie die Event-Loop (lv_utils.event_loop) nicht direkt übertragbar auf die in diesem Handbuch verwendete Codebasis. Maßgeblich sind ausschließlich Beispiele aus dem Repository lvgl-micropython/lvgl_micropython.