@@ -61,9 +61,12 @@ def close_button_click(e):
6161
6262def snap_button_click (e ):
6363 print ("Picture taken!" )
64+ import os
6465 try :
65- import os
6666 os .mkdir ("data" )
67+ except OSError :
68+ pass
69+ try :
6770 os .mkdir ("data/com.example.camtest" )
6871 except OSError :
6972 pass
@@ -95,38 +98,22 @@ def qr_button_click(e):
9598 qr_label .set_text (lv .SYMBOL .EYE_OPEN )
9699
97100
98- def try_capture_only_webcam ():
99- global current_cam_buffer , image_dsc , image
100- new_cam_buffer = webcam .capture_frame (cam ) # Returns memoryview
101- if new_cam_buffer and len (new_cam_buffer ) == 240 * 240 :
102- image_dsc .data = new_cam_buffer # Update image descriptor
103- image .set_src (image_dsc ) # Update LVGL image
104- #if current_cam_buffer is not None:
105- # webcam.free_buffer(cam) # Free the old buffer
106- #current_cam_buffer = new_cam_buffer # Clear reference to allow GC
107- else :
108- print ("Invalid buffer size:" , len (new_cam_buffer ))
109-
110101def try_capture ():
111102 global current_cam_buffer , image_dsc , image , use_webcam
112103 if use_webcam :
113104 new_cam_buffer = webcam .capture_frame (cam )
114105 elif cam .frame_available ():
115106 new_cam_buffer = cam .capture () # Returns memoryview
116107 if new_cam_buffer and len (new_cam_buffer ):
117- # print("Invalid buffer size:", len(new_cam_buffer))
118- # cam.free_buffer()
119- # return
120- # Update image descriptor with new memoryview
121108 image_dsc .data = new_cam_buffer
122- # Set image source to update LVGL (implicitly invalidates widget)
123109 image .set_src (image_dsc )
124- #current_cam_buffer = None # Clear reference to allow GC
125110 #image.invalidate() #does not work
126- # Free the previous buffer (if any) after setting new data
127- if current_cam_buffer is not None and not use_webcam :
111+ if not use_webcam :
128112 cam .free_buffer () # Free the old buffer
129113 current_cam_buffer = new_cam_buffer # Store new buffer reference
114+ else :
115+ print ("No image received from camera, ignoring..." )
116+ return
130117
131118
132119def build_ui ():
@@ -214,7 +201,7 @@ def init_cam():
214201
215202cam = init_cam ()
216203if not cam :
217- print ("init cam failed, retrying with webcam... " )
204+ print ("camtest.py: no internal camera found, trying webcam on /dev/video0 " )
218205 try :
219206 cam = webcam .init ("/dev/video0" ) # Initialize webcam with device path
220207 use_webcam = True
@@ -228,9 +215,9 @@ def init_cam():
228215 try_capture ()
229216 # Task handler needs to be updated from the same thread, otherwise it causes concurrency issues:
230217 lv .task_handler ()
231- time .sleep_ms (5 )
232- lv .tick_inc (5 )
233- print ("App backgrounded, deinitializing camera ..." )
218+ time .sleep_ms (1 )
219+ lv .tick_inc (1 )
220+ print ("camtest.py: stopping ..." )
234221 if use_webcam :
235222 webcam .deinit (cam ) # Deinitializes webcam
236223 else :
0 commit comments