PARALLEL=True inf = None def on_command_finished(info): if info.script == "test/slit_long.py": print "Setpoint: ", BML_FE_centerX.take() print "Readback: ", BML_FE_centerX.readback.take() print "Error: ", BML_FE_centerX.readback.take() -BML_FE_centerX.take() print "Setpoint Update: ", BML_FE_centerX.read() print "Readback Update: ", BML_FE_centerX.readback.read() print "Error Update: ", BML_FE_centerX.readback.take() -BML_FE_centerX.take() # 1 Define detector and scan parameters sensors = [Keithley_2_raw, SR_current] #, CADC2, BML_energy_RBV] Keithley_channel = Keithley_2_raw.getChannelName() Keithley_range = "2 nA" #Keithley range: "AUTO", "20 mA", "2 mA", "200 uA", "20 uA", "2 uA", "200 nA", "20 nA", "2 nA", "200 pA", "20 pA" emin = 1650.0 emax = 1750.0 esteps = 5.0 #FE_centerX = -0.75 #FE_centerY = 1.25 FE_centerX = 0.0 FE_centerY = 0.0 FE_size_x = 0.1 FE_size_y = 0.1 x_range = 4.0 y_range = 4.0 x_steps = 0.1 y_steps = 0.1 # Set detector and slit parameters for scan> range_number = range_to_number(Keithley_range) Keithley_range_cmd = Keithley_channel.replace('READOUT', 'RANGE') caput(Keithley_range_cmd, range_number) # 6 --> 200 nA BML_FE_centerX.setSpeed(2.0) BML_FE_centerY.setSpeed(2.0) x_range = x_range - FE_size_x y_range = y_range - FE_size_y xmin = FE_centerX - x_range/2 xmax = FE_centerX + x_range/2 ymin = FE_centerY - y_range/2 ymax = FE_centerY + y_range/2 xsteps = x_steps ysteps = y_steps # 3 Perform scan started = time.strftime("%H:%M:%S", time.localtime()) add_device(DummyPositioner("BML_energy_set"),True) BML_energy_set.monitored=True ascan([BML_energy_set, BML_FE_centerX, BML_FE_centerY], sensors, [emin, xmin, ymin,], [emax, xmax, ymax], [esteps, xsteps, ysteps], latency=0.1, zigzag=False, parallel_positioning=PARALLEL) # 5 Put back to initial settings json_path = get_exec_pars().path bml_save_scan_settings_json(json_path) stopped = time.strftime("%H:%M:%S", time.localtime()) print("started: " + started) print("stopped: " + stopped) BML_FE_centerX.setSpeed(0.1) BML_FE_centerY.setSpeed(0.1)