## GrabData.py ## Gets all the data from the screen and then saves it as csv file ## Make sure all 4 Channels of the VNA are on Log Magnitude + Phase ## The CSV file will have 9 columns - frequency then 4x mag + phase import visa import os def grabData(fname): print("Please wait, retrieving data...") ## Get the VNA data VNA = visa.instrument("GPIB::06") VNA.write("CH1") f = VNA.ask_for_values("OFV") S11 = VNA.ask_for_values("OFD") VNA.write("CH2") S21 = VNA.ask_for_values("OFD") VNA.write("CH3") S12 = VNA.ask_for_values("OFD") VNA.write("CH4") S22 = VNA.ask_for_values("OFD") ## Open the file to save data to file = open(fname,"w") ## Write a header, to set up each channel file.write("Frequency,S11 Magnitude,S11 Phase,S21 Magnitude,S21 Phase,S12 Magnitude,S12 Phase,S22 Magnitude,S22 Phase \n") file.write("GHz,dB,deg,dB,deg,dB,deg,dB,deg \n") file.write("\n") ## Loop through all the data, writing it line by line to a csv for m in range(len(f)-1): file.write(str(f[m+1]/1000000000) + ", " + str(S11[2*m+1]) + ", " + str(S11[2*m+2])+ ", " + str(S21[2*m+1]) + ", " + str(S21[2*m+2])+ ", " + str(S12[2*m+1])+ ", " + str(S12[2*m+2]) + ", " + str(S22[2*m+1])+ ", " +str(S22[2*m+2]) + "\n") file.close() VNA.close() #end of grabData def ## Ask for the filename t=raw_input("Enter name for file and then press RETURN: ") ## Open up a file and start writing os.mkdir(t) ## Get the VNA data VNA = visa.instrument("GPIB::06") VNA.write("CH1") refS11t = VNA.ask_for_values("RDT?") VNA.write("CH2") refS21t = VNA.ask_for_values("RDT?") VNA.write("CH3") refS12t = VNA.ask_for_values("RDT?") VNA.write("CH4") refS22t = VNA.ask_for_values("RDT?") ## Open file for extra information fname = t + "/" + t + ".txt" file = open(fname,"w") file.write("Reference Delay - Time (s) \n") file.write("S11: " + str(refS11t) + " \n") file.write("S21: " + str(refS21t) + " \n") file.write("S12: " + str(refS12t) + " \n") file.write("S22: " + str(refS22t) + " \n") file.close() ## take the measurement fname = t + "/" + t + "_1_1.csv" grabData(fname)