def getTrace(self,waitFullSweep = False,timeOut = 1600,fromMemory=False): """ Get a raw trace in the VNA, without correcting the data, except for internal attenuators. Get the memory instead of main trace if fromMemory=True. Restart a sweep and wait for its completion if fromMemory=False and waitFullSweep=True. FOR INTERNAL USE ONLY. USE INSTEAD getFreqMagPhase(waitFullSweep = False,fromMemory=False,timeOut=60,addedAttenuators=0,unwindPhase=False,subtractedSlope=None,deltaPhase=None,offset=None). """ trace = Datacube('Spectrum') handle = self.getHandle() handle.timeout = timeOut if waitFullSweep: print "Getting trace...", # freqs = self.ask_for_values("HLD;TRS;WFS;fma;msb;OFV;") 2011/12 VS self.write('TRS;WFS;') freqs = self.ask_for_values('fma;msb;OFV;') data = self.write('fma;msb;') if(fromMemory): data = self.ask_for_values('MEM;OFD;') self.write('DTM;') else: data = self.ask_for_values('OFD;') if waitFullSweep: print "done." freqs.pop(0) data.pop(0) mag = [] phase = [] #If y length is twice the x length, we got phase and magnitude. if len(data) == 2*len(freqs): for i in range(0,len(data)): if i%2 == 0: mag.append(data[i]) else: phase.append(data[i]) else: mag = data att=self.attenuation() trace.setParameters( {'attenuation':att,'power':self.totalPower()}) trace.createCol(name='freq',values=freqs) trace.createCol(name='mag',values=array(mag)+att) if len(phase)!=0: trace.createCol(name='phase',values=phase) return trace