Files
dev/script/test/test_multipass.py
2018-11-23 08:42:01 +01:00

56 lines
2.0 KiB
Python

def set_energy(v):
motor.move(v)
energy_setpoint = motor
energy = motor.getReadback()
set_device_alias(energy, "energy")
START, STOP, STEP = 0, 40, 2
ENERGIES = [0.0, 0.5, 0.25]
sensors = (sin,out, energy)
#def before_pass(pass_num):
# set_energy(ENERGIES[pass_num-1])
#ret= lscan(inp, sensors, START, STOP, STEP, 0.2, passes = len(ENERGIES), before_pass = before_pass, latency = 0.5)
#positions = frange(START, STOP, STEP , True)
#vector = [[pos, en] for en in ENERGIES for pos in positions]
#ret = vscan((inp,energy_setpoint), sensors, vector, line = True, latency = 0.5)
"""
plots = plot([None]*len(sensors), name = [d.name for d in sensors])
for p in plots: p.clear()
def AfterReadout(record, scan):
if record.setpoints[1] == scan.getStart()[1]:
for p in plots: p.addSeries(LinePlotSeries(str(record.positions[0])))
for i in range(len(plots)):
plots[i].getSeries(plots[i].numberOfSeries-1).appendData(record.positions[1], record.values[i])
class EnergyIndex("Writable):
def write(self, value):
if not hasattr(self, 'setpoint') or self.setpoint != value:
self.setpoint = value
set_energy(ENERGIES[int(value)])
positions = frange(START, STOP, STEP , True)
ret = ascan([EnergyIndex(), inp], sensors, (0,START), (len(ENERGIES)-1,STOP), (1.0,STEP), latency = 0.1, after_read=AfterReadout, plot_disabled=True)
"""
plots = plot([None]*len(sensors), name = [d.name for d in sensors])
for p in plots:
p.clear()
p.legendVisible = True
def after_readout(record, scan):
for i in range(len(plots)):
plots[i].getSeries(plots[i].numberOfSeries-1).appendData(record.positions[0], record.values[i])
def before_pass(pass_num):
en = ENERGIES[pass_num-1]
set_energy(en)
for p in plots: p.addSeries(LinePlotSeries(str(en)))
ret= lscan(inp, sensors, START, STOP, STEP, latency = 0.2, passes = len(ENERGIES), before_pass = before_pass, after_read=after_readout, plot_disabled=True)