DAQ: Add throttle down to raster scan

This commit is contained in:
appleb_m
2025-12-10 17:07:42 +01:00
parent fdd6b192ce
commit 2e7627dbcc
+22 -10
View File
@@ -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)