improvements for flyer sim
This commit is contained in:
parent
49106b0539
commit
e6ce939eef
@ -11,6 +11,7 @@ from ophyd.utils import LimitError, ReadOnlyError
|
|||||||
|
|
||||||
logger = bec_logger.logger
|
logger = bec_logger.logger
|
||||||
|
|
||||||
|
|
||||||
class DeviceStop(Exception):
|
class DeviceStop(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@ -253,21 +254,31 @@ class SynFlyer(Device, PositionerBase):
|
|||||||
|
|
||||||
super().__init__(name=name, parent=parent, labels=labels, kind=kind, **kwargs)
|
super().__init__(name=name, parent=parent, labels=labels, kind=kind, **kwargs)
|
||||||
|
|
||||||
def kickoff(self, metadata, num_pos):
|
def kickoff(self, metadata, num_pos, positions, exp_time: float = 0):
|
||||||
|
positions = np.asarray(positions)
|
||||||
|
|
||||||
def produce_data(device, metadata):
|
def produce_data(device, metadata):
|
||||||
|
buffer_time = 1
|
||||||
|
elapsed_time = 0
|
||||||
|
bundle = BECMessage.BundleMessage()
|
||||||
for ii in range(num_pos):
|
for ii in range(num_pos):
|
||||||
device.device_manager.producer.send(
|
bundle.append(
|
||||||
MessageEndpoints.device_read(device.name),
|
|
||||||
BECMessage.DeviceMessage(
|
BECMessage.DeviceMessage(
|
||||||
signals={
|
signals={
|
||||||
"flyer_samx": {"value": ii * 1.22, "timestamp": 0},
|
"flyer_samx": {"value": positions[ii, 0], "timestamp": 0},
|
||||||
"flyer_samy": {"value": ii * 1.45, "timestamp": 0},
|
"flyer_samy": {"value": positions[ii, 1], "timestamp": 0},
|
||||||
},
|
},
|
||||||
metadata={"pointID": ii, **metadata},
|
metadata={"pointID": ii, **metadata},
|
||||||
).dumps(),
|
).dumps()
|
||||||
)
|
)
|
||||||
ttime.sleep(0.005)
|
ttime.sleep(exp_time)
|
||||||
if ii % 100 == 0:
|
elapsed_time += exp_time
|
||||||
|
if elapsed_time > buffer_time:
|
||||||
|
elapsed_time = 0
|
||||||
|
device.device_manager.producer.send(
|
||||||
|
MessageEndpoints.device_read(device.name), bundle.dumps()
|
||||||
|
)
|
||||||
|
bundle = BECMessage.BundleMessage()
|
||||||
device.device_manager.producer.set_and_publish(
|
device.device_manager.producer.set_and_publish(
|
||||||
MessageEndpoints.device_status(device.name),
|
MessageEndpoints.device_status(device.name),
|
||||||
BECMessage.DeviceStatusMessage(
|
BECMessage.DeviceStatusMessage(
|
||||||
@ -276,6 +287,9 @@ class SynFlyer(Device, PositionerBase):
|
|||||||
metadata={"pointID": ii, **metadata},
|
metadata={"pointID": ii, **metadata},
|
||||||
).dumps(),
|
).dumps(),
|
||||||
)
|
)
|
||||||
|
device.device_manager.producer.send(
|
||||||
|
MessageEndpoints.device_read(device.name), bundle.dumps()
|
||||||
|
)
|
||||||
device.device_manager.producer.set_and_publish(
|
device.device_manager.producer.set_and_publish(
|
||||||
MessageEndpoints.device_status(device.name),
|
MessageEndpoints.device_status(device.name),
|
||||||
BECMessage.DeviceStatusMessage(
|
BECMessage.DeviceStatusMessage(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user