From df6fc16fcfb9ac21551f61e4e646b3ee91d60987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Wed, 19 Aug 2026 14:13:26 +0200 Subject: [PATCH 1/3] adding faulty instruments for tsting purpose --- pyproject.toml | 4 +-- .../daq_move_BSPiezoMirrorRunTimeError.py | 26 ++++++++++++++++ .../daq_move_BSPiezoMirrorUninitializing.py | 30 +++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py create mode 100644 src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py diff --git a/pyproject.toml b/pyproject.toml index df0ed24..1568919 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,8 +12,8 @@ package-url = 'https://github.com/PyMoDAQ/pymodaq_plugins_mockexamples' name = "pymodaq_plugins_mockexamples" description = 'Set of advanced Mock examples to test PyMoDAQ functionnalities' dependencies = [ - "pymodaq>=5.3.0", - "pymodaq_data>=5.2.5" + "pymodaq>=5.2.8", + "pymodaq_data>=5.2.8" ] authors = [ diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py new file mode 100644 index 0000000..16f135c --- /dev/null +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py @@ -0,0 +1,26 @@ +from pymodaq_plugins_mockexamples.daq_move_plugins.daq_move_BSPiezoMirror import DAQ_Move_BSPiezoMirror + +from pymodaq.control_modules.move_utility_classes import DAQ_Move_base, main # base class +from pymodaq.control_modules.move_utility_classes import comon_parameters_fun # common set of parameters for all actuators + +from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo # object used to send info back to the main thread +from easydict import EasyDict as edict # type of dict +from pymodaq_plugins_mockexamples.hardware.beam_steering import BeamSteering, BeamSteeringActuators + +from pymodaq_plugins_mockexamples import config + + +class DAQ_Move_BSPiezoMirrorRunTimeError(DAQ_Move_BSPiezoMirror): + """ + """ + + def get_actuator_value(self): + raise RuntimeError('Testing Purpose') + axis = self.settings['multiaxes', 'axis'] + pos = self.controller.get_value(axis) + pos = self.get_position_with_scaling(pos) + return pos + + +if __name__ == '__main__': + main(__file__) \ No newline at end of file diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py new file mode 100644 index 0000000..bb0abf0 --- /dev/null +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py @@ -0,0 +1,30 @@ +from pymodaq_plugins_mockexamples.daq_move_plugins.daq_move_BSPiezoMirror import DAQ_Move_BSPiezoMirror + +from pymodaq.control_modules.move_utility_classes import DAQ_Move_base, main # base class +from pymodaq.control_modules.move_utility_classes import comon_parameters_fun # common set of parameters for all actuators + +from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo # object used to send info back to the main thread +from easydict import EasyDict as edict # type of dict +from pymodaq_plugins_mockexamples.hardware.beam_steering import BeamSteering, BeamSteeringActuators + +from pymodaq_plugins_mockexamples import config + + +class DAQ_Move_BSPiezoMirrorUninitializing(DAQ_Move_BSPiezoMirror): + """ + """ + + def ini_stage(self, controller=None): + """ + + """ + self.ini_stage_init(controller, BeamSteering()) + self.controller.tau = self.settings['tau'] / 1000 + raise IOError('Testing Purpose') # simulating an error in initialization !!! + info = "" + initialized = True + return info, initialized + + +if __name__ == '__main__': + main(__file__) \ No newline at end of file From 78a767fa25f6caee0a968a0583738713a2f337c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Wed, 19 Aug 2026 15:00:07 +0200 Subject: [PATCH 2/3] removing imports --- .../daq_move_BSPiezoMirrorRunTimeError.py | 11 ++--------- .../daq_move_BSPiezoMirrorUninitializing.py | 12 +++--------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py index 16f135c..7a7b755 100644 --- a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorRunTimeError.py @@ -1,13 +1,6 @@ -from pymodaq_plugins_mockexamples.daq_move_plugins.daq_move_BSPiezoMirror import DAQ_Move_BSPiezoMirror - -from pymodaq.control_modules.move_utility_classes import DAQ_Move_base, main # base class -from pymodaq.control_modules.move_utility_classes import comon_parameters_fun # common set of parameters for all actuators +from pymodaq.control_modules.move_utility_classes import main # base class -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo # object used to send info back to the main thread -from easydict import EasyDict as edict # type of dict -from pymodaq_plugins_mockexamples.hardware.beam_steering import BeamSteering, BeamSteeringActuators - -from pymodaq_plugins_mockexamples import config +from pymodaq_plugins_mockexamples.daq_move_plugins.daq_move_BSPiezoMirror import DAQ_Move_BSPiezoMirror class DAQ_Move_BSPiezoMirrorRunTimeError(DAQ_Move_BSPiezoMirror): diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py index bb0abf0..e8294e4 100644 --- a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorUninitializing.py @@ -1,13 +1,7 @@ -from pymodaq_plugins_mockexamples.daq_move_plugins.daq_move_BSPiezoMirror import DAQ_Move_BSPiezoMirror +from pymodaq.control_modules.move_utility_classes import main # base class -from pymodaq.control_modules.move_utility_classes import DAQ_Move_base, main # base class -from pymodaq.control_modules.move_utility_classes import comon_parameters_fun # common set of parameters for all actuators - -from pymodaq.utils.daq_utils import ThreadCommand, getLineInfo # object used to send info back to the main thread -from easydict import EasyDict as edict # type of dict -from pymodaq_plugins_mockexamples.hardware.beam_steering import BeamSteering, BeamSteeringActuators - -from pymodaq_plugins_mockexamples import config +from pymodaq_plugins_mockexamples.daq_move_plugins.daq_move_BSPiezoMirror import ( + DAQ_Move_BSPiezoMirror, BeamSteering) class DAQ_Move_BSPiezoMirrorUninitializing(DAQ_Move_BSPiezoMirror): From 3ac767c670cdee1ef5acd01c9a20d407d2e7e432 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Weber?= Date: Thu, 20 Aug 2026 15:23:47 +0200 Subject: [PATCH 3/3] small corections --- .../daq_move_BSPiezoMirror.py | 6 +++- .../daq_move_BSPiezoMirrorTimeout.py | 33 +++++++++++++++++++ .../daq_move_plugins/daq_move_MockBinary.py | 2 +- .../daq_move_plugins/daq_move_MockRelative.py | 2 +- .../plugins_2D/daq_2Dviewer_BSCamera.py | 5 ++- 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorTimeout.py diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirror.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirror.py index 5fb4ae9..5d142f0 100644 --- a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirror.py +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirror.py @@ -42,7 +42,11 @@ def ini_stage(self, controller=None): """ """ - self.ini_stage_init(controller, BeamSteering()) + if self.is_master: + self.controller = BeamSteering() + else: + self.controller = controller + self.controller.tau = self.settings['tau'] / 1000 info = "" diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorTimeout.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorTimeout.py new file mode 100644 index 0000000..87ddc41 --- /dev/null +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_BSPiezoMirrorTimeout.py @@ -0,0 +1,33 @@ +from qtpy import QtCore + +from pymodaq.control_modules.move_utility_classes import main # base class + +from pymodaq_plugins_mockexamples.daq_move_plugins.daq_move_BSPiezoMirror import ( + DAQ_Move_BSPiezoMirror, BeamSteering) +from pymodaq_utils.config import GlobalConfig as Config + + +config = Config() + + + +class DAQ_Move_BSPiezoMirrorTimeout(DAQ_Move_BSPiezoMirror): + """ + """ + + def ini_stage(self, controller=None): + """ + + """ + self.ini_stage_init(controller, BeamSteering()) + self.controller.tau = self.settings['tau'] / 1000 + QtCore.QThread.msleep(2 * config('pymodaq', 'control_modules', 'control_module_ini_polling') * 1000) # simulating a very long initialization + + raise IOError('Hardware Timeout: Testing Purpose') # simulating an error in initialization !!! + info = "" + initialized = True + return info, initialized + + +if __name__ == '__main__': + main(__file__) \ No newline at end of file diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockBinary.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockBinary.py index 0437d97..05826d0 100644 --- a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockBinary.py +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockBinary.py @@ -18,7 +18,7 @@ class DAQ_Move_MockBinary(DAQ_Move_base): _epsilon = 0.01 params = comon_parameters_fun(is_multiaxes, axes_names, epsilon=_epsilon) data_actuator_type = DataActuatorType.DataActuator - ui_type = UiType.BINARY + ui_type = UiType.BINARY #for pymodaq >= 5.3.0 def ini_attributes(self): self._internal_state = 0 diff --git a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockRelative.py b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockRelative.py index 2792e30..aee6008 100644 --- a/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockRelative.py +++ b/src/pymodaq_plugins_mockexamples/daq_move_plugins/daq_move_MockRelative.py @@ -17,7 +17,7 @@ class DAQ_Move_MockRelative(DAQ_Move_base): params = comon_parameters_fun(is_multiaxes, axes_names, epsilon=_epsilon) data_actuator_type = DataActuatorType.DataActuator - ui_type = UiType.RELATIVE + ui_type = UiType.RELATIVE #for pymodaq >= 5.3.0 has_encoder = False def ini_attributes(self): diff --git a/src/pymodaq_plugins_mockexamples/daq_viewer_plugins/plugins_2D/daq_2Dviewer_BSCamera.py b/src/pymodaq_plugins_mockexamples/daq_viewer_plugins/plugins_2D/daq_2Dviewer_BSCamera.py index 11ef48a..d5545c2 100644 --- a/src/pymodaq_plugins_mockexamples/daq_viewer_plugins/plugins_2D/daq_2Dviewer_BSCamera.py +++ b/src/pymodaq_plugins_mockexamples/daq_viewer_plugins/plugins_2D/daq_2Dviewer_BSCamera.py @@ -45,7 +45,10 @@ def commit_settings(self, param: Parameter): self.controller.power_noise_fraction = param.value() def ini_detector(self, controller=None): - self.ini_detector_init(controller, BeamSteering()) + if self.is_master: + self.controller = BeamSteering() + else: + self.controller = controller self.emit_status(ThreadCommand('update_main_settings', [['wait_time'], self.settings['wait_time'], 'value']))