Exemplo n.º 1
0
	def __init__(
		self,
		parent,
		controller,
		size,
		title,
		units,
		show_gauge,
		real,
		minval,
		maxval,
		decimal_places,
		msg_key,
		sample_rate_key,
	):
		pubsub.__init__(self)
		wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER)
		#setup
		self.peak_val_real = NEG_INF
		self.real = real
		self.units = units
		self.decimal_places = decimal_places
		#proxy the keys
		self.proxy(MSG_KEY, controller, msg_key)
		#initialize values
		self[RUNNING_KEY] = True
		self[VALUE_REAL_KEY] = minval
		#setup the box with display and controls
		main_box = wx.BoxSizer(wx.HORIZONTAL)
		sizer = forms.static_box_sizer(
			parent=self, sizer=main_box, label=title,
			bold=True, orient=wx.VERTICAL, proportion=1,
		)
		sizer.AddStretchSpacer()
		forms.static_text(
			parent=self, sizer=sizer,
			ps=self, key=VALUE_REPR_KEY, width=size[0],
			converter=forms.str_converter(),
		)
		sizer.AddStretchSpacer()
		self.gauge_real = forms.gauge(
			parent=self, sizer=sizer, style=wx.GA_HORIZONTAL,
			ps=self, key=VALUE_REAL_KEY, length=size[0],
			minimum=minval, maximum=maxval, num_steps=DEFAULT_GAUGE_RANGE,
		)
		#hide/show gauges
		self.gauge_real.ShowItems(show_gauge)
		self.SetSizerAndFit(main_box)
		#register events
		self.subscribe(MSG_KEY, self.handle_msg)
Exemplo n.º 2
0
    def __init__(self, parent):
        """
		Create a new control panel.
		
		Args:
		    parent: the wx parent window
		"""
        self.parent = parent
        wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER)
        parent[SHOW_CONTROL_PANEL_KEY] = True
        parent.subscribe(SHOW_CONTROL_PANEL_KEY, self.Show)
        control_box = wx.BoxSizer(wx.VERTICAL)
        control_box.AddStretchSpacer()
        options_box = forms.static_box_sizer(
            parent=self, sizer=control_box, label="Options", bold=True, orient=wx.VERTICAL
        )
        # average
        # forms.check_box(
        # 	sizer=options_box, parent=self, label='Average',
        # 	ps=parent, key=AVERAGE_KEY,
        # )
        # avg_alpha_text = forms.static_text(
        # 	sizer=options_box, parent=self, label='Avg Alpha',
        # 	converter=forms.float_converter(lambda x: '%.4f'%x),
        # 	ps=parent, key=AVG_ALPHA_KEY, width=50,
        # )
        # avg_alpha_slider = forms.log_slider(
        # 	sizer=options_box, parent=self,
        # 	min_exp=AVG_ALPHA_MIN_EXP,
        # 	max_exp=AVG_ALPHA_MAX_EXP,
        # 	num_steps=SLIDER_STEPS,
        # 	ps=parent, key=AVG_ALPHA_KEY,
        # )
        # for widget in (avg_alpha_text, avg_alpha_slider):
        # 	parent.subscribe(AVERAGE_KEY, widget.Enable)
        # 	widget.Enable(parent[AVERAGE_KEY])
        # begin axes box
        control_box.AddStretchSpacer()
        axes_box = forms.static_box_sizer(
            parent=self, sizer=control_box, label="Axes Options", bold=True, orient=wx.VERTICAL
        )
        # num lines buttons
        # forms.incr_decr_buttons(
        # 	parent=self, sizer=axes_box, label='Time Scale',
        # 	on_incr=self._on_incr_time_scale, on_decr=self._on_decr_time_scale,
        # )
        # dyanmic range buttons
        forms.incr_decr_buttons(
            parent=self,
            sizer=axes_box,
            label="Dyn Range",
            on_incr=self._on_incr_dynamic_range,
            on_decr=self._on_decr_dynamic_range,
        )
        # ref lvl buttons
        forms.incr_decr_buttons(
            parent=self,
            sizer=axes_box,
            label="Ref Level",
            on_incr=self._on_incr_ref_level,
            on_decr=self._on_decr_ref_level,
        )
        # color mode
        forms.drop_down(
            parent=self,
            sizer=axes_box,
            width=100,
            ps=parent,
            key=COLOR_MODE_KEY,
            label="Color",
            choices=map(lambda x: x[1], COLOR_MODES),
            labels=map(lambda x: x[0], COLOR_MODES),
        )
        # autoscale
        forms.single_button(parent=self, sizer=axes_box, label="Autoscale", callback=self.parent.autoscale)
        # clear
        control_box.AddStretchSpacer()
        forms.single_button(parent=self, sizer=control_box, label="Clear", callback=self._on_clear_button)
        # run/stop
        forms.toggle_button(
            sizer=control_box, parent=self, true_label="Stop", false_label="Run", ps=parent, key=RUNNING_KEY
        )
        # set sizer
        self.SetSizerAndFit(control_box)
Exemplo n.º 3
0
    def __init__(self, parent):
        """
        Create a new control panel.
        @param parent the wx parent window
        """
        self.parent = parent
        wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER)
        parent[constants.SHOW_CONTROL_PANEL_KEY] = True
        parent.subscribe(constants.SHOW_CONTROL_PANEL_KEY, self.Show)
        control_box = wx.BoxSizer(wx.VERTICAL)
        control_box.AddStretchSpacer()
        #checkboxes for average and peak hold
        options_box = forms.static_box_sizer(
            parent=self, sizer=control_box, label='Trace Options',
            bold=True, orient=wx.VERTICAL,
        )
        forms.check_box(
            sizer=options_box, parent=self, label='Peak Hold',
            ps=parent, key=constants.PEAK_HOLD_KEY,
        )
        forms.check_box(
            sizer=options_box, parent=self, label='Average',
            ps=parent, key=constants.AVERAGE_KEY,
        )
        #static text and slider for averaging
        avg_alpha_text = forms.static_text(
            sizer=options_box, parent=self, label='Avg Alpha',
            converter=forms.float_converter(lambda x: '%.4f'%x),
            ps=parent, key=constants.AVG_ALPHA_KEY, width=50,
        )
        avg_alpha_slider = forms.log_slider(
            sizer=options_box, parent=self,
            min_exp=AVG_ALPHA_MIN_EXP,
            max_exp=AVG_ALPHA_MAX_EXP,
            num_steps=SLIDER_STEPS,
            ps=parent, key=constants.AVG_ALPHA_KEY,
        )
        for widget in (avg_alpha_text, avg_alpha_slider):
            parent.subscribe(constants.AVERAGE_KEY, widget.Enable)
            widget.Enable(parent[constants.AVERAGE_KEY])
            parent.subscribe(constants.AVERAGE_KEY, widget.ShowItems)
                        #allways show initially, so room is reserved for them
            widget.ShowItems(True) # (parent[AVERAGE_KEY])
            parent.subscribe(constants.AVERAGE_KEY, self._update_layout)

        forms.check_box(
            sizer=options_box, parent=self, label='Persistence',
            ps=parent, key=constants.USE_PERSISTENCE_KEY,
        )
        #static text and slider for persist alpha
        persist_alpha_text = forms.static_text(
            sizer=options_box, parent=self, label='Persist Alpha',
            converter=forms.float_converter(lambda x: '%.4f'%x),
            ps=parent, key=constants.PERSIST_ALPHA_KEY, width=50,
        )
        persist_alpha_slider = forms.log_slider(
            sizer=options_box, parent=self,
            min_exp=PERSIST_ALPHA_MIN_EXP,
            max_exp=PERSIST_ALPHA_MAX_EXP,
            num_steps=SLIDER_STEPS,
            ps=parent, key=constants.PERSIST_ALPHA_KEY,
        )
        for widget in (persist_alpha_text, persist_alpha_slider):
            parent.subscribe(constants.USE_PERSISTENCE_KEY, widget.Enable)
            widget.Enable(parent[constants.USE_PERSISTENCE_KEY])
            parent.subscribe(constants.USE_PERSISTENCE_KEY, widget.ShowItems)
                        #allways show initially, so room is reserved for them
            widget.ShowItems(True) # (parent[USE_PERSISTENCE_KEY])
            parent.subscribe(constants.USE_PERSISTENCE_KEY, self._update_layout)

        #trace menu
        for trace in TRACES:
            trace_box = wx.BoxSizer(wx.HORIZONTAL)
            options_box.Add(trace_box, 0, wx.EXPAND)
            forms.check_box(
                sizer=trace_box, parent=self,
                ps=parent, key=constants.TRACE_SHOW_KEY+trace,
                label='Trace %s'%trace,
            )
            trace_box.AddSpacer(10)
            forms.single_button(
                sizer=trace_box, parent=self,
                ps=parent, key=constants.TRACE_STORE_KEY+trace,
                label='Store', style=wx.BU_EXACTFIT,
            )
            trace_box.AddSpacer(10)
        #radio buttons for div size
        control_box.AddStretchSpacer()
        y_ctrl_box = forms.static_box_sizer(
            parent=self, sizer=control_box, label='Axis Options',
            bold=True, orient=wx.VERTICAL,
        )
        forms.incr_decr_buttons(
            parent=self, sizer=y_ctrl_box, label='dB/Div',
            on_incr=self._on_incr_db_div, on_decr=self._on_decr_db_div,
        )
        #ref lvl buttons
        forms.incr_decr_buttons(
            parent=self, sizer=y_ctrl_box, label='Ref Level',
            on_incr=self._on_incr_ref_level, on_decr=self._on_decr_ref_level,
        )
        y_ctrl_box.AddSpacer(2)
        #autoscale
        forms.single_button(
            sizer=y_ctrl_box, parent=self, label='Autoscale',
            callback=self.parent.autoscale,
        )
        #run/stop
        control_box.AddStretchSpacer()
        forms.toggle_button(
            sizer=control_box, parent=self,
            true_label='Stop', false_label='Run',
            ps=parent, key=constants.RUNNING_KEY,
        )
        #set sizer
        self.SetSizerAndFit(control_box)

        def on_mouse_wheel(event):
            """ Mouse wheel event """
            if event.GetWheelRotation() < 0: self._on_incr_ref_level(event)
            else: self._on_decr_ref_level(event)
        parent.plotter.Bind(wx.EVT_MOUSEWHEEL, on_mouse_wheel)
Exemplo n.º 4
0
    def _build_gui(self, vbox):

        def _form_set_freq(kv):
            return self.set_freq(kv['freq'])
            
        vbox.Add(self.scope.win, 10, wx.EXPAND)
        
        # add control area at the bottom
        self.myform = myform = form.form()
        hbox = wx.BoxSizer(wx.HORIZONTAL)
        hbox.Add((5,0), 0, 0)
        myform['freq'] = form.float_field(
            parent=self.panel, sizer=hbox, label="Center freq", weight=1,
            callback=myform.check_input_and_call(_form_set_freq,
                                                 self._set_status_msg))

        hbox.Add((5,0), 0, 0)
        g = self.u.get_gain_range()

        # some configurations don't have gain control
        if g.stop() <= g.start():
            glow = 0.0
            ghigh = 1.0
            
        else:
            glow = g.start()
            ghigh = g.stop()
            
        myform['gain'] = form.slider_field(parent=self.panel,
                                               sizer=hbox, label="Gain",
                                               weight=3,
                                               min=int(glow), max=int(ghigh),
                                               callback=self.set_gain)

        try:
            mboard_id = self.u.get_usrp_info().get("mboard_id").split(" ")[0]
            mboard_serial = self.u.get_usrp_info().get("mboard_serial")
            if mboard_serial == "":
                mboard_serial = "no serial"
            dboard_id = self.u.get_usrp_info().get("rx_id").split(" ")[0].split(",")[0]
            dboard_serial = self.u.get_usrp_info().get("rx_serial")
            if dboard_serial == "":
                dboard_serial = "no serial"
            subdev = self.u.get_subdev_spec()
            antenna = self.u.get_antenna()

            usrp_config_val = "%s (%s), %s (%s, %s, %s)" % (mboard_id, mboard_serial, dboard_id, dboard_serial, subdev, antenna)
        except:
            usrp_config_val = "Not implemented in this version."

        uhd_box = forms.static_box_sizer(parent=self.panel,
                                         label="UHD (%s)" % (uhd.get_version_string()),
                                         orient=wx.HORIZONTAL)
        usrp_config_form = forms.static_text(
            parent=self.panel,
            sizer=uhd_box,
            value=usrp_config_val,
            label="USRP",
            converter=forms.str_converter(),
        )
        vbox.Add(uhd_box, 0, wx.EXPAND)
        vbox.AddSpacer(5)

        hbox.Add((5,0), 0, 0)
        vbox.Add(hbox, 0, wx.EXPAND)

        self._build_subpanel(vbox)
Exemplo n.º 5
0
    def __init__(self, parent):
        """
		Create a new control panel.
		
		Args:
		    parent: the wx parent window
		"""
        self.parent = parent
        wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER)
        parent[SHOW_CONTROL_PANEL_KEY] = True
        parent.subscribe(SHOW_CONTROL_PANEL_KEY, self.Show)
        control_box = wx.BoxSizer(wx.VERTICAL)
        control_box.AddStretchSpacer()
        options_box = forms.static_box_sizer(
            parent=self,
            sizer=control_box,
            label='Options',
            bold=True,
            orient=wx.VERTICAL,
        )
        #average
        #forms.check_box(
        #	sizer=options_box, parent=self, label='Average',
        #	ps=parent, key=AVERAGE_KEY,
        #)
        #avg_alpha_text = forms.static_text(
        #	sizer=options_box, parent=self, label='Avg Alpha',
        #	converter=forms.float_converter(lambda x: '%.4f'%x),
        #	ps=parent, key=AVG_ALPHA_KEY, width=50,
        #)
        #avg_alpha_slider = forms.log_slider(
        #	sizer=options_box, parent=self,
        #	min_exp=AVG_ALPHA_MIN_EXP,
        #	max_exp=AVG_ALPHA_MAX_EXP,
        #	num_steps=SLIDER_STEPS,
        #	ps=parent, key=AVG_ALPHA_KEY,
        #)
        #for widget in (avg_alpha_text, avg_alpha_slider):
        #	parent.subscribe(AVERAGE_KEY, widget.Enable)
        #	widget.Enable(parent[AVERAGE_KEY])
        #begin axes box
        control_box.AddStretchSpacer()
        axes_box = forms.static_box_sizer(
            parent=self,
            sizer=control_box,
            label='Axes Options',
            bold=True,
            orient=wx.VERTICAL,
        )
        #num lines buttons
        #forms.incr_decr_buttons(
        #	parent=self, sizer=axes_box, label='Time Scale',
        #	on_incr=self._on_incr_time_scale, on_decr=self._on_decr_time_scale,
        #)
        #dyanmic range buttons
        forms.incr_decr_buttons(
            parent=self,
            sizer=axes_box,
            label='Dyn Range',
            on_incr=self._on_incr_dynamic_range,
            on_decr=self._on_decr_dynamic_range,
        )
        #ref lvl buttons
        forms.incr_decr_buttons(
            parent=self,
            sizer=axes_box,
            label='Ref Level',
            on_incr=self._on_incr_ref_level,
            on_decr=self._on_decr_ref_level,
        )
        #color mode
        forms.drop_down(
            parent=self,
            sizer=axes_box,
            width=100,
            ps=parent,
            key=COLOR_MODE_KEY,
            label='Color',
            choices=map(lambda x: x[1], COLOR_MODES),
            labels=map(lambda x: x[0], COLOR_MODES),
        )
        #autoscale
        forms.single_button(
            parent=self,
            sizer=axes_box,
            label='Autoscale',
            callback=self.parent.autoscale,
        )
        #clear
        control_box.AddStretchSpacer()
        forms.single_button(
            parent=self,
            sizer=control_box,
            label='Clear',
            callback=self._on_clear_button,
        )
        #run/stop
        forms.toggle_button(
            sizer=control_box,
            parent=self,
            true_label='Stop',
            false_label='Run',
            ps=parent,
            key=RUNNING_KEY,
        )
        #set sizer
        self.SetSizerAndFit(control_box)
Exemplo n.º 6
0
 def build_gui(self):
     self.vbox.AddSpacer(5)
     self.vbox.AddStretchSpacer()
     ##################################################
     # Baseband controls
     ##################################################
     bb_vbox = forms.static_box_sizer(parent=self.panel, label="Baseband Modulation", orient=wx.VERTICAL, bold=True)
     self.vbox.Add(bb_vbox, 0, wx.EXPAND)
     sine_bb_hbox = wx.BoxSizer(wx.HORIZONTAL)
     sweep_bb_hbox = wx.BoxSizer(wx.HORIZONTAL)
     tone_bb_hbox = wx.BoxSizer(wx.HORIZONTAL)
     self.vbox.AddSpacer(10)
     self.vbox.AddStretchSpacer()
     #callback to show/hide forms
     def set_type(type):
         sine_bb_hbox.ShowItems(type == gr.GR_SIN_WAVE)
         sweep_bb_hbox.ShowItems(type == 'sweep')
         tone_bb_hbox.ShowItems(type == '2tone')
         self.vbox.Layout()
     self.tb.subscribe(usrp_siggen.TYPE_KEY, set_type)
     #create sine forms
     sine_bb_hbox.AddSpacer(10)
     forms.text_box(
         parent=self.panel, sizer=sine_bb_hbox,
         label='Frequency (Hz)',
         ps=self.tb,
         key=usrp_siggen.WAVEFORM_FREQ_KEY,
         converter=forms.float_converter(),
     )
     sine_bb_hbox.AddStretchSpacer()
     #create sweep forms
     sweep_bb_hbox.AddSpacer(10)
     forms.text_box(
         parent=self.panel, sizer=sweep_bb_hbox,
         label='Sweep Width (Hz)',
         ps=self.tb,
         key=usrp_siggen.WAVEFORM_FREQ_KEY,
         converter=forms.float_converter(),
     )
     sweep_bb_hbox.AddStretchSpacer()
     forms.text_box(
         parent=self.panel, sizer=sweep_bb_hbox,
         label='Sweep Rate (Hz)',
         ps=self.tb,
         key=usrp_siggen.WAVEFORM2_FREQ_KEY,
         converter=forms.float_converter(),
     )
     sweep_bb_hbox.AddStretchSpacer()
     #create 2tone forms
     tone_bb_hbox.AddSpacer(10)
     forms.text_box(
         parent=self.panel, sizer=tone_bb_hbox,
         label='Tone 1 (Hz)',
         ps=self.tb,
         key=usrp_siggen.WAVEFORM_FREQ_KEY,
         converter=forms.float_converter(),
     )
     tone_bb_hbox.AddStretchSpacer()
     forms.text_box(
         parent=self.panel, sizer=tone_bb_hbox,
         label='Tone 2 (Hz)',
         ps=self.tb,
         key=usrp_siggen.WAVEFORM2_FREQ_KEY,
         converter=forms.float_converter(),
     )
     tone_bb_hbox.AddStretchSpacer()
     forms.radio_buttons(
         parent=self.panel, sizer=bb_vbox,
         choices=usrp_siggen.waveforms.keys(),
         labels=usrp_siggen.waveforms.values(),
         ps=self.tb,
         key=usrp_siggen.TYPE_KEY,
         style=wx.NO_BORDER | wx.RA_HORIZONTAL,
     )
     bb_vbox.AddSpacer(10)
     bb_vbox.Add(sine_bb_hbox, 0, wx.EXPAND)
     bb_vbox.Add(sweep_bb_hbox, 0, wx.EXPAND)
     bb_vbox.Add(tone_bb_hbox, 0, wx.EXPAND)
     set_type(self.tb[usrp_siggen.TYPE_KEY])
     ##################################################
     # Frequency controls
     ##################################################
     fc_vbox = forms.static_box_sizer(parent=self.panel, label="Center Frequency", orient=wx.VERTICAL, bold=True)
     fc_vbox.AddSpacer(5)
     # First row of frequency controls (center frequency)
     freq_hbox = wx.BoxSizer(wx.HORIZONTAL)
     fc_vbox.Add(freq_hbox, 0, wx.EXPAND)
     fc_vbox.AddSpacer(10)
     # Second row of frequency controls (results)
     tr_hbox = wx.BoxSizer(wx.HORIZONTAL)
     fc_vbox.Add(tr_hbox, 0, wx.EXPAND)
     fc_vbox.AddSpacer(5)
     # Add frequency controls to top window sizer
     self.vbox.Add(fc_vbox, 0, wx.EXPAND)
     self.vbox.AddSpacer(10)
     self.vbox.AddStretchSpacer()
     freq_hbox.AddSpacer(5)
     forms.text_box(
         parent=self.panel, sizer=freq_hbox,
         proportion=1,
         converter=forms.float_converter(),
         ps=self.tb,
         key=usrp_siggen.TX_FREQ_KEY,
     )
     freq_hbox.AddSpacer(10)
     forms.slider(
         parent=self.panel, sizer=freq_hbox,
         proportion=2,
         ps=self.tb,
         key=usrp_siggen.TX_FREQ_KEY,
         minimum=self.tb[usrp_siggen.FREQ_RANGE_KEY][0],
         maximum=self.tb[usrp_siggen.FREQ_RANGE_KEY][1],
         num_steps=100,
     )
     freq_hbox.AddSpacer(5)
     tr_hbox.AddSpacer(5)
     forms.static_text(
         parent=self.panel, sizer=tr_hbox,
         label='Daughterboard (Hz)',
         ps=self.tb,
         key=usrp_siggen.BB_FREQ_KEY,
         converter=forms.float_converter(),
         proportion=1,
     )
     tr_hbox.AddSpacer(10)
     forms.static_text(
         parent=self.panel, sizer=tr_hbox,
         label='USRP DDC (Hz)',
         ps=self.tb,
         key=usrp_siggen.DDC_FREQ_KEY,
         converter=forms.float_converter(),
         proportion=1,
     )
     tr_hbox.AddSpacer(5)
     ##################################################
     # Amplitude controls
     ##################################################
     amp_hbox = forms.static_box_sizer(parent=self.panel, label="Amplitude", orient=wx.VERTICAL, bold=True)
     amp_hbox.AddSpacer(5)
     # First row of amp controls (ampl)
     lvl_hbox = wx.BoxSizer(wx.HORIZONTAL)
     amp_hbox.Add(lvl_hbox, 0, wx.EXPAND)
     amp_hbox.AddSpacer(10)
     # Second row of amp controls (tx gain)
     gain_hbox = wx.BoxSizer(wx.HORIZONTAL)
     amp_hbox.Add(gain_hbox, 0, wx.EXPAND)
     amp_hbox.AddSpacer(5)
     self.vbox.Add(amp_hbox, 0, wx.EXPAND)
     self.vbox.AddSpacer(10)
     self.vbox.AddStretchSpacer()
     lvl_hbox.AddSpacer(5)
     forms.text_box(
         parent=self.panel, sizer=lvl_hbox,
         proportion=1,
         converter=forms.float_converter(),
         ps=self.tb,
         key=usrp_siggen.AMPLITUDE_KEY,
         label="Level (0.0-1.0)",
     )
     lvl_hbox.AddSpacer(10)
     forms.log_slider(
         parent=self.panel, sizer=lvl_hbox,
         proportion=2,
         ps=self.tb,
         key=usrp_siggen.AMPLITUDE_KEY,
         min_exp=-6,
         max_exp=0,
         base=10,
         num_steps=100,
     )
     lvl_hbox.AddSpacer(5)
     if self.tb[usrp_siggen.GAIN_RANGE_KEY][0] < self.tb[usrp_siggen.GAIN_RANGE_KEY][1]:
         gain_hbox.AddSpacer(5)
         forms.text_box(
             parent=self.panel, sizer=gain_hbox,
             proportion=1,
             converter=forms.float_converter(),
             ps=self.tb,
             key=usrp_siggen.GAIN_KEY,
             label="TX Gain (dB)",
         )
         gain_hbox.AddSpacer(10)
         forms.slider(
             parent=self.panel, sizer=gain_hbox,
             proportion=2,
             ps=self.tb,
             key=usrp_siggen.GAIN_KEY,
             minimum=self.tb[usrp_siggen.GAIN_RANGE_KEY][0],
             maximum=self.tb[usrp_siggen.GAIN_RANGE_KEY][1],
             step_size=self.tb[usrp_siggen.GAIN_RANGE_KEY][2],
         )
         gain_hbox.AddSpacer(5)
     ##################################################
     # Sample Rate controls
     ##################################################
     sam_hbox = forms.static_box_sizer(parent=self.panel, label="Sample Rate", orient=wx.HORIZONTAL, bold=True)
     self.vbox.Add(sam_hbox, 0, wx.EXPAND)
     self.vbox.AddSpacer(10)
     self.vbox.AddStretchSpacer()
     sam_hbox.AddSpacer(5)
     forms.text_box(
         parent=self.panel, sizer=sam_hbox,
         converter=forms.int_converter(),
         ps=self.tb,
         key=usrp_siggen.INTERP_KEY,
         label="Interpolation",
     )
     sam_hbox.AddStretchSpacer(20)
     forms.static_text(
         parent=self.panel, sizer=sam_hbox,
         label='Sample Rate (sps)',
         ps=self.tb,
         key=usrp_siggen.SAMP_RATE_KEY,
         converter=forms.float_converter(),
     )
     sam_hbox.AddStretchSpacer(20)
     forms.static_text(
         parent=self.panel, sizer=sam_hbox,
         label='Link Rate (bits/sec)',
         ps=self.tb,
         key=usrp_siggen.LINK_RATE_KEY,
         converter=forms.float_converter(),
     )
     sam_hbox.AddSpacer(5)
     ##################################################
     # USRP status
     ##################################################
     u2_hbox = forms.static_box_sizer(parent=self.panel, label="USRP Status", orient=wx.HORIZONTAL, bold=True)
     self.vbox.Add(u2_hbox, 0, wx.EXPAND)
     self.vbox.AddSpacer(10)
     self.vbox.AddStretchSpacer()
     u2_hbox.AddSpacer(10)
     forms.static_text(
         parent=self.panel, sizer=u2_hbox,
         ps=self.tb,
         key=usrp_siggen.DESC_KEY,
         converter=forms.str_converter(),
     )
     self.vbox.AddSpacer(5)
     self.vbox.AddStretchSpacer()
Exemplo n.º 7
0
 def __init__(
     self,
     parent,
     controller,
     size,
     title,
     units,
     show_gauge,
     real,
     minval,
     maxval,
     decimal_places,
     msg_key,
     sample_rate_key,
 ):
     pubsub.__init__(self)
     wx.Panel.__init__(self, parent, style=wx.SUNKEN_BORDER)
     #setup
     self.peak_val_real = NEG_INF
     self.real = real
     self.units = units
     self.decimal_places = decimal_places
     #proxy the keys
     self.proxy(MSG_KEY, controller, msg_key)
     #initialize values
     self[RUNNING_KEY] = True
     self[VALUE_REAL_KEY] = minval
     #setup the box with display and controls
     main_box = wx.BoxSizer(wx.HORIZONTAL)
     sizer = forms.static_box_sizer(
         parent=self,
         sizer=main_box,
         label=title,
         bold=True,
         orient=wx.VERTICAL,
         proportion=1,
     )
     sizer.AddStretchSpacer()
     forms.static_text(
         parent=self,
         sizer=sizer,
         ps=self,
         key=VALUE_REPR_KEY,
         width=size[0],
         converter=forms.str_converter(),
     )
     sizer.AddStretchSpacer()
     self.gauge_real = forms.gauge(
         parent=self,
         sizer=sizer,
         style=wx.GA_HORIZONTAL,
         ps=self,
         key=VALUE_REAL_KEY,
         length=size[0],
         minimum=minval,
         maximum=maxval,
         num_steps=DEFAULT_GAUGE_RANGE,
     )
     #hide/show gauges
     self.gauge_real.ShowItems(show_gauge)
     self.SetSizerAndFit(main_box)
     #register events
     self.subscribe(MSG_KEY, self.handle_msg)
Exemplo n.º 8
0
    def _build_gui(self, vbox):
        vbox.Add(self.fft.win, 1, wx.EXPAND)
        vbox.Add(self.scope.win, 1, wx.EXPAND)
        vbox.AddSpacer(3)

        # add control area at the bottom
        self.myform = myform = form.form()

        ##################################################
        # DC Offset controls
        ##################################################

        dc_offset_vbox = forms.static_box_sizer(parent=self.panel,
                label="DC Offset Correction",
                orient=wx.VERTICAL,
                bold=True)
        dc_offset_vbox.AddSpacer(3)
        # First row of sample rate controls
        dc_offset_hbox = wx.BoxSizer(wx.HORIZONTAL)
        dc_offset_vbox.Add(dc_offset_hbox, 0, wx.EXPAND)
        dc_offset_vbox.AddSpacer(3)

        # Add frequency controls to top window sizer
        vbox.Add(dc_offset_vbox, 0, wx.EXPAND)
        vbox.AddSpacer(3)

        dc_offset_hbox.AddSpacer(3)
        self.dc_offset_real_text = forms.text_box(
                parent=self.panel, sizer=dc_offset_hbox,
                label='Real',
                proportion=1,
                converter=forms.float_converter(),
                ps=self,
                key='dc_offset_real',
                )
        dc_offset_hbox.AddSpacer(3)

        self.dc_offset_real_slider = forms.slider(
                parent=self.panel, sizer=dc_offset_hbox,
                proportion=3,
                minimum=-1,
                maximum=+1,
                step_size=0.0005,
                ps=self,
                key='dc_offset_real',
                )
        dc_offset_hbox.AddSpacer(3)

        dc_offset_hbox.AddSpacer(3)
        self.dc_offset_imag_text = forms.text_box(
                parent=self.panel, sizer=dc_offset_hbox,
                label='Imag',
                proportion=1,
                converter=forms.float_converter(),
                ps=self,
                key='dc_offset_imag',
                )
        dc_offset_hbox.AddSpacer(3)

        self.dc_offset_imag_slider = forms.slider(
                parent=self.panel, sizer=dc_offset_hbox,
                proportion=3,
                minimum=-1,
                maximum=+1,
                step_size=0.0005,
                ps=self,
                key='dc_offset_imag',
                )
        dc_offset_hbox.AddSpacer(3)

        ##################################################
        # IQ Imbalance controls
        ##################################################
        iq_balance_vbox = forms.static_box_sizer(parent=self.panel,
                                         label="IQ Imbalance Correction",
                                         orient=wx.VERTICAL,
                                         bold=True)
        iq_balance_vbox.AddSpacer(3)
        # First row of sample rate controls
        iq_balance_hbox = wx.BoxSizer(wx.HORIZONTAL)
        iq_balance_vbox.Add(iq_balance_hbox, 0, wx.EXPAND)
        iq_balance_vbox.AddSpacer(3)

        # Add frequency controls to top window sizer
        vbox.Add(iq_balance_vbox, 0, wx.EXPAND)
        vbox.AddSpacer(3)

        iq_balance_hbox.AddSpacer(3)
        self.iq_balance_mag_text = forms.text_box(
            parent=self.panel, sizer=iq_balance_hbox,
            label='Mag',
            proportion=1,
            converter=forms.float_converter(),
            ps=self,
            key=KEY_IQ_BAL_I,
        )
        iq_balance_hbox.AddSpacer(3)

        self.iq_balance_mag_slider = forms.slider(
            parent=self.panel, sizer=iq_balance_hbox,
            proportion=3,
            minimum=-1,
            maximum=+1,
            step_size=0.00025,
            ps=self,
            key=KEY_IQ_BAL_I,
        )
        iq_balance_hbox.AddSpacer(3)

        iq_balance_hbox.AddSpacer(3)
        self.iq_balance_pha_text = forms.text_box(
            parent=self.panel, sizer=iq_balance_hbox,
            label='Phase',
            proportion=1,
            converter=forms.float_converter(),
            ps=self,
            key=KEY_IQ_BAL_Q,
        )
        iq_balance_hbox.AddSpacer(3)

        self.iq_balance_pha_slider = forms.slider(
            parent=self.panel, sizer=iq_balance_hbox,
            proportion=3,
            minimum=-1,
            maximum=+1,
            step_size=0.00025,
            ps=self,
            key=KEY_IQ_BAL_Q,
        )
        iq_balance_hbox.AddSpacer(3)