From 0098f78d36df9b1c10dede0cc17dee652636eda2 Mon Sep 17 00:00:00 2001 From: lange50 Date: Wed, 30 Apr 2025 10:14:26 -0400 Subject: [PATCH] Consolidate TeraScanType and TeraScanRate into SolstisLaser To keep logic and laser from having copied enums, I put the enum classes as a subclass in solstis laser. We still need to get ried of the redundant ocde in get_scan_type etc., and we also need to get rid of the redundant code where solsits_funcs also has the enum. --- src/qudi/gui/terascan/terascan_gui.py | 40 ------------------------ src/qudi/hardware/laser/solstis_laser.py | 29 +++++++++-------- src/qudi/logic/terascan_logic.py | 36 --------------------- 3 files changed, 16 insertions(+), 89 deletions(-) diff --git a/src/qudi/gui/terascan/terascan_gui.py b/src/qudi/gui/terascan/terascan_gui.py index db77418..ec70aff 100644 --- a/src/qudi/gui/terascan/terascan_gui.py +++ b/src/qudi/gui/terascan/terascan_gui.py @@ -13,46 +13,6 @@ from qudi.util.paths import get_artwork_dir from qudi.util.colordefs import QudiPalettePale as palette -from enum import Enum - - -# ---------------------------------------------------------------------- -# enums (kept local – same numeric values as in the logic) -# ---------------------------------------------------------------------- -class TeraScanType(Enum): - SCAN_TYPE_MEDIUM = 1 - SCAN_TYPE_FINE = 2 - SCAN_TYPE_LINE = 3 - - -class TeraScanRate(Enum): - SCAN_RATE_MEDIUM_100_GHZ = 4 - SCAN_RATE_MEDIUM_50_GHZ = 5 - SCAN_RATE_MEDIUM_20_GHZ = 6 - SCAN_RATE_MEDIUM_15_GHZ = 7 - SCAN_RATE_MEDIUM_10_GHZ = 8 - SCAN_RATE_MEDIUM_5_GHZ = 9 - SCAN_RATE_MEDIUM_2_GHZ = 10 - SCAN_RATE_MEDIUM_1_GHZ = 11 - SCAN_RATE_FINE_LINE_20_GHZ = 12 - SCAN_RATE_FINE_LINE_10_GHZ = 13 - SCAN_RATE_FINE_LINE_5_GHZ = 14 - SCAN_RATE_FINE_LINE_2_GHZ = 15 - SCAN_RATE_FINE_LINE_1_GHZ = 16 - SCAN_RATE_FINE_LINE_500_MHZ = 17 - SCAN_RATE_FINE_LINE_200_MHZ = 18 - SCAN_RATE_FINE_LINE_100_MHZ = 19 - SCAN_RATE_FINE_LINE_50_MHZ = 20 - SCAN_RATE_FINE_LINE_20_MHZ = 21 - SCAN_RATE_FINE_LINE_10_MHZ = 22 - SCAN_RATE_FINE_LINE_5_MHZ = 23 - SCAN_RATE_FINE_LINE_2_MHZ = 24 - SCAN_RATE_FINE_LINE_1_MHZ = 25 - SCAN_RATE_LINE_500_KHZ = 26 - SCAN_RATE_LINE_200_KHZ = 27 - SCAN_RATE_LINE_100_KHZ = 28 - SCAN_RATE_LINE_50_KHZ = 29 - pg.setConfigOption('useOpenGL', True) diff --git a/src/qudi/hardware/laser/solstis_laser.py b/src/qudi/hardware/laser/solstis_laser.py index 4a2e18c..980b7e7 100644 --- a/src/qudi/hardware/laser/solstis_laser.py +++ b/src/qudi/hardware/laser/solstis_laser.py @@ -15,8 +15,8 @@ You should have received a copy of the GNU Lesser General Public License along with qudi. If not, see . """ +from __future__ import annotations from typing import List - from PySide2 import QtCore import time from enum import Enum @@ -296,9 +296,11 @@ def get_scan_types(self) -> dict: return { 'Medium': TeraScanType.SCAN_TYPE_MEDIUM, 'Fine': TeraScanType.SCAN_TYPE_FINE, - 'Line': TeraScanType.SCAN_TYPE_LINE + # 'Line': TeraScanType.SCAN_TYPE_LINE } + + # TODO: This is not the right way to do this. There is copied code. @property def get_scan_rates(self) -> dict: scan_type = self._scan_type @@ -337,16 +339,16 @@ def get_scan_rates(self) -> dict: '1 MHz': TeraScanRate.SCAN_RATE_FINE_LINE_1_MHZ } - elif scan_type in [ - TeraScanType.SCAN_TYPE_LINE, - TeraScanType.SCAN_TYPE_LINE.value - ]: - return { - '500 KHz': TeraScanRate.SCAN_RATE_LINE_500_KHZ, - '200 KHz': TeraScanRate.SCAN_RATE_LINE_200_KHZ, - '100 KHz': TeraScanRate.SCAN_RATE_LINE_100_KHZ, - '50 KHz': TeraScanRate.SCAN_RATE_LINE_50_KHZ - } + # elif scan_type in [ + # TeraScanType.SCAN_TYPE_LINE, + # TeraScanType.SCAN_TYPE_LINE.value + # ]: + # return { + # '500 KHz': TeraScanRate.SCAN_RATE_LINE_500_KHZ, + # '200 KHz': TeraScanRate.SCAN_RATE_LINE_200_KHZ, + # '100 KHz': TeraScanRate.SCAN_RATE_LINE_100_KHZ, + # '50 KHz': TeraScanRate.SCAN_RATE_LINE_50_KHZ + # } self.log.warning('Unknown scan type passed to get_scan_rates') @@ -397,7 +399,8 @@ def __status_update(self): else: self.statusvar = 0 except solstis.SolstisError as e: - self.log.exception(f'Failure getting status: {e.message}') + # self.log.exception(f'Failure getting status: {e.message}') + self.log.warning(f'Failure getting status: {e.message}') self.statusvar = -1 timestamp = time.perf_counter() self.sigNewData.emit(timestamp, self.statusvar) diff --git a/src/qudi/logic/terascan_logic.py b/src/qudi/logic/terascan_logic.py index 646fe0e..d0f8161 100644 --- a/src/qudi/logic/terascan_logic.py +++ b/src/qudi/logic/terascan_logic.py @@ -16,42 +16,6 @@ from qudi.interface.daq_reader_interface import ReaderVal -from enum import Enum - -# TODO: This is a copy of the one in the logic module. We should probably move this to a common place. -class TeraScanType(Enum): - SCAN_TYPE_MEDIUM = 1 - SCAN_TYPE_FINE = 2 - SCAN_TYPE_LINE = 3 - -class TeraScanRate(Enum): - SCAN_RATE_MEDIUM_100_GHZ = 4 - SCAN_RATE_MEDIUM_50_GHZ = 5 - SCAN_RATE_MEDIUM_20_GHZ = 6 - SCAN_RATE_MEDIUM_15_GHZ = 7 - SCAN_RATE_MEDIUM_10_GHZ = 8 - SCAN_RATE_MEDIUM_5_GHZ = 9 - SCAN_RATE_MEDIUM_2_GHZ = 10 - SCAN_RATE_MEDIUM_1_GHZ = 11 - SCAN_RATE_FINE_LINE_20_GHZ = 12 - SCAN_RATE_FINE_LINE_10_GHZ = 13 - SCAN_RATE_FINE_LINE_5_GHZ = 14 - SCAN_RATE_FINE_LINE_2_GHZ = 15 - SCAN_RATE_FINE_LINE_1_GHZ = 16 - SCAN_RATE_FINE_LINE_500_MHZ = 17 - SCAN_RATE_FINE_LINE_200_MHZ = 18 - SCAN_RATE_FINE_LINE_100_MHZ = 19 - SCAN_RATE_FINE_LINE_50_MHZ = 20 - SCAN_RATE_FINE_LINE_20_MHZ = 21 - SCAN_RATE_FINE_LINE_10_MHZ = 22 - SCAN_RATE_FINE_LINE_5_MHZ = 23 - SCAN_RATE_FINE_LINE_2_MHZ = 24 - SCAN_RATE_FINE_LINE_1_MHZ = 25 - SCAN_RATE_LINE_500_KHZ = 26 - SCAN_RATE_LINE_200_KHZ = 27 - SCAN_RATE_LINE_100_KHZ = 28 - SCAN_RATE_LINE_50_KHZ = 29 - # Find a way to append valid data to the lists instead of creating new ones. class TerascanLogic(LogicBase):