Skip to content

Commit fb7f332

Browse files
camtest: use taskhandler callback, more stable
1 parent 171865a commit fb7f332

1 file changed

Lines changed: 14 additions & 28 deletions

File tree

  • internal_filesystem/apps/com.example.camtest/assets

internal_filesystem/apps/com.example.camtest/assets/camtest.py

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -128,21 +128,21 @@ def qr_button_click(e):
128128
else:
129129
stop_qr_decoding()
130130

131-
def try_capture():
132-
global current_cam_buffer, image_dsc, image, use_webcam
131+
def try_capture(event, data):
132+
global current_cam_buffer, image_dsc, image, use_webcam, keepgoing
133+
if not keepgoing:
134+
print("try_capture called while keepgoing==False, aborting...")
135+
return
133136
if use_webcam:
134137
current_cam_buffer = webcam.capture_frame(cam, "rgb565")
135138
elif cam.frame_available():
136139
current_cam_buffer = cam.capture()
137-
if current_cam_buffer and len(current_cam_buffer):
140+
if current_cam_buffer and len(current_cam_buffer) and keepgoing:
138141
image_dsc.data = current_cam_buffer
139142
#image.invalidate() # does not work so do this:
140143
image.set_src(image_dsc)
141144
if not use_webcam:
142145
cam.free_buffer() # Free the old buffer
143-
else:
144-
print("No image received from camera, ignoring...")
145-
return
146146

147147

148148
def build_ui():
@@ -257,36 +257,22 @@ def init_cam():
257257
status_label_text = ""
258258
qr_button.remove_flag(lv.obj.FLAG.HIDDEN)
259259
snap_button.remove_flag(lv.obj.FLAG.HIDDEN)
260+
import task_handler
261+
th.add_event_cb(try_capture, task_handler.TASK_HANDLER_STARTED)
260262

261-
# Task handler needs to be updated from this app's thread, otherwise it causes concurrency issues
262-
#th.disable()
263-
#time.sleep_ms(500)
264-
265-
while appscreen == lv.screen_active() and keepgoing is True:
266-
#print("cam keeps going...")
267-
if status_label.get_text() != status_label_text:
268-
status_label.set_text(status_label_text)
269-
if status_label_text:
270-
status_label_cont.remove_flag(lv.obj.FLAG.HIDDEN)
271-
else:
272-
status_label_cont.add_flag(lv.obj.FLAG.HIDDEN)
273-
#lv.task_handler()
274-
time.sleep_ms(5)
275-
#lv.tick_inc(5)
276-
if cam:
277-
th.disable()
278-
try_capture()
279-
th.enable()
280263

281-
print("camtest.py: stopping...")
264+
while appscreen == lv.screen_active() and keepgoing:
265+
time.sleep_ms(100)
282266

267+
print("camtest.py: stopping...")
268+
if cam:
269+
th.remove_event_cb(try_capture)
283270
if use_webcam:
284271
webcam.deinit(cam)
285272
elif cam:
286273
cam.deinit()
287274

288-
289275
print("camtest.py: showing launcher...")
290276
show_launcher()
291-
#th.enable()
277+
292278

0 commit comments

Comments
 (0)