55
66from PyQt5 import QtCore
77
8- from dls_barcode .camera import CameraScanner , CameraSwitch , NoNewBarcodeMessage , ScanErrorMessage
8+ from dls_barcode .camera import CameraScanner , CameraSwitch , ScanErrorMessage , NoNewPuckBarcodeMessage
9+
910from dls_util import Beeper
1011
1112RESULT_TIMER_PERIOD = 1000 # ms
@@ -23,6 +24,7 @@ def __init__(self, ui, config):
2324 # Scan elements
2425 self ._camera_scanner = None
2526 self ._camera_switch = None
27+ self ._scan_completed_message_flag = False
2628
2729 # Queue that holds new results generated in continuous scanning mode
2830 self ._result_queue = multiprocessing .Queue ()
@@ -62,7 +64,6 @@ def initialise_scanner(self):
6264 self ._camera_switch = CameraSwitch (self ._camera_scanner , self ._config .top_camera_timeout )
6365
6466 self ._restart_live_capture_from_side ()
65- self ._ui .resetCountdown ()
6667
6768 def _camera_capture_alive (self ):
6869 return self ._camera_scanner is not None and self ._camera_switch is not None
@@ -78,7 +79,6 @@ def _restart_live_capture_from_side(self):
7879 log .debug ("5) starting live capture form side" )
7980 self ._reset_msg_timer ()
8081 self ._camera_switch .restart_live_capture_from_side ()
81- self ._ui .resetCountdown ()
8282
8383 def _read_message_queue (self ):
8484 if self ._message_queue .empty ():
@@ -93,11 +93,13 @@ def _read_message_queue(self):
9393 if not self ._msg_timer_is_running ():
9494 # The result queue is read at a slower rate - use a timer to give it time to process a new barcode
9595 self ._start_msg_timer ()
96- elif self ._has_msg_timer_timeout () and isinstance (scanner_msg , NoNewBarcodeMessage ):
97- self ._ui .displayScanCompleteMessage ()
96+ elif self ._has_msg_timer_timeout () and isinstance (scanner_msg , NoNewPuckBarcodeMessage ):
97+ self ._ui .displayPuckScanCompleteMessage ()
98+ self ._ui .scanCompleted ()
9899 elif isinstance (scanner_msg , ScanErrorMessage ):
99100 self ._ui .displayScanErrorMessage (scanner_msg )
100101 self ._reset_msg_timer ()
102+ self ._ui .resetCountdown ()
101103 else :
102104 self ._reset_msg_timer ()
103105
@@ -137,6 +139,7 @@ def _read_result_queue(self):
137139 self ._read_top_scan ()
138140
139141 def _read_side_scan (self ):
142+ self ._scan_completed_message_flag = False
140143 if self ._result_queue .empty ():
141144 return
142145
@@ -156,14 +159,21 @@ def _read_side_scan(self):
156159 self ._restart_live_capture_from_top ()
157160
158161 def _read_top_scan (self ):
159- if self ._result_queue .empty ():
160- if self ._camera_switch .is_top_scan_timeout ():
162+ if self ._camera_switch .is_top_scan_timeout ():
163+ log = logging .getLogger ("." .join ([__name__ ]))
164+ extra = ({"timeout_value" : 1 })
165+ log = logging .LoggerAdapter (log , extra )
166+ log .info ("scan timeout" , extra )
167+ if self ._scan_completed_message_flag :
168+ self ._ui .displayScanCompleteMessage ()
169+ self ._ui .scanCompleted ()
170+ else :
161171 self ._ui .displayScanTimeoutMessage ()
162- log = logging . getLogger ( "." . join ([ __name__ ]) )
163- extra = ({ "timeout_value" : 1 } )
164- log = logging . LoggerAdapter ( log , extra )
165- log . info ( "scan timeout" , extra )
166- self ._restart_live_capture_from_side ()
172+ self . _ui . resetCountdown ( )
173+ self . _restart_live_capture_from_side ( )
174+ return
175+
176+ if self ._result_queue . empty ():
167177 return
168178
169179 # Get the result
@@ -173,6 +183,7 @@ def _read_top_scan(self):
173183 self ._ui .addRecordFrame (self ._latest_holder_barcode , plate , self ._latest_holder_image , pins_image )
174184
175185 if not plate .is_full_valid ():
186+ self ._scan_completed_message_flag = True
176187 return
177188
178189 # Barcodes successfully read
@@ -181,4 +192,7 @@ def _read_top_scan(self):
181192 extra = ({"scan_time" : self ._camera_switch .get_scan_time (), "timeout_value" : 0 })
182193 log = logging .LoggerAdapter (log , extra )
183194 log .info ("Scan Completed" , extra )
195+ self ._ui .displayScanCompleteMessage ()
196+ self ._ui .scanCompleted ()
197+ self ._scan_completed_message_flag = True
184198 self ._restart_live_capture_from_side ()
0 commit comments