fix: _update_state() does not raise an exception if stopped

This commit is contained in:
guijar_m 2024-07-08 17:40:49 +02:00 committed by guijar_m
parent b5918c424d
commit 207b9b571c
4 changed files with 8 additions and 23 deletions

View File

@ -9,7 +9,6 @@ from ophyd_devices.interfaces.base_classes.psi_detector_base import (
PSIDetectorBase,
)
from ophyd_devices.sim.sim_data import SimulatedDataCamera
from ophyd_devices.sim.sim_exception import DeviceStop
from ophyd_devices.sim.sim_signals import ReadOnlySignal, SetableSignal
from ophyd_devices.sim.sim_utils import H5Writer
@ -32,11 +31,9 @@ class SimCameraSetup(CustomDetectorMixin):
data = self.parent.image.get()
self.parent._run_subs(sub_type=self.parent.SUB_MONITOR, value=data)
if self.parent.stopped:
raise DeviceStop
break
if self.parent.write_to_disk.get():
self.parent.h5_writer.receive_data(data)
except DeviceStop:
pass
finally:
self.parent.stopped = False

View File

@ -1,2 +0,0 @@
class DeviceStop(Exception):
pass

View File

@ -9,7 +9,6 @@ from ophyd.utils import LimitError
from typeguard import typechecked
from ophyd_devices.sim.sim_data import SimulatedPositioner
from ophyd_devices.sim.sim_exception import DeviceStop
from ophyd_devices.sim.sim_signals import ReadOnlySignal, SetableSignal
from ophyd_devices.sim.sim_test_devices import DummyController
from ophyd_devices.sim.sim_utils import LinearTrajectory, stop_trajectory
@ -143,8 +142,6 @@ class SimPositioner(Device, PositionerBase):
def _update_state(self, val):
"""Update the state of the simulated device."""
if self._stopped:
raise DeviceStop
old_readback = self._get_sim_state(self.readback.name)
self._set_sim_state(self.readback.name, val)
@ -160,22 +157,19 @@ class SimPositioner(Device, PositionerBase):
"""Move the simulated device and finish the motion."""
success = True
target = stop_pos + self.tolerance.get() * np.random.uniform(-1, 1)
updates = np.ceil(np.abs(target - start_pos) / self.velocity.get() * self.update_frequency)
try:
target = stop_pos + self.tolerance.get() * np.random.uniform(-1, 1)
updates = np.ceil(
np.abs(target - start_pos) / self.velocity.get() * self.update_frequency
)
for ii in np.linspace(start_pos, target, int(updates)):
ttime.sleep(1 / self.update_frequency)
self._update_state(ii)
if self._stopped:
success = False
break
else:
self._update_state(target)
except DeviceStop:
success = False
finally:
self._done_moving(success=success)
self._set_sim_state(self.motor_is_moving.name, 0)
@ -238,6 +232,7 @@ class SimLinearTrajectoryPositioner(SimPositioner):
ttime.sleep(1 / self.update_frequency)
self._update_state(traj.position())
if self._stopped:
success = False
break
if self._stopped:
# simulate deceleration
@ -246,8 +241,6 @@ class SimLinearTrajectoryPositioner(SimPositioner):
ttime.sleep(1 / self.update_frequency)
self._update_state(traj.position())
self._update_state(traj.position())
except DeviceStop:
success = False
finally:
self._set_sim_state(self.motor_is_moving.name, 0)
self._done_moving(success=success)

View File

@ -7,7 +7,6 @@ from ophyd import Component as Cpt
from ophyd import Device, DeviceStatus, Kind
from ophyd_devices.sim.sim_data import SimulatedDataWaveform
from ophyd_devices.sim.sim_exception import DeviceStop
from ophyd_devices.sim.sim_signals import ReadOnlySignal, SetableSignal
from ophyd_devices.utils.bec_scaninfo_mixin import BecScaninfoMixin
@ -95,9 +94,7 @@ class SimWaveform(Device):
for _ in range(self.burst.get()):
self._run_subs(sub_type=self.SUB_MONITOR, value=self.waveform.get())
if self._stopped:
raise DeviceStop
except DeviceStop:
pass
break
finally:
self._stopped = False
self._done_acquiring()