This commit is contained in:
2025-09-04 09:01:34 +02:00
parent 5e817e7e9b
commit cad3bc7ae8

View File

@@ -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