Die erweiterte Messung war eindeutig: "1 Bereich, 100 % der Fläche" - LVGL zeichnete bei jeder Zustandsmeldung den kompletten Bildschirm neu, also einmal pro Sekunde 240-300 ms lang. Kein Rendering-Tempoproblem, sondern massiv zu viel Invalidierung.
lv_label_set_text invalidiert den Label-Bereich unbedingt, auch bei identischem Text; lv_obj_set_style_text_color ebenso. Auf dem Dashboard wurden pro Sekunde Werte quer über den Bildschirm gesetzt (Uhr oben, Temperaturen Mitte, Bezugswerte unten) - LVGL joint die Bereiche, und die Bounding-Box ist die ganze Fläche.
Neue Helfer label_fmt_if_changed() und label_color_if_changed() neben dem vorhandenen label_set_if_changed().
Alle 13 zyklischen Textzuweisungen und alle 10 Farbzuweisungen in ui_update darauf umgestellt.
Da sich Temperaturen selten um ein Zehntelgrad ändern und Sollwerte praktisch nie, entfallen die meisten Neuzeichnungen ganz.
Beide Panel-Varianten mit arduino-cli gegengebaut.
Die erweiterte Messung war eindeutig: **"1 Bereich, 100 % der Fläche"** - LVGL zeichnete bei jeder Zustandsmeldung den kompletten Bildschirm neu, also einmal pro Sekunde 240-300 ms lang. Kein Rendering-Tempoproblem, sondern massiv zu viel Invalidierung.
`lv_label_set_text` invalidiert den Label-Bereich unbedingt, auch bei identischem Text; `lv_obj_set_style_text_color` ebenso. Auf dem Dashboard wurden pro Sekunde Werte quer über den Bildschirm gesetzt (Uhr oben, Temperaturen Mitte, Bezugswerte unten) - LVGL joint die Bereiche, und die Bounding-Box ist die ganze Fläche.
- Neue Helfer `label_fmt_if_changed()` und `label_color_if_changed()` neben dem vorhandenen `label_set_if_changed()`.
- Alle 13 zyklischen Textzuweisungen und alle 10 Farbzuweisungen in `ui_update` darauf umgestellt.
Da sich Temperaturen selten um ein Zehntelgrad ändern und Sollwerte praktisch nie, entfallen die meisten Neuzeichnungen ganz.
Beide Panel-Varianten mit arduino-cli gegengebaut.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Die erweiterte Messung war eindeutig: "1 Bereich, 100 % der Fläche" - LVGL
zeichnete bei jeder Zustandsmeldung den kompletten Bildschirm neu, also
einmal pro Sekunde 240-300 ms lang. Kein Rendering-Tempoproblem, sondern
massiv zu viel Invalidierung.
lv_label_set_text invalidiert den Label-Bereich unbedingt, auch bei
identischem Text; lv_obj_set_style_text_color ebenso. Auf dem Dashboard
wurden pro Sekunde Werte quer über den Bildschirm gesetzt (Uhr oben,
Temperaturen Mitte, Bezugswerte unten) - LVGL joint die Bereiche, und die
Bounding-Box ist die ganze Fläche.
- Neue Helfer label_fmt_if_changed() und label_color_if_changed() neben dem
vorhandenen label_set_if_changed().
- Alle 13 zyklischen Textzuweisungen und alle 10 Farbzuweisungen in
ui_update darauf umgestellt.
Da sich Temperaturen selten um ein Zehntelgrad ändern und Sollwerte
praktisch nie, entfallen die meisten Neuzeichnungen ganz.
Beide Panel-Varianten mit arduino-cli gegengebaut.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
thomas
merged commit a91c792491 into main2026-09-03 02:17:21 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Die erweiterte Messung war eindeutig: "1 Bereich, 100 % der Fläche" - LVGL zeichnete bei jeder Zustandsmeldung den kompletten Bildschirm neu, also einmal pro Sekunde 240-300 ms lang. Kein Rendering-Tempoproblem, sondern massiv zu viel Invalidierung.
lv_label_set_textinvalidiert den Label-Bereich unbedingt, auch bei identischem Text;lv_obj_set_style_text_colorebenso. Auf dem Dashboard wurden pro Sekunde Werte quer über den Bildschirm gesetzt (Uhr oben, Temperaturen Mitte, Bezugswerte unten) - LVGL joint die Bereiche, und die Bounding-Box ist die ganze Fläche.label_fmt_if_changed()undlabel_color_if_changed()neben dem vorhandenenlabel_set_if_changed().ui_updatedarauf umgestellt.Da sich Temperaturen selten um ein Zehntelgrad ändern und Sollwerte praktisch nie, entfallen die meisten Neuzeichnungen ganz.
Beide Panel-Varianten mit arduino-cli gegengebaut.
🤖 Generated with Claude Code