def setup_buffer(self):
     '''
     The following is for setting the digitizer up in a buffering mode
     '''
     self.checkADCOverload()
     self.capture_ref = PXIDigitizer_wrapper.afDigitizerCaptureIQ_t()
     self.timeout = int(1000*self.nSamples/self.bandwidth+10000)
     i_ctypes = self.i_buffer.ctypes.data_as(POINTER(c_float))
     q_ctypes = self.q_buffer.ctypes.data_as(POINTER(c_float))
     self.buffer_ref = PXIDigitizer_wrapper.afDigitizerBufferIQ_t(
         i_ctypes, q_ctypes, self.nSamples)
     self.buffer_ref_pointer = pointer(self.buffer_ref)
 def __init__(self, adressDigi='3036D1', adressLo='3011D1',
              LoPosAB=1, LoRef=0, name='D', cfreq=4.57e9, inputlvl=30,
              start=4.43e9, stop=0, pt=1, nSample=1e6, sampFreq=1e5,
              buffmode=True):
     self.ADCFAIL = False
     self.capture_ref = None
     self.ADCoverflow = 0
     self.buffmode = buffmode
     self.bandwidth = sampFreq
     self.removeDCoff = 0
     self.LoPos = LoPosAB          # Lo Above (1) or Below (0)
     self.freq = cfreq
     self.nSamples = int(nSample)   # Samples taken/trigger
     self.inputLvl = inputlvl
     self.Overload = 0
     self.LoRef = LoRef          # 0=ocxo, 1=int 2=extDaisy, 3=extTerminated
     self.trig_source = 8        # 8=Star, 32=SW, 35=internal
     self.adressLo = adressLo
     self.adressDigi = adressDigi
     self.name = name
     self.start = start
     self.stop = stop
     self.pt = pt
     self.lin = np.linspace(self.start, self.stop, self.pt)
     self.digitizer = PXIDigitizer_wrapper.afDigitizer_BS()
     self.prep_data()
     self.performOpen()
     self.set_settings()
     if self.buffmode:
         self.setup_buffer()
    def performOpen(self):
        if hasattr(self, 'digitizer'):
            ''' If Digitizer exists then close it first 
            and then reopen it '''
            self.performClose()

        self.digitizer = PXIDigitizer_wrapper.afDigitizer_BS()
        try:
            # self.digitizer.create_object()
            self.digitizer.boot_instrument(self.adressLo, self.adressDigi)
            print 'Digitizer ', self.name, ' started'
        except PXIDigitizer_wrapper.Error as e:
            print "Digitizer start failed"
            self.digitizer.close_instrument()
            self.digitizer.destroy_object()
            raise Exception(e)
    def performOpen(self, options={}):
        """Perform the operation of opening the instrument connection"""
        # check communication
        try:
            # open connection
            self.digitizer = PXIDigitizer_wrapper.afDigitizer_BS()
            self.digitizer.create_object()
            # get address strings
            sVisaDigitizer = self.dComCfg['address']
            sVisaLO = self.getValue('Local oscillator VISA')
            # keep track of number of samples and old I,Q,R and theta values
            self.nSamples = int(self.getValue('Number of samples'))
            self.nTriggers = int(self.getValue('Number of triggers'))
            self.nAverages_per_trigger = int(self.getValue('Averages per trigger'))
            self.Overload = 0
            self.cAvgSignal = None
            self.cAvgSignal2 = None
            self.cTrace = None
            self.vPTrace = None
            self.vPowerMeanUnAvg = None
            self.MeanMag = None
            self.MeanPhas = None
            self.vMeanUnAvg = None
            self.cRaw = None
            self.dPower = None
            self.bRaw = self.getValue('Retrive raw data')
            self.bCollectHistogram = self.getValue('Collect IQ Histogram')
            self.nAbove = 0
            self.bSetBandWidth = self.getValue('Set IQ Bandwidth manually')
            self.dBandWidthAim = self.getValue('IQ Bandwidth')
            self.dBandWidthAcc = self.getValue('IQ Bandwidth')
            self.bCutTrace = self.getValue('Cut out part of the trace')
            self.nStartSample = int(self.getValue('Start Sample'))
            self.nStopSample = int(self.getValue('Stop Sample'))
            self.nHistPath = self.getValue('Histogram path')
            self.dFreq = self.getValue('RF Frequency')
            self.nBins = 0
            self.sHistPath = self.getValue('Histogram path')
            # boot instruments
            self.digitizer.boot_instrument(sVisaLO, sVisaDigitizer)
            # set modulation mode to generic
            self.digitizer.modulation_mode_set(5)

        except PXIDigitizer_wrapper.Error as e:
            # re-cast afdigitizer errors as a generic communication error
            msg = str(e)
            raise InstrumentDriver.CommunicationError(msg)