daq: changes to handle mount failures and temp changes for automation tests
This commit is contained in:
+36
-34
@@ -440,10 +440,16 @@ class AareDAQ:
|
||||
self.__aare.sample_unmounted(self.__cfg.current_sample)
|
||||
self.__cfg.current_sample = None
|
||||
else:
|
||||
value = self.__devs.tell.mount(address=target.tell_address(), force=True, auto_unmount=True, read_dm=False,
|
||||
wait=True, timeout=360.0)
|
||||
logger.info(f"Mount result: {value}")
|
||||
self.__cfg.current_sample = target
|
||||
try:
|
||||
value = self.__devs.tell.mount(address=target.tell_address(), force=True, auto_unmount=True, read_dm=False,
|
||||
wait=True, timeout=360.0)
|
||||
logger.info(f"Mount result: {value}")
|
||||
self.__cfg.current_sample = target
|
||||
except Exception as e:
|
||||
logger.error(f"Mount failed: {e}")
|
||||
if self.__cfg.current_sample is not None and self.__cfg.current_sample.db_id is not None:
|
||||
self.__aare.sample_failed(self.__cfg.current_sample, failed_comment=f"Mount failed: {e}")
|
||||
raise MountingFailed(f"Mount failed: {e}")
|
||||
#self.__mount_failure_handler(value)
|
||||
|
||||
def recovery_unmount_sample(self) -> None:
|
||||
@@ -769,14 +775,15 @@ class AareDAQ:
|
||||
logger.info(f"raster status {status}")
|
||||
logger.info(f'raster grid request: {request}')
|
||||
total_time = request.exp_time_s*request.n_x*request.n_y
|
||||
|
||||
result = None
|
||||
if not self.__cfg.simulated_detector:
|
||||
try:
|
||||
logger.info('initialise detector')
|
||||
self.__jfjoch.measure_raster(request, status)
|
||||
logger.info('detector initialised')
|
||||
except JFJochCommunicationError as e:
|
||||
logger.warning(f"Failed to communicate with jfjoch: {e}")
|
||||
pass
|
||||
# try:
|
||||
# logger.info('initialise detector')
|
||||
# self.__jfjoch.measure_raster(request, status)
|
||||
# logger.info('detector initialised')
|
||||
# except JFJochCommunicationError as e:
|
||||
# logger.warning(f"Failed to communicate with jfjoch: {e}")
|
||||
|
||||
else:
|
||||
logger.info("Simulated detector mode enabled; returning fake zero raster result.")
|
||||
@@ -793,17 +800,17 @@ class AareDAQ:
|
||||
|
||||
self.__devs.aerotech_pos = self.__cfg.abr_meas_pos
|
||||
|
||||
try:
|
||||
result = self.__jfjoch.wait_till_done(60)
|
||||
except JFJochCommunicationError as e:
|
||||
logger.warning(f"Failed to communicate with jfjoch: {e}")
|
||||
return self._build_fake_raster_result(request)
|
||||
# try:
|
||||
# result = self.__jfjoch.wait_till_done(60)
|
||||
# except JFJochCommunicationError as e:
|
||||
# logger.warning(f"Failed to communicate with jfjoch: {e}")
|
||||
# return self._build_fake_raster_result(request)
|
||||
|
||||
if result is None:
|
||||
logger.warning("JFJoch returned no ScanResult; using fake result for raster scan.")
|
||||
return self._build_fake_raster_result(request)
|
||||
return self._build_fake_raster_result(request)
|
||||
|
||||
return CompletedRasterGridElem(request=copy.deepcopy(request), result=result, centre_of_mass=None)
|
||||
#return CompletedRasterGridElem(request=copy.deepcopy(request), result=result, centre_of_mass=None)
|
||||
|
||||
except JFJochCommunicationError:
|
||||
raise
|
||||
@@ -856,8 +863,8 @@ class AareDAQ:
|
||||
|
||||
if self.__cfg.simulated_detector:
|
||||
logger.info("Simulated detector mode enabled; skipping JFJoch start.")
|
||||
else:
|
||||
self.__jfjoch.measure_rotation(request, status, self.__cfg.xrf)
|
||||
# else:
|
||||
# self.__jfjoch.measure_rotation(request, status, self.__cfg.xrf)
|
||||
|
||||
if request.screening:
|
||||
self.__devs.aerotech.screening_scan(
|
||||
@@ -893,11 +900,11 @@ class AareDAQ:
|
||||
|
||||
if self.__cfg.simulated_detector:
|
||||
logger.warning("Detector in simulation mode, returning fake zero rotation result.")
|
||||
result = self._build_fake_rotation_result(request)
|
||||
result = self._build_fake_rotation_result(request)
|
||||
|
||||
else:
|
||||
# Let JFJochCommunicationError propagate
|
||||
result = self.__jfjoch.wait_till_done(60)
|
||||
# else:
|
||||
# # Let JFJochCommunicationError propagate
|
||||
# result = self.__jfjoch.wait_till_done(60)
|
||||
|
||||
# if self.sample is not None and self.sample.db_id is not None:
|
||||
# self.save_screenshot_db(self.sample.db_id, "after_dc")
|
||||
@@ -1038,14 +1045,14 @@ class AareDAQ:
|
||||
m = self.__mlbox.predict(curr_image, preferred_class=(3,0))
|
||||
if m is None:
|
||||
if filename is not None:
|
||||
cv2.imwrite(f"{filename}_no_detection.jpg", curr_image)
|
||||
#cv2.imwrite(f"{filename}_no_detection.jpg", curr_image)
|
||||
self.__aare.upload_image(sample_id, f"{filename}_no_detection", curr_image)
|
||||
return None
|
||||
x1, y1, x2, y2 = m.box.top_x, m.box.top_y, m.box.bottom_x, m.box.bottom_y
|
||||
|
||||
if filename is not None:
|
||||
cv2.rectangle(curr_image, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
|
||||
cv2.imwrite(f"{filename}.jpg", curr_image)
|
||||
#cv2.imwrite(f"{filename}.jpg", curr_image)
|
||||
self.__aare.upload_image(sample_id, filename, curr_image)
|
||||
|
||||
geom = self.sample_geometry
|
||||
@@ -1479,7 +1486,7 @@ class AareDAQ:
|
||||
def save_screenshot(self, filename: str):
|
||||
#time.sleep(0.2) # Wait 200 ms to ensure camera image is stable
|
||||
bgr_image = cv2.cvtColor(self.camera_image, cv2.COLOR_RGB2BGR)
|
||||
cv2.imwrite(f"{filename}.jpg", bgr_image)
|
||||
#cv2.imwrite(f"{filename}.jpg", bgr_image)
|
||||
|
||||
def save_screenshot_db(self, sample_id: int, filename: str):
|
||||
"""
|
||||
@@ -1677,13 +1684,8 @@ class AareDAQ:
|
||||
params, source = self.get_collection_params(prefer_smart=False)
|
||||
logger.info(f"Using {source} for data collection: {params}")
|
||||
|
||||
self.__cfg.zoom_mode = ZoomModeEnum.User
|
||||
self.__devs.samcam_settings = self.__cfg.zoom_settings.get_camera_settings(self.zoom)
|
||||
self.__devs.dtz = params.dtz
|
||||
if self.omega + 180 < 720:
|
||||
start_omega = self.omega
|
||||
else:
|
||||
start_omega = params.start_omega_deg
|
||||
start_omega = self.omega
|
||||
self.__rotation( RotationScanRequest(start_omega_deg=start_omega,
|
||||
dtz=params.dtz,
|
||||
file_prefix="data/" + sample_prefix + f"_{hex_string}",
|
||||
@@ -1708,7 +1710,7 @@ class AareDAQ:
|
||||
logger.debug(f"error is instance AXCFailed")
|
||||
self.__aare.axc_failed(sample)
|
||||
else:
|
||||
self.__aare.sample_failed(sample)
|
||||
self.__aare.sample_failed(sample, f"Error in automation: {e}")
|
||||
self.__cfg.state_busy = False
|
||||
end = time.perf_counter()
|
||||
raise e
|
||||
|
||||
Reference in New Issue
Block a user