X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=research%2FTCS%2Finterface.py;h=86c5e823f3676793bcebbbc9c849f772f4c3c2a1;hb=3423ad8d0015992dd3c4af656ffb745f7796464e;hp=0e0cc9a1c0fc5e021f4b62b679a391f6c8e66795;hpb=2379bc953e17eeae2a96f349a3e802658b7596d9;p=matches%2Fhonours.git diff --git a/research/TCS/interface.py b/research/TCS/interface.py index 0e0cc9a1..86c5e823 100755 --- a/research/TCS/interface.py +++ b/research/TCS/interface.py @@ -12,6 +12,7 @@ import time import serial import datetime +import collections # TODO: Insert variables for calibration purposes here. @@ -31,14 +32,15 @@ calibrate = { } # TODO: Adjust aqcuisition parameters here -aquire = { "DAC_Sweep" :"2750.0 + 250.0*int(step/120)", # DAC Sweep value (t is in STEPS, not seconds!) +aquire = { "DAC_Sweep" : "0.0 + 50.0*int(step/60)", # 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" : 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 + "start_date" : None, + "open_files" : [] } #Setup the serial connection parameters @@ -55,31 +57,30 @@ ser = serial.Serial( rtscts=0 ) -parameters = { - "Accelerating Voltage" : None, - "Focus Voltage" : None, - "Deflection Voltage" : None, - "Venault Voltage" : None, - "Initial Voltage" : None, - "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, - "ADC Battery" : None, - "ADC Regulator" : None, - "Title" : None, - "Comment" : None, - "Data" : None, - -} +parameters = OrderedDict([ + ("Accelerating Voltage" , None), + ("Focus Voltage" , None), + ("Deflection Voltage" , None), + ("Venault Voltage" , None), + ("Initial Voltage" , None), + ("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), + ("ADC Battery" , None), + ("ADC Regulator" , None), + ("Title" , None), + ("Comment" , None), + ("Data" , None), +]) def getTime(): return str(datetime.datetime.now()).split(" ")[1].split(".")[0].replace(":","") @@ -87,6 +88,22 @@ def getTime(): def getDate(): return str(datetime.datetime.now()).split(" ")[0] +# Used for when I press Control-C to stop things +def set_exit_handler(func): + if os.name == "nt": + try: + import win32api + win32api.SetConsoleCtrlHandler(func, True) + except ImportError: + version = “.”.join(map(str, sys.version_info[:2])) + raise Exception(”pywin32 not installed for Python ” + version) + else: + import signal + signal.signal(signal.SIGTERM, func) + +def exit_handler(): + + def init(): @@ -114,9 +131,9 @@ def init(): output.write("# Initialise " + str(datetime.datetime.now()) + "\n") - for field in calibrate: - output.write("# calibrate["+str(field)+"] = "+str(calibrate[field]) + "\n") - output.write("\n") + #for field in calibrate: + # output.write("# calibrate["+str(field)+"] = "+str(calibrate[field]) + "\n") + #output.write("\n") for field in aquire: output.write("# aquire["+str(field)+"] = "+str(aquire[field]) + "\n") @@ -127,25 +144,26 @@ def main(): init() - if (loadCalibration_DAC() == False): - if (calibrateDAC() == False): - return -1 - if (loadCalibration_ADC(aquire["ADC_Is"]) == False): - if (calibrateADC_usingDAC(aquire["ADC_Is"], False) == False): - if (calibrateADC(aquire["ADC_Is"]) == False): - return -1 - - if (loadCalibration_ADC(aquire["ADC_Vi"]) == False): - if (calibrateADC_usingDAC(aquire["ADC_Vi"], True) == False): - if (calibrateADC(aquire["ADC_Vi"]) == False): - return -1 + # I haven't ever used calibrated results, and yet this code is still here, why??? + #if (loadCalibration_DAC() == False): + # if (calibrateDAC() == False): + # return -1 + #if (loadCalibration_ADC(aquire["ADC_Is"]) == False): + # if (calibrateADC_usingDAC(aquire["ADC_Is"], False) == False): + # if (calibrateADC(aquire["ADC_Is"]) == False): + # return -1 + + #if (loadCalibration_ADC(aquire["ADC_Vi"]) == False): + # if (calibrateADC_usingDAC(aquire["ADC_Vi"], True) == False): + # if (calibrateADC(aquire["ADC_Vi"]) == False): + # return -1 # Make directory for today, backup calibration files os.system("mkdir -p " + getDate()) - os.system("cp *.dat " + getDate() +"/") + #os.system("cp *.dat " + getDate() +"/") - #checkList() + checkList() @@ -199,16 +217,29 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None): if (output != None): output = [open(output, "w", 0), sys.stdout] - #checkList(output[0]) + checkList(output[0]) else: output = [sys.stdout] + for field in aquire: + for out in output: + out.write("# aquire["+str(field)+"] = "+str(aquire[field]) + "\n") + + for out in output: + out.write("# Checklist:\n") + + for field in checklist: + for out in output: + out.write("# "+str(field)+" = " + str(checklist[field]) + "\n") + + start_time = time.time() for out in output: + out.write("\n") out.write("# Experiment " + str(datetime.datetime.now()) + "\n") out.write("# Polling for " + str(pollTime) + "s.\n") - out.write("# DAC = " + str(aquire["DAC_Sweep"]) + "\n") + out.write("\n") out.write("# Data:\n") out.write("# time\tDAC") for channel in ADC_channels: