@@ -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
148148def 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 )
283270if use_webcam :
284271 webcam .deinit (cam )
285272elif cam :
286273 cam .deinit ()
287274
288-
289275print ("camtest.py: showing launcher..." )
290276show_launcher ()
291- #th.enable()
277+
292278
0 commit comments