X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=research%2FTCS%2Finterface.py;h=cf6380a88cc105b8e229da1b48cd7242a1f6fb0a;hb=98cc7d05631314ab16a9fac56c187ce0461df6bc;hp=3963e4431e0e42c267d91fffe38c0171b0657e88;hpb=3e0bbeaa77f2305ae77c99654c3e46474fe0a0e2;p=matches%2Fhonours.git diff --git a/research/TCS/interface.py b/research/TCS/interface.py index 3963e443..cf6380a8 100755 --- a/research/TCS/interface.py +++ b/research/TCS/interface.py @@ -31,12 +31,12 @@ calibrate = { } # TODO: Adjust aqcuisition parameters here -aquire = { "DAC_Sweep" : "1500",#"0.0 + 50.0*step", # DAC Sweep value (t is in STEPS, not seconds!) +aquire = { "DAC_Sweep" : "0.0 + 100.0*int(step/120)", # DAC Sweep value (t is in STEPS, not seconds!) "ADC_Averages" : 200, "ADC_Vi" : 5, # ADC channel to read back Vi (set by DAC) through "ADC_Is" : 4, # ADC channel to read back Is through "ADC_Ie" : 4, # ADC channel to read back Ie through - "DAC_Settle" : 2.0, # Time in seconds to wait for DAC to stabilise + "DAC_Settle" : 0.0, # Time in seconds to wait for DAC to stabilise #"response_wait" : 0.2, # Time to wait in seconds between sending data and reading back "start_date" : None } @@ -64,11 +64,21 @@ parameters = { "Heating Current" : None, "Heating Voltage" : None, "Chamber Pressure" : None, + "610B Zero" : None, + "602 Zero" : None, + "610B Scale" : None, + "602 Scale" : None, "602 0.1 Battery" : None, "602 0.03 Battery" : None, "602 0.01 Battery" : None, "602 0.003 Battery" : None, - "602 0.001 Battery" : None + "602 0.001 Battery" : None, + "ADC Battery" : None, + "ADC Regulator" : None, + "Title" : None, + "Comment" : None, + "Data" : None, + } def getTime(): @@ -87,9 +97,9 @@ def init(): # Connect serial ser.open() ser.isOpen() - print("Waiting for \"# hello\" from device...") - while (ser.readline().strip("\r\n") != "# hello"): - pass +# print("Waiting for \"# hello\" from device...") +# while (ser.readline().strip("\r\n") != "# hello"): +# pass #while (ser.readline().strip("\r\n ") != "#"): # pass time.sleep(1.0) @@ -139,34 +149,57 @@ def main(): + # Experiment # TODO: Modify data to record here - #sweep = 1 - record_data([4, 5], getDate()+"/"+str(getTime())+".dat", None, None, "Measure emission&sample current varying with time, constant initial energy.") - #while True: - # os.system("mkdir -p " + getDate()) - # record_data([4, 5], getDate()+"/"+str(getTime())+".dat", None, 2300, "Sweep " + str(sweep) + " (started on " + aquire["start_date"]+")") - # sweep += 1 + sweep = 1 + while True: + os.system("mkdir -p " + getDate()) + record_data([4, 5], getDate()+"/"+str(getTime())+".dat", None, 4000) + sweep += 1 -def checkList(): +def checkList(output_file): + try: + input_file = open(getDate()+"/checklist", "r") + except: + input_file = None + + if (input_file != None): + for line in input_file: + k = line.split("=") + item = k[0].strip(" \r\n") + value = k[1].strip(" \r\n") + if (item in parameters): + parameters[item] = value + + print("Checklist found. Overwrite? [Y/n]") + response = sys.stdin.readline().strip(" \r\n") + if (response == "" or response == "y" or response == "Y"): + input_file = None - output = open(getDate()+"/checklist", "w", 0) + if (input_file == None): + for item in parameters: + sys.stdout.write("\""+str(item)+"\" = " + str(parameters[item]) + " New value?: ") + response = sys.stdin.readline().strip("\r\n ") + if (response != ""): + parameters[item] = response + sys.stdout.write("\n") + + + checklist = open(getDate()+"/checklist", "w", 0) for item in parameters: - sys.stdout.write("Enter value for \""+str(item)+"\": ") - parameters[item] = sys.stdin.readline().strip("\r\n ") - sys.stdout.write("\n") - output.write(str(parameters[item]) + "\n") + checklist.write("# "+str(item) + " = " + str(parameters[item]) + "\n") + output_file.write("# "+str(item) + " = " + str(parameters[item]) + "\n") -def record_data(ADC_channels, output, pollTime = None, dac_max = None, comment = None): + +def record_data(ADC_channels, output, pollTime = None, dac_max = None): + if (output != None): output = [open(output, "w", 0), sys.stdout] - if (comment == None): - print("Enter a comment for the experiment.") - comment = sys.stdin.readline().strip("\r\n ") - output[0].write("# Comment: "+str(comment)+"\n") + #checkList(output[0]) else: output = [sys.stdout] @@ -191,9 +224,13 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None, comment = nextDacValue = int(eval(aquire["DAC_Sweep"])) if (nextDacValue != dacValue): dacValue = nextDacValue + if (dacValue < 0): + break setDAC(dacValue) step += 1 - if (dac_max != None and dacValue == dac_max): + + + if (dac_max != None and dacValue >= dac_max): break measure_start = time.time() @@ -214,7 +251,8 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None, comment = out.write("\t"+str(dacValue)) for adc in raw_adc: out.write("\t" + str(adc[1]) + "\t" + str(adc[2])) - out.write("\n") + out.write("\n") + for out in output: if out != sys.stdout: