Revert "NIDAQ Ophyd runner for X01DA"
This reverts commit b7a62ea6b1617aa221117fb247f612ff456f58a6
This commit is contained in:
parent
b7a62ea6b1
commit
0767eb51c9
@ -1,140 +0,0 @@
|
|||||||
"""
|
|
||||||
Ophyd device classes for beamline X01DA "Debye"
|
|
||||||
"""
|
|
||||||
|
|
||||||
print(f"Loading {__file__}...")
|
|
||||||
|
|
||||||
import time
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from collections import OrderedDict
|
|
||||||
|
|
||||||
from ophyd import Kind, Device, DeviceStatus, EpicsSignal, EpicsSignalRO
|
|
||||||
from ophyd.flyers import FlyerInterface
|
|
||||||
from ophyd import Component as Cpt
|
|
||||||
from ophyd.status import SubscriptionStatus
|
|
||||||
import bluesky.plan_stubs as bps
|
|
||||||
import bluesky.preprocessors as bpp
|
|
||||||
|
|
||||||
from bluesky import RunEngine
|
|
||||||
from bluesky.callbacks.best_effort import BestEffortCallback
|
|
||||||
|
|
||||||
|
|
||||||
class NIDAQ_flyer(FlyerInterface, Device):
|
|
||||||
"""
|
|
||||||
Ophyd flyer implementation for the Debye NIDAQ
|
|
||||||
"""
|
|
||||||
acquire = Cpt(EpicsSignal, "Trigger", auto_monitor=True)
|
|
||||||
nidaq_state = Cpt(EpicsSignalRO, "FSMState", auto_monitor=True)
|
|
||||||
rate_act = Cpt(EpicsSignalRO, "SamplingRateActualized", auto_monitor=True)
|
|
||||||
rate_req = Cpt(EpicsSignalRO, "SamplingRateRequested", auto_monitor=True)
|
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
self._start_time = 0
|
|
||||||
self._verified = False
|
|
||||||
|
|
||||||
|
|
||||||
def configure(self):
|
|
||||||
"""
|
|
||||||
Scan configuration logic
|
|
||||||
"""
|
|
||||||
self.acquire.put(0, use_complete=True)
|
|
||||||
|
|
||||||
self._verified = True
|
|
||||||
|
|
||||||
|
|
||||||
def kickoff(self):
|
|
||||||
"""
|
|
||||||
Start the flyer
|
|
||||||
"""
|
|
||||||
def callback(*, old_value, value, **kwargs):
|
|
||||||
return (old_value == 1 and value == 0)
|
|
||||||
|
|
||||||
self._status = SubscriptionStatus(self.acquire, callback)
|
|
||||||
|
|
||||||
print(f"{time.asctime()}: scan started ...")
|
|
||||||
|
|
||||||
self._start_time = time.time()
|
|
||||||
self.acquire.put(1)
|
|
||||||
self._status.wait()
|
|
||||||
|
|
||||||
return self._status
|
|
||||||
|
|
||||||
|
|
||||||
def complete(self):
|
|
||||||
"""
|
|
||||||
Wait for the flyer to complete
|
|
||||||
"""
|
|
||||||
def callback(value, old_value, **kwargs):
|
|
||||||
return (old_value == 3 and value == 2)
|
|
||||||
|
|
||||||
self._status = SubscriptionStatus(self.nidaq_state, callback)
|
|
||||||
self._status.wait()
|
|
||||||
|
|
||||||
return self._status
|
|
||||||
|
|
||||||
|
|
||||||
def collect(self):
|
|
||||||
"""
|
|
||||||
Retrieve data from the flyer
|
|
||||||
"""
|
|
||||||
# data = {"time": self._start_time, "data": {}, "timestamps": {}}
|
|
||||||
# for attr in ("rate_act", "rate_req"):
|
|
||||||
# obj = getattr(self, attr)
|
|
||||||
# data["data"][obj.name] = obj.get()
|
|
||||||
# data["timestamps"][obj.name] = obj.timestamp
|
|
||||||
#
|
|
||||||
# print(data)
|
|
||||||
# return data
|
|
||||||
|
|
||||||
return 0
|
|
||||||
|
|
||||||
|
|
||||||
def describe_collect(self):
|
|
||||||
"""
|
|
||||||
Schema and meta-data for collect()
|
|
||||||
"""
|
|
||||||
# desc = OrderedDict()
|
|
||||||
# for attr in ("rate_act", "rate_req"):
|
|
||||||
# desc.update(getattr(self, attr).describe())
|
|
||||||
|
|
||||||
ret = {'dtype': 'number',
|
|
||||||
'shape': [],
|
|
||||||
'source': 'SCANSERVER'}
|
|
||||||
|
|
||||||
return {self.name: ret}
|
|
||||||
|
|
||||||
|
|
||||||
def daq_flyer_RE(flyer, *, md=None):
|
|
||||||
_md = {}
|
|
||||||
_md.update(md or {})
|
|
||||||
@bpp.run_decorator(md=_md)
|
|
||||||
def single_scan(flyer):
|
|
||||||
bps.configure(flyer)
|
|
||||||
yield from bps.kickoff(flyer, wait=True)
|
|
||||||
yield from bps.complete(flyer, wait=True)
|
|
||||||
bps.collect(flyer)
|
|
||||||
|
|
||||||
return (yield from single_scan(flyer))
|
|
||||||
|
|
||||||
|
|
||||||
def daq_flyer_simple(flyer, *, md=None):
|
|
||||||
_md = {}
|
|
||||||
_md.update(md or {})
|
|
||||||
def single_scan(flyer):
|
|
||||||
flyer.configure()
|
|
||||||
flyer.kickoff()
|
|
||||||
flyer.complete()
|
|
||||||
flyer.describe_collect()
|
|
||||||
flyer.collect()
|
|
||||||
|
|
||||||
return single_scan(flyer)
|
|
||||||
|
|
||||||
|
|
||||||
flyer = NIDAQ_flyer("X01DA-PC-SCANSERVER:NIDAQ-", name="test")
|
|
||||||
|
|
||||||
RE = RunEngine()
|
|
||||||
bec = BestEffortCallback()
|
|
Loading…
x
Reference in New Issue
Block a user