Commit 78e72a0f authored by Peter Jansweijer's avatar Peter Jansweijer

wr_serial_3lamda.py now reads ddelay.out file

parent 16c19d45
...@@ -41,11 +41,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/> ...@@ -41,11 +41,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Usage: Usage:
wr_serial_3lambda.py [-o <dir>] [-m <number>] wr_serial_3lambda.py -name ddelay.out [-o <dir>] [-m <number>]
wr_serial_3lambda.py -h | --help wr_serial_3lambda.py -h | --help
Options: Options:
-h --help Show this screen. -h --help Show this screen.
-name pointer to a "ddelay.out" file to be taken as input for measurements
-sm master serial port, default: "/dev/ttyUSB2" -sm master serial port, default: "/dev/ttyUSB2"
-ss slave serial port, default: "/dev/ttyUSB1" -ss slave serial port, default: "/dev/ttyUSB1"
-t track fiber spool temperature (using Digital Multimeter and PT100), default: False -t track fiber spool temperature (using Digital Multimeter and PT100), default: False
...@@ -373,7 +374,57 @@ def meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, c ...@@ -373,7 +374,57 @@ def meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, c
#continue #continue
return (result_line) return (result_line)
############################################################################
def file_to_array(filename):
"""
Retrieve the delat delay file
filename -- source file from which to retrieve data.
returns: True, <type 'numpy.array'>
[lambda 1 itu-ch, lambda 2 itu-ch],
[lambda 1 itu-ch, lambda 2 itu-ch],
:
False
"Not a Delta Delay file"
"""
# create empty list
pairs=[]
data_file = open(filename, "r")
line = data_file.readline()
if line.strip() != "# Proposed Delta Delay measurements":
Exception("file_to_arrays: Not a Delta Delay measurements file.")
data_file.close()
return (False, alpha_spec_data)
while 1:
line = data_file.readline()
if line[:len("#")] != "#": # Skip lines that are commented out
line_lst = line.split(",")
if len(line_lst) < 3:
break
# Values of interest on one line are lambda-1[nm] and lambda-2[nm]:
# # lambda-1[nm], ITU-ch, SPEC_alpha_3wl(lambda-1), lambda-2[nm], time_err[ps]
l1_wavelength = float(line_lst[0])*1e-9
l2_wavelength = float(line_lst[3])*1e-9
l1 = itu_conv.wavelength_2_itu(l1_wavelength)
l2 = itu_conv.wavelength_2_itu(l2_wavelength)
pair = l1, l2
pairs.append(pair)
arr_pair=numpy.array(pairs)
data_file.close()
return (True, arr_pair)
############################################### ###############################################
# Main # Main
...@@ -381,11 +432,12 @@ def meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, c ...@@ -381,11 +432,12 @@ def meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, c
""" """
Usage: Usage:
wr_serial_3lambda.py [-o <dir>] [-m <number>] wr_serial_3lambda.py -name ddelay.out [-o <dir>] [-m <number>]
wr_serial_3lambda.py -h | --help wr_serial_3lambda.py -h | --help
Options: Options:
-h --help Show this screen. -h --help Show this screen.
-name pointer to a "ddelay.out" file to be taken as input for measurements
-sm master serial port, default: "/dev/ttyUSB2" -sm master serial port, default: "/dev/ttyUSB2"
-ss slave serial port, default: "/dev/ttyUSB1" -ss slave serial port, default: "/dev/ttyUSB1"
-t <IP> track fiber spool temperature (using PT100 and Digital Multimeter at IP address) -t <IP> track fiber spool temperature (using PT100 and Digital Multimeter at IP address)
...@@ -400,18 +452,27 @@ if __name__ == "__main__": ...@@ -400,18 +452,27 @@ if __name__ == "__main__":
#arguments = docopt(__doc__,version='White Rabbit controlled via serial port') #arguments = docopt(__doc__,version='White Rabbit controlled via serial port')
import argparse import argparse
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("name", help="file containing ddelay measurements to perform")
parser.add_argument("-mserial", default="/dev/ttyUSB2") parser.add_argument("-mserial", default="/dev/ttyUSB2")
parser.add_argument("-sserial", default="/dev/ttyUSB1") parser.add_argument("-sserial", default="/dev/ttyUSB1")
parser.add_argument("-t", help="track fiber spool temperature (using PT100 and Digital Multimeter at IP address)", default=None) parser.add_argument("-t", help="track fiber spool temperature (using PT100 and Digital Multimeter at IP address)", default=None)
parser.add_argument("-output_dir", default="data") parser.add_argument("-output_dir", default="data")
parser.add_argument("-measurements", default=1, type=int) parser.add_argument("-measurements", default=1, type=int)
args = parser.parse_args() args = parser.parse_args()
name = args.name
print("Used Delta Delay input file: ",name)
print("Use Master Serial port: ",args.mserial) print("Use Master Serial port: ",args.mserial)
print("Use Slave Serial port: ",args.sserial) print("Use Slave Serial port: ",args.sserial)
print("Fiber spool temperature track: ",args.t) print("Fiber spool temperature track: ",args.t)
print("Output directory: ",args.output_dir) print("Output directory: ",args.output_dir)
print("Number of measurement cycles: ", args.measurements) print("Number of measurement cycles: ", args.measurements)
if os.path.exists(name) == True and os.path.isfile(name) == True:
measure, pairs = file_to_array(name)
else:
print("Delat Delay input file not found")
sys.exit()
# add trailing slash if not present # add trailing slash if not present
output_dir = os.path.join(args.output_dir,'') output_dir = os.path.join(args.output_dir,'')
if os.path.exists(output_dir) != True: if os.path.exists(output_dir) != True:
...@@ -554,26 +615,33 @@ if __name__ == "__main__": ...@@ -554,26 +615,33 @@ if __name__ == "__main__":
wr2wrpc(ser_slave,"stat on\r","slv=>") wr2wrpc(ser_slave,"stat on\r","slv=>")
l1 = 40 for pair in pairs:
l2 = 56 # pair[0] = ITU channel for lambda 1
# pair[1] = ITU channel for lambda 2
while measurements > 0:
measurements = measurements - 1 # write file delimieter to separate the measurements in the output file
print("ITU-Lambda1 = " + str(pair[0]) + ", ITU-Lambda2 = " + str(pair[1]) + "\r")
data_file_l1_a.write(("ITU-Lambda1 = " + str(pair[0]) + ", ITU-Lambda2 = " + str(pair[1]) + "\r").encode())
data_file_l2_a.write(("ITU-Lambda1 = " + str(pair[0]) + ", ITU-Lambda2 = " + str(pair[1]) + "\r").encode())
data_file_l2_b.write(("ITU-Lambda1 = " + str(pair[0]) + ", ITU-Lambda2 = " + str(pair[1]) + "\r").encode())
data_file_l1_b.write(("ITU-Lambda1 = " + str(pair[0]) + ", ITU-Lambda2 = " + str(pair[1]) + "\r").encode())
# for each pair, repeat 3-lamda wavelength measuremens with link restart "measurement" times
meas = measurements
while meas > 0:
meas = meas - 1
result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, pair[0])
data_file_l1_a.write(result_line.encode())
timestamp = time.localtime() result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, pair[1])
data_file_l2_a.write(result_line.encode())
ch = l1
result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, ch) result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, pair[1])
data_file_l1_a.write(result_line.encode()) data_file_l2_b.write(result_line.encode())
ch = l2
result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, ch) result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, pair[0])
data_file_l2_a.write(result_line.encode()) data_file_l1_b.write(result_line.encode())
ch = l2
result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, ch)
data_file_l2_b.write(result_line.encode())
ch = l1
result_line = meas_crtt(ser_tunable, ser_master, ser_slave, master_is_switch, crtt_skip, crtt_measurement, ch)
data_file_l1_b.write(result_line.encode())
data_file_l1_a.close() data_file_l1_a.close()
data_file_l2_a.close() data_file_l2_a.close()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment