fix: _update_state() does not raise an exception if stopped
This commit is contained in:
parent
b5918c424d
commit
207b9b571c
@ -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
|
||||
|
||||
|
@ -1,2 +0,0 @@
|
||||
class DeviceStop(Exception):
|
||||
pass
|
@ -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)
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user