fix and simplify lvgltest

This commit is contained in:
Thomas Farstrike
2025-05-16 10:51:36 +02:00
parent 369625f4cb
commit 1adfe540f8
2 changed files with 24 additions and 38 deletions
@@ -2,7 +2,7 @@
# Initialize
import display_driver
import display_driver # not needed, but included because the LVGL simulator does it
import lvgl as lv
# Create a button with a label
@@ -17,17 +17,10 @@ lv.screen_load(scr)
# END OF COPY-PASTE FROM https://sim.lvgl.io/v9.0/micropython/ports/webassembly/
def check_running(timer):
if lv.screen_active() == scr:
print("hello.py is still foreground")
else:
def janitor_cb(timer):
if lv.screen_active() != scr:
print("hello.py lost foreground, cleaning up...")
timer1.delete()
janitor.delete()
# No cleanups to do, but in a real app, you might stop timers, deinitialize hardware devices you used, close network connections, etc.
timer1 = lv.timer_create(check_running, 1000, None)
# Added: wait until the user navigates away instead of stopping immediately.
#while lv.screen_active() == scr:
# import time
# time.sleep_ms(100)
#print("User navigated away from the HelloWorld app. Bye bye!")
janitor = lv.timer_create(janitor_cb, 1000, None)
@@ -1,5 +1,3 @@
appscreen = lv.screen_active()
import time
import random
@@ -10,7 +8,7 @@ SPINNER_SIZE = 40 # Size of each spinner in pixels
spinner_count = 0
metrics_label = None
def add_spinner_and_update(timer):
def add_spinner(timer):
global spinner_count, metrics_label
try:
x = random.randint(0, appscreen.get_width() - SPINNER_SIZE)
@@ -27,27 +25,22 @@ def add_spinner_and_update(timer):
metrics_label.set_text(f"Spinners: {spinner_count}")
print(f"Finished adding spinner {spinner_count}")
def run_benchmark():
global spinner_count, metrics_label
print("Starting LVGL spinner benchmark...")
metrics_label = lv.label(appscreen)
metrics_label.set_style_text_color(lv.color_white(), 0)
metrics_label.set_style_bg_color(lv.color_black(), 0)
metrics_label.set_style_bg_opa(lv.OPA.COVER, 0)
metrics_label.set_pos(10, 10)
metrics_label.set_text("Spinners: 0")
timer = lv.timer_create(add_spinner_and_update, 2000, None)
th.disable() # taskhandler control is necessary, otherwise there are concurrency issues
while appscreen == lv.screen_active():
lv.task_handler()
time.sleep_ms(10)
lv.tick_inc(10)
th.enable()
timer.delete()
try:
run_benchmark()
except Exception as e:
print(f"Error in benchmark: {e}")
def janitor_cb(timer):
if lv.screen_active() != appscreen:
print("lvgltest.py lost foreground, cleaning up...")
janitor.delete()
add_spinner_timer.delete()
appscreen = lv.screen_active()
metrics_label = lv.label(appscreen)
metrics_label.set_style_text_color(lv.color_white(), 0)
metrics_label.set_style_bg_color(lv.color_black(), 0)
metrics_label.set_style_bg_opa(lv.OPA.COVER, 0)
metrics_label.set_pos(10, 10)
metrics_label.set_text("Spinners: 0")
print("Starting LVGL spinner benchmark...")
janitor = lv.timer_create(janitor_cb, 500, None)
add_spinner_timer = lv.timer_create(add_spinner, 2000, None)
print("lvgltest.py exiting")