Files
dev/script/tutorial/41_ManualScan.js
2018-04-17 12:05:48 +02:00

42 lines
1.6 KiB
JavaScript
Executable File

///////////////////////////////////////////////////////////////////////////////////////////////////
// Manual scan: Manually setting positioners and reading back sensors, but still using
// the standard data handling and plotting of built-in scans.
///////////////////////////////////////////////////////////////////////////////////////////////////
var MOTOR_RANGE = [0.0, 8.0]
var OUTPUT_SETPOINTS = [1.0, 2.0, 3.0]
var FIXED_X = true
writables_names = to_array([m1.getName(), ao1.getName()], 's')
readable_names = to_array([ai1.getName(), ai2.getName()], 's')
start = to_array( [ FIXED_X ? MOTOR_RANGE[0] : -1, OUTPUT_SETPOINTS[0]] , 'd')
stop =to_array([ FIXED_X ? MOTOR_RANGE[1] : -1, OUTPUT_SETPOINTS[OUTPUT_SETPOINTS.length-1]] , 'd')
steps = to_array([Math.round(MOTOR_RANGE[1]-MOTOR_RANGE[0]), OUTPUT_SETPOINTS.length-1] , 'i')
print (to_array(writables_names))
print (to_array(readable_names))
print (to_array(start))
print (to_array(stop))
print (to_array(steps))
scan = new ManualScan(writables_names, readable_names, start, stop, steps, false)
//This option is to plot the foe each output value one 1D series, instead of all in a matrix plot
set_preference(Preference.PLOT_TYPES, {"ai1":1, "ai2":1})
scan.start()
m1.setSpeed(10.0)
for (var setpoint1 = MOTOR_RANGE[0]; setpoint1 <=MOTOR_RANGE[1]; setpoint1+=1.0){
m1.move(setpoint1)
for (var setpoint2 in OUTPUT_SETPOINTS){
ao1.write(setpoint2)
scan.append (to_array([setpoint1, setpoint2], 'd'), to_array([m1.read(), ao1.read()], 'd'), to_array([ai1.read(), ai2.read()], 'd'))
}
}
scan.end()