def test_local_without_defaults_no_string(testdir): from ophyd import EpicsSignal signal = EpicsSignal(f"{pv_base}.SCAN", name="signal") signal.wait_for_connection() desc = signal.describe() assert not signal.as_string assert desc["signal"]["dtype"] == "integer"
def pv_scan(detectors, pvname, start, stop, num, events=None): """ Scan over a PV as a UI test utility """ sig = EpicsSignal(pvname, name=pvname) mot = PhonyMotor(sig) config_in_scan(detectors, [mot], events) sig.wait_for_connection() return (yield from scan(detectors, sig, start, stop, num))
def trigger(self): return self.img.trigger() ph = Det("mini:ph", name="ph") edge = Det("mini:edge", name="edge") slit = Det("mini:slit", name="slit") motor_ph = EpicsSignal("mini:ph:mtr", name="motor_ph", put_complete=True) motor_edge = EpicsSignal("mini:edge:mtr", name="motor_edge", put_complete=True) motor_slit = EpicsSignal("mini:slit:mtr", name="motor_slit", put_complete=True) spot = Spot("mini:dot", name="spot") mtr_spotx = EpicsSignal("mini:dot:mtrx", name="motor_spotx", put_complete=True) mtr_spoty = EpicsSignal("mini:dot:mtry", name="motor_spoty", put_complete=True) I = EpicsSignal("mini:current", name="I") # Once https://github.com/bluesky/ophyd/pull/863 is released # this can be done more succinctly. ph.wait_for_connection() edge.wait_for_connection() slit.wait_for_connection() motor_ph.wait_for_connection() motor_edge.wait_for_connection() spot.wait_for_connection() mtr_spotx.wait_for_connection() mtr_spoty.wait_for_connection() I.wait_for_connection()
import sys from bluesky import RunEngine from bluesky.plan_stubs import mvr, read, sleep from ophyd import EpicsMotor, EpicsSignal # from bluesky.log import config_bluesky_logging print = functools.partial(print, file=sys.stderr) # Create ophyd devices pm = EpicsMotor("XF:08BMA-OP{Mono:1-Ax:Pico}Mtr", name="pm") inb = EpicsSignal("XF:08BMES-BI{PSh:1-BPM:1}V-I", name="inb") outb = EpicsSignal("XF:08BMES-BI{PSh:1-BPM:2}V-I", name="outb") pm.wait_for_connection() inb.wait_for_connection() outb.wait_for_connection() print(f"pico starting position {pm.position:.6}") inb_initial = inb.get() outb_initial = outb.get() print(f"inboard signal {inb_initial:.6}") print(f"outboard signal {outb_initial:.6}") BPMpos = (outb_initial - inb_initial) / (outb_initial + inb_initial) * 1000000 print(f"position {BPMpos:.4}") source_pos = EpicsSignal("SR:APHLA:SOFB{BUMP:C08-BMB}offset:X-I", name="source_pos") print(f"source position {source_pos.get():.6}") print(datetime.now().isoformat()) def plan(FBref):