From cad3bc7ae8619035dc4633de7176a48598dcffdd Mon Sep 17 00:00:00 2001 From: appel_c Date: Thu, 4 Sep 2025 09:01:34 +0200 Subject: [PATCH] w --- debye_bec/devices/pilatus/pilatus.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/debye_bec/devices/pilatus/pilatus.py b/debye_bec/devices/pilatus/pilatus.py index 910b849..8a570db 100644 --- a/debye_bec/devices/pilatus/pilatus.py +++ b/debye_bec/devices/pilatus/pilatus.py @@ -42,6 +42,13 @@ PILATUS_ACQUIRE_TIME = ( logger = bec_logger.logger +class DETECTORSTATE(int, enum.Enum): + """Pilatus Detector States from CamServer""" + + UNARMED = 0 + ARMED = 1 + + class ACQUIREMODE(int, enum.Enum): """Pilatus Acquisition Modes""" @@ -291,10 +298,12 @@ class Pilatus(PSIDeviceBase, ADBase): else: status_hdf = CompareStatus(self.hdf.capture, ACQUIREMODE.ACQUIRING.value) status_cam = CompareStatus(self.cam.acquire, ACQUIREMODE.ACQUIRING.value) - status = AndStatusWithList(device=self, status_list=[status_hdf, status_cam]) + status_cam_server = CompareStatus(self.cam.armed, DETECTORSTATE.ARMED.value) + status = AndStatusWithList( + device=self, status_list=[status_hdf, status_cam, status_cam_server] + ) self.cam.acquire.put(1) self.hdf.capture.put(1) - status.add_callback(self._on_failure_callback) # Callback on failure self.cancel_on_stop(status) return status @@ -310,7 +319,6 @@ class Pilatus(PSIDeviceBase, ADBase): status = CompareStatus(self.hdf.num_captured, img_counter + 1) logger.warning(f"Triggering took image {time.time() - start_time:.3f} seconds") self.trigger_shot.put(1) - status.add_callback(self._on_failure_callback) # Callback on failure self.cancel_on_stop(status) return status @@ -333,16 +341,16 @@ class Pilatus(PSIDeviceBase, ADBase): else: status_hdf = CompareStatus(self.hdf.capture, ACQUIREMODE.DONE.value) status_cam = CompareStatus(self.cam.acquire, ACQUIREMODE.DONE.value) - status_cam_server = + status_cam_server = CompareStatus(self.cam.armed, DETECTORSTATE.UNARMED.value) num_images = self.scan_info.msg.num_points * self.scan_info.msg.scan_parameters.get( "frames_per_trigger", 1 ) status_img_written = CompareStatus(self.hdf.num_captured, num_images) status = AndStatusWithList( - device=self, status_list=[status_hdf, status_cam, status_img_written] + device=self, + status_list=[status_hdf, status_cam, status_img_written, status_cam_server], ) status.add_callback(self._complete_callback) # Callback that writing was successful - status.add_callback(self._on_failure_callback) # Callback on failure self.cancel_on_stop(status) return status