diff --git a/debye_bec/devices/pilatus/pilatus.py b/debye_bec/devices/pilatus/pilatus.py index 27a36f9..1695a80 100644 --- a/debye_bec/devices/pilatus/pilatus.py +++ b/debye_bec/devices/pilatus/pilatus.py @@ -22,7 +22,7 @@ if TYPE_CHECKING: # pragma: no cover from bec_lib.messages import ScanStatusMessage from bec_server.device_server.device_server import DeviceManagerDS -PILATUS_READOUT_TIME = 0.3 # in s +PILATUS_READOUT_TIME = 0.1 # in s PILATUS_ACQUIRE_TIME = ( 999999 # This time is the timeout of the detector in operation mode, so it needs to be large. ) @@ -282,24 +282,24 @@ if __name__ == "__main__": # pilatus.wait_for_connection(all_signals=True, timeout=20) logger.info(f"Connecting to pilatus...") pilatus.on_connected() - - pilatus.scan_info.msg.num_points = 10 - pilatus.scan_info.msg.scan_parameters["exposure_time"] = 1.0 - pilatus.scan_info.msg.scan_parameters["frames_per_trigger"] = 1 - pilatus.scan_info.msg.info["file_components"] = ( - "/sls/x01da/data/p22481/raw/data/S00000-00999/S00001/S00001", - "h5", - ) - pilatus.on_stage() - logger.info(f"Stage done") - pilatus.on_pre_scan().wait(timeout=5) - logger.info(f"Pre-scan done") - for ii in range(pilatus.scan_info.msg.num_points): - if ii == 0: - time.sleep(1) - logger.info(f"Triggering image {ii+1}/{pilatus.scan_info.msg.num_points}") - pilatus.on_trigger().wait() - pilatus.on_complete().wait(timeout=5) - logger.info(f"Complete done") - pilatus.on_unstage() - logger.info(f"Unstage done") + for exp_time, scan_number, n_pnts in zip([0.5, 1.0, 2.0], [1, 2, 3], [30, 20, 10]): + pilatus.scan_info.msg.num_points = n_pnts + pilatus.scan_info.msg.scan_parameters["exposure_time"] = exp_time + pilatus.scan_info.msg.scan_parameters["frames_per_trigger"] = 1 + pilatus.scan_info.msg.info["file_components"] = ( + f"/sls/x01da/data/p22481/raw/data/S00000-00999/S{scan_number:05d}/S{scan_number:05d}", + "h5", + ) + pilatus.on_stage() + logger.info(f"Stage done") + pilatus.on_pre_scan().wait(timeout=5) + logger.info(f"Pre-scan done") + for ii in range(pilatus.scan_info.msg.num_points): + if ii == 0: + time.sleep(1) + logger.info(f"Triggering image {ii+1}/{pilatus.scan_info.msg.num_points}") + pilatus.on_trigger().wait() + pilatus.on_complete().wait(timeout=5) + logger.info(f"Complete done") + pilatus.on_unstage() + logger.info(f"Unstage done")