diff --git a/common/src/aaredaqlib/models.py b/common/src/aaredaqlib/models.py index af771831..feb9fe10 100644 --- a/common/src/aaredaqlib/models.py +++ b/common/src/aaredaqlib/models.py @@ -770,4 +770,11 @@ class SimpleScanParameters(BaseModel): beam_size_y_um: float | None = None dose_rate_MGy_s: float | None = None d_vis: float | None = None - d_tar: float | None = None \ No newline at end of file + d_tar: float | None = None + +class ScanResultPayloadModel(BaseModel): + result: ScanResult + beam_mark_pxl: tuple[float, float] + beam_size_mm: Annotated[Coordinate, AfterValidator(positive_coords)] + attach_image: bool = True + sample_id: int \ No newline at end of file diff --git a/daq/src/aaredaq/daq.py b/daq/src/aaredaq/daq.py index faa9e33a..df20990d 100644 --- a/daq/src/aaredaq/daq.py +++ b/daq/src/aaredaq/daq.py @@ -692,6 +692,8 @@ class AareDAQ: if request.start is not None: self.__devs.smargon.target = request.start + omega_start = self.omega + self.__devs.transmission.wait() if request.start is not None: self.__devs.smargon.wait() @@ -732,8 +734,10 @@ class AareDAQ: self.__devs.aerotech.wait_scan_done(total_time + 60) self.__devs.aerotech.reset() + self.__devs.aerotech.move(omega_start, wait=False, speed=180.0, direct=True) result = self.__jfjoch.wait_till_done(60) self.__aare.sample_collected(self.sample) + self.__devs.aerotech.move(omega_start, wait=True, speed=180.0, direct=True) if self.sample is not None and self.sample.db_id is not None: self.save_screenshot_db(self.sample.db_id, "after_dc") diff --git a/gui/src/aaregui/scan_logic/raster_grid_manager.py b/gui/src/aaregui/scan_logic/raster_grid_manager.py index 0f61ef03..73271c63 100644 --- a/gui/src/aaregui/scan_logic/raster_grid_manager.py +++ b/gui/src/aaregui/scan_logic/raster_grid_manager.py @@ -244,8 +244,8 @@ class RasterGridManager(QObject): self.__loaded_image_prefix = grid.result.file_prefix self.__loaded_image_index = grid.result.images[cell].number print(f"Load {grid.result.file_prefix} {grid.result.images[cell].number}") - self.image_selected.emit(grid.result.file_prefix, grid.result.images[cell].number) - #self.image_selected.emit("http://sls-gpu-001:8080", grid.result.images[cell].number) + #self.image_selected.emit(grid.result.file_prefix, grid.result.images[cell].number) + self.image_selected.emit("http://sls-gpu-001:8080", grid.result.images[cell].number) def is_part_of_active_grid(self, point: QPointF) -> bool: if not self._is_grid_visible(self.__active_grid): diff --git a/gui/src/aaregui/scan_logic/rotation_scan_manager.py b/gui/src/aaregui/scan_logic/rotation_scan_manager.py index 9cba6262..2b052bf8 100644 --- a/gui/src/aaregui/scan_logic/rotation_scan_manager.py +++ b/gui/src/aaregui/scan_logic/rotation_scan_manager.py @@ -9,5 +9,4 @@ class RotationScanManager(QObject): @Slot(CompletedRotationScan) def scan_completed(self, r: CompletedRotationScan): if r.result.file_prefix is not None: - self.file_ready.emit(r.result.file_prefix) - + self.file_ready.emit("http://sls-gpu-001:8080") diff --git a/gui/src/aaregui/widgets/camera_image.py b/gui/src/aaregui/widgets/camera_image.py index 3234eabf..54342405 100644 --- a/gui/src/aaregui/widgets/camera_image.py +++ b/gui/src/aaregui/widgets/camera_image.py @@ -116,6 +116,12 @@ class SampleCameraImageLabel(QGraphicsView): self.left_click_hold_threshold = 200 self.right_click_hold_threshold = 200 + self.raster_timer = QTimer() + self.raster_timer.setSingleShot(True) + self.raster_timer_interval = 400 + self.raster_timer.timeout.connect(self.__on_raster_timer_timeout) + self.__pending_load_pos = None + self.__detections = [] # list of dicts from publisher self.__det_shape = None # shape from payload [h,w] so we can scale @@ -267,7 +273,11 @@ class SampleCameraImageLabel(QGraphicsView): if self.__state == SampleCameraImageState.IDLE: if event.modifiers() & Qt.KeyboardModifier.ShiftModifier: - self.load_image.emit(mouse_pos) + if not self.raster_timer.isActive(): + self.load_image.emit(mouse_pos) + self.raster_timer.start(self.raster_timer_interval) + else: + self.__pending_load_pos = mouse_pos else: txt = self.__raster_mgr.is_part_of_completed_grid(mouse_pos) if txt != "": @@ -285,6 +295,12 @@ class SampleCameraImageLabel(QGraphicsView): self._update_grid() self.update() + def __on_raster_timer_timeout(self): + if self.__pending_load_pos is not None: + self.load_image.emit(self.__pending_load_pos) + self.__pending_load_pos = None + self.raster_timer.start(self.raster_timer_interval) + def mouseReleaseEvent(self, event): if event.button() == Qt.MouseButton.LeftButton: if self.click_timer.isActive(): @@ -637,16 +653,12 @@ class SampleCameraImageLabel(QGraphicsView): mouse_global_pos = QCursor.pos() mouse_view_pos = self.mapFromGlobal(mouse_global_pos) mouse_scene_pos = self.mapToScene(mouse_view_pos) - smargon_coord = SmargonCoordinate( - sh_mm=self.__geom.picture_to_smargon( - Coordinate(x=mouse_scene_pos.x(), y=mouse_scene_pos.y()) - )) - if event.key() == Qt.Key.Key_1: - self.set_helical_start.emit(smargon_coord) - - elif event.key() == Qt.Key.Key_2: - self.set_helical_end.emit(smargon_coord) + if event.key() == Qt.Key.Key_Shift: + if self.__state == SampleCameraImageState.IDLE: + if not self.raster_timer.isActive(): + self.load_image.emit(mouse_scene_pos) + self.raster_timer.start(self.raster_timer_interval) super().keyPressEvent(event)