Automatic commit. Fri Sep 7 00:00:05 WST 2012
[matches/honours.git] / research / TCS / interface.py
index 11ed9b2..22e04a4 100755 (executable)
@@ -13,7 +13,9 @@ import serial
 import datetime
 
 import odict
+import Gnuplot, Gnuplot.funcutils
 
+gnuplot = Gnuplot.Gnuplot()
 
 # TODO: Insert variables for calibration purposes here.
 calibrate = {
@@ -32,11 +34,11 @@ calibrate = {
 }
 
 # TODO: Adjust aqcuisition parameters here
-aquire = { "DAC_Sweep" : "0.0 + 50.0*int(step/60)", # DAC Sweep value (t is in STEPS, not seconds!)
+aquire = { "DAC_Sweep" : "0.0 + 50.0*int(step)", # 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
+       #"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,
@@ -45,7 +47,7 @@ aquire = { "DAC_Sweep" : "0.0 + 50.0*int(step/60)", # DAC Sweep value (t is in S
 
 #Setup the serial connection parameters
 ser = serial.Serial(
-       port="/dev/ttyUSB0", # Modify as needed (note: in linux need to run `sudo chmod a+rw /dev/ttyUSBX' to set permissions)
+       port="/dev/ttyUSB1", # Modify as needed (note: in linux need to run `sudo chmod a+rw /dev/ttyUSBX' to set permissions)
 
        # Do not change the values below here (unless AVR butterfly is reprogrammed to use different values)
        baudrate=4800,
@@ -64,11 +66,12 @@ parameters = odict.odict([
        ("Venault Voltage" , None),
        ("Initial Voltage" , None),
        ("Heating Current" , None),
-       ("Heating Voltage" , None),
+       ("Heating Voltage (across filament)" , None),
+       ("Heating Voltage (across power supply)", None),
        ("Chamber Pressure" , None),
-       ("610B Zero" , None),
+       #("610B Zero" , None),
        ("602 Zero" , None),
-       ("610B Scale" , None),
+       #("610B Scale" , None),
        ("602 Scale" , None),
        ("602 0.1 Battery" , None),
        ("602 0.03 Battery" , None),
@@ -76,6 +79,8 @@ parameters = odict.odict([
        ("602 0.003 Battery" , None),
        ("602 0.001 Battery" , None), 
        ("ADC Regulator" , None),
+       ("Sample", None),
+       ("Sample Angle", None),
        ("Title" , None),
        ("Comment" , None),
        ("Data" , None),
@@ -108,7 +113,7 @@ def killed_handler(signal, frame):
        reason = sys.stdin.readline().strip("\r\n ")
        for out in aquire["open_files"]:
                sys.stdout.write("# Closing file " + str(out) + "\n")
-               out.write("# Recieved KILL signal.\n# Reason: " + str(reason))
+               out.write("# Recieved KILL signal.\n# Reason: " + str(reason) + "\n")
                log_close(out)
 
        
@@ -203,11 +208,11 @@ def main():
        # Experiment
        # TODO: Modify data to record here
        sweep = 1
-       while True:
+       for i in range(0,1):
                os.system("mkdir -p " + getDate())
-               record_data([4, 5], getDate()+"/"+str(getTime())+".dat", None, 4000)
+               record_data([5], getDate()+"/"+str(getTime())+".dat", None, 4000)
                sweep += 1
-       
+       setDAC(500)
 
 def checkList():
        try:
@@ -233,6 +238,7 @@ def checkList():
                        for item in parameters:
                                input_file.write("# " + str(item) + " = " + str(parameters[item]) + "\n")
                        input_file.write("\n")
+                       log_close(input_file)
                        input_file = None
        
        if (input_file == None):
@@ -251,14 +257,17 @@ def checkList():
        for item in parameters:
                checklist.write("# "+str(item) + " = " + str(parameters[item]) + "\n")
                #output_file.write("# "+str(item) + " = " + str(parameters[item]) + "\n")
-
+       log_close(checklist)
        
 
 def record_data(ADC_channels, output, pollTime = None, dac_max = None):
        
        if (output != None):
+               gnuplot("set title \""+str(output)+"\"")
                output = [log_open(output, "w"), sys.stdout]
+
        else:
+               gnuplot("set title \"<No file>\"")
                output = [sys.stdout]
 
        for field in aquire:
@@ -275,6 +284,10 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None):
 
        start_time = time.time()
        
+       gnuplot("set xlabel \"DAC (counts)\"")
+       gnuplot("set ylabel \"ADC (counts)\"")
+       
+       
        for out in output:
                out.write("\n")
                out.write("# Experiment " + str(datetime.datetime.now()) + "\n")
@@ -287,9 +300,11 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None):
                out.write("\n")
 
        step = 0
+       data = [] # Keep track of data for dynamic plotting
        dacValue = int(eval(aquire["DAC_Sweep"]))
        if (setDAC(dacValue) == False):
                setDAC(dacValue)
+       time.sleep(2.0)
        while (pollTime == None or time.time() < start_time + pollTime):
                if (aquire["DAC_Sweep"] != None):
                        nextDacValue = int(eval(aquire["DAC_Sweep"]))
@@ -321,13 +336,19 @@ def record_data(ADC_channels, output, pollTime = None, dac_max = None):
                end_time = time.time()
 
                for out in output:
-                       out.write(str((measure_start + (end_time - measure_start)/2.0 - start_time)))
+                       measure_time = measure_start + (end_time - measure_start)/2.0 - start_time
+                       out.write(str(measure_time))
                        out.write("\t"+str(dacValue))
+                       data.append([measure_time, dacValue])
+
                        for adc in raw_adc:
                                out.write("\t" + str(adc[1]) + "\t" + str(adc[2]))
+                               data[len(data)-1].append(adc[1])
+                               data[len(data)-1].append(adc[2])
                        out.write("\n") 
        
-               
+       
+               #gnuplot.plot(Gnuplot.Data(data, title="t = "+str(measure_time), with_="lp", using="2:3"))
        for out in output:              
                if out != sys.stdout:
                        log_close(out)

UCC git Repository :: git.ucc.asn.au