From 7aeee1a029aec12cd77564fc77eb0b83a4d4f603 Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Tue, 17 Jun 2025 09:05:21 +0200 Subject: [PATCH] DAQ/GUI: Fixes during pre-beamtime test --- daq/src/aaredaq/daq.py | 13 ++++++++----- gui/src/aaregui/main_window.py | 1 + gui/src/aaregui/panels/abr_tweak_panel.py | 4 ++-- gui/src/aaregui/panels/samcam_panel.py | 1 - gui/src/aaregui/widgets/camera_image.py | 22 ++++++++++++---------- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/daq/src/aaredaq/daq.py b/daq/src/aaredaq/daq.py index b966148a..34a40784 100644 --- a/daq/src/aaredaq/daq.py +++ b/daq/src/aaredaq/daq.py @@ -251,7 +251,7 @@ class AareDAQ: def __raster(self, r: RasterGridRequest) -> CompletedRasterGrid: max_time = r.exp_time_s * r.n_y * r.n_x + 60 - self.__cfg.dtz = r.dtz_mm + self.__cfg.dtz = r.dtz self.__set_state(BeamlineStateEnum.DataCollection) self.__jfjoch.measure_raster(r, self.diffraction_geometry, self.sample) self.__devs.aerotech.move(r.omega_deg, wait=True, speed=360.0) @@ -275,11 +275,12 @@ class AareDAQ: self.__cfg.state_busy = False return result except Exception as e: + self.__set_state(BeamlineStateEnum.SampleAlignment) self.__cfg.state_busy = False raise e def __rotation(self, request: RotationScanRequest): - self.__cfg.dtz = request.dtz_mm + self.__cfg.dtz = request.dtz self.__set_state(BeamlineStateEnum.DataCollection) if request.start is not None: @@ -314,18 +315,20 @@ class AareDAQ: ) time.sleep(smargon_time_step) - self.__devs.aerotech.wait_scan_done(request.total_time_sec + 60) - self.__jfjoch.wait_till_done(5) + self.__devs.aerotech.wait_scan_done(total_time + 60) + self.__jfjoch.wait_till_done(60) self.__devs.aerotech.reset() def measure_rotation(self, request: RotationScanRequest): - self.__cfg.try_set_busy(timeout=ceil(request.total_time_sec + 360)) + total_time = request.exp_time_s * request.steps + self.__cfg.try_set_busy(timeout=ceil(total_time + 360)) try: self.__rotation(request) self.__set_state(BeamlineStateEnum.SampleAlignment) self.__cfg.state_busy = False except Exception as e: + self.__set_state(BeamlineStateEnum.SampleAlignment) self.__cfg.state_busy = False raise e diff --git a/gui/src/aaregui/main_window.py b/gui/src/aaregui/main_window.py index 9ff90d35..f573bfb7 100644 --- a/gui/src/aaregui/main_window.py +++ b/gui/src/aaregui/main_window.py @@ -148,6 +148,7 @@ class MainWindow(QMainWindow): self.beamline.loopctr.find_tip.clicked.connect(self.daq.center_loop) self.camera_image.smargon.connect(self.daq.move_smargon) self.beamline.smargon_panel.smargon.connect(self.daq.move_smargon) + self.camera_image.samcam_updated.connect(self.daq.samcam_settings) self.beamline.omega_panel.set_omega.connect(self.daq.set_omega) self.camera_image.set_omega.connect(self.daq.set_omega) diff --git a/gui/src/aaregui/panels/abr_tweak_panel.py b/gui/src/aaregui/panels/abr_tweak_panel.py index 34bd1042..607a366c 100644 --- a/gui/src/aaregui/panels/abr_tweak_panel.py +++ b/gui/src/aaregui/panels/abr_tweak_panel.py @@ -11,7 +11,6 @@ from aaregui.widgets.title_label import TitleLabel class AbrTweakButtons(QWidget): abr_tweak = Signal(Coordinate) - abr_goto_meas = Signal() def __init__(self, parent=None): super().__init__(parent) @@ -77,6 +76,7 @@ class AbrTweakButtons(QWidget): class AbrTweakWidget(QWidget): abr_tweak = Signal(Coordinate) abr_save = Signal() + abr_goto_meas = Signal() def __init__(self, parent=None): super().__init__(parent) @@ -108,7 +108,7 @@ class AbrTweakWidget(QWidget): @Slot() def goto_button_pressed(self): - self.__abr_buttons.abr_goto_meas.emit() + self.abr_goto_meas.emit() @Slot(Coordinate) def abr_button_pressed(self, c: Coordinate): diff --git a/gui/src/aaregui/panels/samcam_panel.py b/gui/src/aaregui/panels/samcam_panel.py index d6789c47..f419b913 100644 --- a/gui/src/aaregui/panels/samcam_panel.py +++ b/gui/src/aaregui/panels/samcam_panel.py @@ -8,7 +8,6 @@ from aaregui.widgets.title_label import TitleLabel class SamcamPanel(QWidget): # Signals for when exposure or gain values change changed = Signal(SampleCameraSettings) - old_settings = SampleCameraSettings(gain=100, exposure=0.001) def __init__(self, parent=None): diff --git a/gui/src/aaregui/widgets/camera_image.py b/gui/src/aaregui/widgets/camera_image.py index 5e2ae737..2cace691 100644 --- a/gui/src/aaregui/widgets/camera_image.py +++ b/gui/src/aaregui/widgets/camera_image.py @@ -22,7 +22,7 @@ from PySide6.QtWidgets import ( QFrame, ) -from aaredaqlib.models import DAQStatusModel, AutofocusSettings +from aaredaqlib.models import DAQStatusModel, AutofocusSettings, SampleCameraSettings from aaregui.models.bookmark import SmargonBookmarkList from aaredaqlib.coordinate import Coordinate, SmargonCoordinate from aaredaqlib.raster_grid import RasterGridRequest @@ -49,6 +49,7 @@ class SampleCameraImageLabel(QGraphicsView): set_helical_end = Signal(SmargonCoordinate) update_beam_center = Signal(float, float) autofocus = Signal(AutofocusSettings) + samcam_updated = Signal(SampleCameraSettings) def __init__( self, @@ -61,6 +62,7 @@ class SampleCameraImageLabel(QGraphicsView): self.__raster_mgr = raster self.__state = SampleCameraImageState.IDLE + self.__sam_cam = SampleCameraSettings(exposure=0.1, gain=100.0) self.__geom = geom self.__bookmarks: SmargonBookmarkList = SmargonBookmarkList() @@ -300,6 +302,7 @@ class SampleCameraImageLabel(QGraphicsView): @Slot(DAQStatusModel) def update_daq_status(self, s: DAQStatusModel): self.__geom = s.geom + self.__sam_cam = s.bl.sample_camera def __left_single_click(self, event): match self.__state: @@ -404,17 +407,16 @@ class SampleCameraImageLabel(QGraphicsView): if not self.wheel_event_timer.isActive(): delta_y = event.angleDelta().y() - if event.modifiers() & Qt.KeyboardModifier.ControlModifier: - val = 180 + if event.modifiers() & Qt.KeyboardModifier.MetaModifier: + new_exp_time = self.__sam_cam.exposure * (1.0 + math.copysign(0.1, delta_y)) + new_settings = SampleCameraSettings(exposure=new_exp_time, gain=self.__sam_cam.gain) + self.samcam_updated.emit(new_settings) + elif event.modifiers() & Qt.KeyboardModifier.ControlModifier: + self.set_omega.emit(self.__geom.omega_deg + math.copysign(180.0, delta_y)) elif event.modifiers() & Qt.KeyboardModifier.ShiftModifier: - val = 10 + self.set_omega.emit(self.__geom.omega_deg + math.copysign(10.0, delta_y)) else: - val = 90 - - if delta_y > 0: - self.set_omega.emit(self.__geom.omega_deg + val) - else: - self.set_omega.emit(self.__geom.omega_deg - val) + self.set_omega.emit(self.__geom.omega_deg + math.copysign(90.0, delta_y)) # Start the timer to throttle further events self.wheel_event_timer.start(self.wheel_event_threshold)