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,
|
PSIDetectorBase,
|
||||||
)
|
)
|
||||||
from ophyd_devices.sim.sim_data import SimulatedDataCamera
|
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_signals import ReadOnlySignal, SetableSignal
|
||||||
from ophyd_devices.sim.sim_utils import H5Writer
|
from ophyd_devices.sim.sim_utils import H5Writer
|
||||||
|
|
||||||
@ -32,11 +31,9 @@ class SimCameraSetup(CustomDetectorMixin):
|
|||||||
data = self.parent.image.get()
|
data = self.parent.image.get()
|
||||||
self.parent._run_subs(sub_type=self.parent.SUB_MONITOR, value=data)
|
self.parent._run_subs(sub_type=self.parent.SUB_MONITOR, value=data)
|
||||||
if self.parent.stopped:
|
if self.parent.stopped:
|
||||||
raise DeviceStop
|
break
|
||||||
if self.parent.write_to_disk.get():
|
if self.parent.write_to_disk.get():
|
||||||
self.parent.h5_writer.receive_data(data)
|
self.parent.h5_writer.receive_data(data)
|
||||||
except DeviceStop:
|
|
||||||
pass
|
|
||||||
finally:
|
finally:
|
||||||
self.parent.stopped = False
|
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 typeguard import typechecked
|
||||||
|
|
||||||
from ophyd_devices.sim.sim_data import SimulatedPositioner
|
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_signals import ReadOnlySignal, SetableSignal
|
||||||
from ophyd_devices.sim.sim_test_devices import DummyController
|
from ophyd_devices.sim.sim_test_devices import DummyController
|
||||||
from ophyd_devices.sim.sim_utils import LinearTrajectory, stop_trajectory
|
from ophyd_devices.sim.sim_utils import LinearTrajectory, stop_trajectory
|
||||||
@ -143,8 +142,6 @@ class SimPositioner(Device, PositionerBase):
|
|||||||
|
|
||||||
def _update_state(self, val):
|
def _update_state(self, val):
|
||||||
"""Update the state of the simulated device."""
|
"""Update the state of the simulated device."""
|
||||||
if self._stopped:
|
|
||||||
raise DeviceStop
|
|
||||||
old_readback = self._get_sim_state(self.readback.name)
|
old_readback = self._get_sim_state(self.readback.name)
|
||||||
self._set_sim_state(self.readback.name, val)
|
self._set_sim_state(self.readback.name, val)
|
||||||
|
|
||||||
@ -160,22 +157,19 @@ class SimPositioner(Device, PositionerBase):
|
|||||||
"""Move the simulated device and finish the motion."""
|
"""Move the simulated device and finish the motion."""
|
||||||
success = True
|
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:
|
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)):
|
for ii in np.linspace(start_pos, target, int(updates)):
|
||||||
ttime.sleep(1 / self.update_frequency)
|
ttime.sleep(1 / self.update_frequency)
|
||||||
self._update_state(ii)
|
self._update_state(ii)
|
||||||
if self._stopped:
|
if self._stopped:
|
||||||
|
success = False
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
self._update_state(target)
|
self._update_state(target)
|
||||||
except DeviceStop:
|
|
||||||
success = False
|
|
||||||
finally:
|
finally:
|
||||||
self._done_moving(success=success)
|
self._done_moving(success=success)
|
||||||
self._set_sim_state(self.motor_is_moving.name, 0)
|
self._set_sim_state(self.motor_is_moving.name, 0)
|
||||||
@ -238,6 +232,7 @@ class SimLinearTrajectoryPositioner(SimPositioner):
|
|||||||
ttime.sleep(1 / self.update_frequency)
|
ttime.sleep(1 / self.update_frequency)
|
||||||
self._update_state(traj.position())
|
self._update_state(traj.position())
|
||||||
if self._stopped:
|
if self._stopped:
|
||||||
|
success = False
|
||||||
break
|
break
|
||||||
if self._stopped:
|
if self._stopped:
|
||||||
# simulate deceleration
|
# simulate deceleration
|
||||||
@ -246,8 +241,6 @@ class SimLinearTrajectoryPositioner(SimPositioner):
|
|||||||
ttime.sleep(1 / self.update_frequency)
|
ttime.sleep(1 / self.update_frequency)
|
||||||
self._update_state(traj.position())
|
self._update_state(traj.position())
|
||||||
self._update_state(traj.position())
|
self._update_state(traj.position())
|
||||||
except DeviceStop:
|
|
||||||
success = False
|
|
||||||
finally:
|
finally:
|
||||||
self._set_sim_state(self.motor_is_moving.name, 0)
|
self._set_sim_state(self.motor_is_moving.name, 0)
|
||||||
self._done_moving(success=success)
|
self._done_moving(success=success)
|
||||||
|
@ -7,7 +7,6 @@ from ophyd import Component as Cpt
|
|||||||
from ophyd import Device, DeviceStatus, Kind
|
from ophyd import Device, DeviceStatus, Kind
|
||||||
|
|
||||||
from ophyd_devices.sim.sim_data import SimulatedDataWaveform
|
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.sim.sim_signals import ReadOnlySignal, SetableSignal
|
||||||
from ophyd_devices.utils.bec_scaninfo_mixin import BecScaninfoMixin
|
from ophyd_devices.utils.bec_scaninfo_mixin import BecScaninfoMixin
|
||||||
|
|
||||||
@ -95,9 +94,7 @@ class SimWaveform(Device):
|
|||||||
for _ in range(self.burst.get()):
|
for _ in range(self.burst.get()):
|
||||||
self._run_subs(sub_type=self.SUB_MONITOR, value=self.waveform.get())
|
self._run_subs(sub_type=self.SUB_MONITOR, value=self.waveform.get())
|
||||||
if self._stopped:
|
if self._stopped:
|
||||||
raise DeviceStop
|
break
|
||||||
except DeviceStop:
|
|
||||||
pass
|
|
||||||
finally:
|
finally:
|
||||||
self._stopped = False
|
self._stopped = False
|
||||||
self._done_acquiring()
|
self._done_acquiring()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user