コード例 #1
0
    def open_device(self, name, ok):
        if not ok:
            self._main_window.show()
            return

        if self.dut:
            self.dut.disconnect()
        self._main_window.show()
        dut = WSA(connector=TwistedConnector(self._reactor))
        yield dut.connect(name)
        self.dev_set = {
            'attenuator': 0,
            'freq': 2450e6,
            'decimation': 1,
            'fshift': 0,
            'rfe_mode': 'SH',
            'iq_output_path': 'DIGITIZER'
        }
        self.dut = dut
        self.dut_prop = self.dut.properties
        self.bandwidth = self.dut_prop.FULL_BW[self.dev_set['rfe_mode']]
        self.rbw = 125000000 / SAMPLE_VALUES[3]
        self.enable_mhold = False
        self.mhold = []
        self.cap_dut = CaptureDevice(dut,
                                     async_callback=self.receive_capture,
                                     device_settings=self.dev_set)
        self.initUI()
        self.enable_controls()
        self.read_block()
コード例 #2
0
    def open_device(self, name, ok):
        if not ok:
            self.show()
            return

        self.show()
        dut = WSA(connector=TwistedConnector(self._get_reactor()))
        yield dut.connect(name)
        self._device_address = name
        self.setWindowTitle('PyRF RTSA %s Connected To: %s' %
                            (__version__, name))
        if hasattr(dut.properties, 'MINIMUM_FW_VERSION') and parse_version(
                dut.fw_version) < parse_version(
                    dut.properties.MINIMUM_FW_VERSION):
            too_old = QtGui.QMessageBox()
            too_old.setText(
                'Your device firmware version is {0}'
                ' but this application is expecting at least version'
                ' {1}. Some features may not work properly'.format(
                    dut.fw_version, dut.properties.MINIMUM_FW_VERSION))
            too_old.exec_()
        self.controller.set_device(dut)
        self.record_action.setDisabled(False)
        self.stop_action.setDisabled(True)
        self.device_info.setDisabled(False)
コード例 #3
0
    def __init__(self, ip_address):
        self._driver = WSA()
        self._driver.connect(ip_address)

        self._numpts = 4096
        self._center_MHz = 2447.
        self._span_MHz = 125.
        self._start_MHz = self._center_MHz - (self._span_MHz / 2)
        self._stop_MHz = self._center_MHz + (self._span_MHz / 2)
        self._frequencies_MHz = np.linspace(self._start_MHz, self._stop_MHz,
                                            self._numpts)

        self._last_power_spectrum_dBm = None
        self._capture_history_len = 2000
        self.capture_history = WaterfallModel(self._frequencies_MHz,
                                              self._capture_history_len)
        self._capture_count = 0

        self._capture_timer = QtCore.QTimer(
        )  #for app-side acquisition control
        self._capture_timer.timeout.connect(self._on_capture_timer)
        self.capturing = False

        self.reset()
コード例 #4
0
    # return peak frequency and amplitude
    return (pfreq, pamp)


# open faillog
if log_errors:
    fp = open("mcfail.log", "a")

# connect to siggen
sg = N5183("10.126.110.19")
sg.freq(2400e6)
sg.amplitude(pin)
sg.output(1)

# connect to wsa
dut = WSA()
dut.connect(sys.argv[1])
dut.scpiset("*RST")
dut.flush()

# create sweep device
sd = SweepDevice(dut)

# test for a long time
t = 0
while t < numtrials:

    # choose random fstart
    req_fstart = int(random.random() * 8e9)

    # choose random fstop
コード例 #5
0
    def __init__(self,
                 name: str,
                 address: str,
                 **kwargs: Any) -> None:
        super().__init__(name, **kwargs)
        
        self.dut = WSA()
        self.addr = address
        self.dut.connect(address)
        self.dut.request_read_perm()

        # Basic settings
        self._rfemode = 'SH'
        self._fstart = 5e9
        self._fstop = 6e9
        self._rbw = 5e3
        self._gain = 'high'
        self._attenuation = 0
        self._average = 10
        self._decimation = 1
        self._reflevel = 0
        self.triggered = False

        self._acquired_data = None

        self.add_parameter('rfe_mode',
                                unit = '',
                                initial_value= 'SH',
                                label = 'Input Mode',
                                get_cmd = self.get_rfe_mode,
                                set_cmd = self.set_rfe_mode,
                                get_parser = str)
        
        self.add_parameter('attenuation',
                                unit = 'dB',
                                initial_value = 0.0,
                                label = 'attenuation',
                                get_cmd = self.get_attenuation,
                                set_cmd = self.set_attenuation,
                                get_parser = float,)

        self.add_parameter('gain',
                                unit = '',
                                label = 'gain',
                                get_cmd = self.get_psfm_gain,
                                set_cmd = self.set_psfm_gain,
                                get_parser = str)
        
        self.add_parameter('average',
                                unit = '',
                                label = 'average',
                                get_cmd = self.get_average,
                                set_cmd = self.set_average,
                                get_parser = int)

        self.add_parameter('rbw',
                                unit = 'Hz',
                                label = 'resolution bandwidth',
                                get_cmd = self.get_rbw,
                                set_cmd = self.set_rbw ,
                                get_parser = float)


        self.add_parameter('f_start',
                                unit='Hz',
                                label='fstart',
                                get_cmd= self.get_fstart,
                                set_cmd= self.set_fstart,
                                get_parser = float)

        self.add_parameter('f_stop',
                                unit='Hz',
                                label='fstop',
                                get_cmd = self.get_fstop,
                                set_cmd= self.set_fstop,
                                get_parser = float)

        self.add_parameter('n_points',
                                unit='',
                                get_cmd= self.get_npoints,
                                set_cmd= '',
                                get_parser = int)
        
        self.add_parameter('freq_axis',
                                unit='Hz',
                                label='Frequency',
                                parameter_class=Setpoints,
                                startpar=self.f_start,
                                stoppar=self.f_stop,
                                npointspar=self.n_points,
                                vals=Arrays(shape=(self.n_points.get_latest,)))

        self.add_parameter('spectrum',
                                unit='dBm',
                                setpoints=(self.freq_axis,),
                                label='Noise power',
                                parameter_class=SpectrumArray,
                                vals=Arrays(shape=(self.n_points.get_latest,)))
コード例 #6
0
#!/usr/bin/env python

import sys
from pyrf.devices.thinkrf import WSA
from pyrf.connectors.twisted_async import TwistedConnector

from twisted.internet import reactor, defer
import twisted.python.log

# connect to wsa
dut = WSA(connector=TwistedConnector(reactor))

@defer.inlineCallbacks
def show_i_q():
    yield dut.connect(sys.argv[1])

    # setup test conditions
    yield dut.reset()
    yield dut.request_read_perm()
    yield dut.freq(2450e6)
    yield dut.decimation(0)

    dut.connector.vrt_callback = receive_vrt
    # capture 1 packet
    yield dut.capture(1024, 1)

def receive_vrt(packet):
    # read until I get 1 data packet
    if not packet.is_data_packet():
        return
コード例 #7
0
    def __init__(self, name: str, address: str, **kwargs: Any) -> None:
        super().__init__(name, **kwargs)

        self.dut = WSA()
        self.dut.connect(address)
        self.dut.reset()
        self.dut.request_read_perm()

        self._span = 5e6

        self._RBW = 125e6 / (32 * 512)
        self._average = 1
        self._decimation = 1
        self._reflevel = 0

        self._capture_mode = 'BLOCK'

        self._freqlist = []
        self._spectralist = []

        # sweep capture is not implemented yet
        self.add_parameter('capture_mode',
                           unit='',
                           initial_value='BLOCK',
                           vals=Enum('BLOCK', 'SWEEP'),
                           label='Capture Mode',
                           get_cmd=self.get_capture_mode,
                           set_cmd=self.set_capture_mode,
                           get_parser=str)

        self.add_parameter('rfe_mode',
                           unit='',
                           initial_value='SH',
                           label='Input Mode',
                           get_cmd=self.dut.rfe_mode,
                           set_cmd=self.dut.rfe_mode,
                           get_parser=str)

        self.add_parameter(
            'attenuation',
            unit='dB',
            initial_value=0.0,
            label='attenuation',
            get_cmd=self.dut.attenuator,
            set_cmd=self.dut.attenuator,
            get_parser=float,
        )

        self.add_parameter('gain',
                           unit='',
                           label='gain',
                           get_cmd=self.dut.psfm_gain,
                           set_cmd=self.dut.psfm_gain,
                           get_parser=str)

        self.add_parameter('reflevel',
                           unit='dBm',
                           label='reference level',
                           get_cmd=self.get_ref,
                           set_cmd=self.set_ref,
                           get_parser=float)

        self.add_parameter('average',
                           unit='',
                           label='average',
                           get_cmd=self.get_avg,
                           set_cmd=self.set_avg,
                           get_parser=int)

        self.add_parameter(
            'ppb',
            unit='',
            #initial_value = 1,
            label='packets/block',
            get_cmd=self.dut.ppb,
            set_cmd=self.dut.ppb,
            get_parser=int,
        )

        self.add_parameter(
            'spp',
            unit='',
            #initial_value = 32 * 512,
            label='samples/packet',
            get_cmd=self.dut.spp,
            set_cmd=self.dut.spp,
            get_parser=int,
        )

        self.add_parameter(
            'span',
            unit='Hz',
            label='span',
            # vals = Numbers(0,100e6),
            get_cmd=self.get_span,
            set_cmd=self.set_span,
            get_parser=float)

        #TODO : implement a function that automatically adjusts the RWB to the value closest to the one in the device properties list
        self.add_parameter(
            'rbw',
            unit='Hz',
            # initial_value= 125e6 / (self.spp() * self.ppb),
            label='resolution bandwidth',
            # vals = Numbers(0,100e6),
            get_cmd=self.get_RBW,
            set_cmd=self.set_RBW,
            get_parser=float)

        self.add_parameter('f_center',
                           unit='Hz',
                           label='f center',
                           vals=Numbers(0.1e9, 27e9),
                           get_cmd=self.dut.freq,
                           set_cmd=self.dut.freq,
                           get_parser=float)

        self.add_parameter(
            'f_start',
            #  initial_value= 5.1e9,
            unit='Hz',
            label='f start',
            #vals=Numbers(0,1e3),
            get_cmd=lambda: self.f_center() - self.span() / 2,
            set_cmd='',
            get_parser=float)

        self.add_parameter(
            'f_stop',
            unit='Hz',
            label='f stop',
            #initial_value=fstop,
            #vals=Numbers(1,1e3),
            get_cmd=lambda: self.f_center() + self.span() / 2,
            set_cmd='',
            get_parser=float)

        self.add_parameter(
            'n_points',
            unit='',
            # initial_value=len(spectra_data),
            #vals=Numbers(1,1e3),
            get_cmd=self.get_npoints,
            set_cmd='',
            get_parser=int)

        self.add_parameter('freq_axis',
                           unit='Hz',
                           label='Frequency',
                           parameter_class=GeneratedSetPoints,
                           startparam=self.f_start,
                           stopparam=self.f_stop,
                           xpointsparam=self.n_points,
                           vals=Arrays(shape=(self.n_points.get_latest, )))

        self.add_parameter('spectrum',
                           unit='dBm',
                           setpoints=(self.freq_axis, ),
                           label='Noise power',
                           parameter_class=SpectrumArray,
                           vals=Arrays(shape=(self.n_points.get_latest, )))
コード例 #8
0
 def _init_hardware(self, ip_address):
     self._driver = WSA()
     self._driver.connect(ip_address)