def __init__(self): gr.top_block.__init__(self, "Top Block") Qt.QWidget.__init__(self) self.setWindowTitle("Top Block") try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "top_block") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 7.5e6 self.decim = decim = 150 self.xlate_bw = xlate_bw = 25e3 self.usrp_gain = usrp_gain = 33 self.rx_antenna = rx_antenna = "RX2" self.port = port = 47110 self.phase = phase = 0 self.mlen = mlen = 100 self.keep_plot = keep_plot = 16 self.keep = keep = 1 self.ip = ip = "localhost" self.freq_offset = freq_offset = 200e3 self.fire = fire = 0 self.device_args = device_args = "type=x300, master_clock_rate=150e6" self.calib_freq_offset = calib_freq_offset = 2e6 self.cal_freq = cal_freq = 450e6 self.baseband_rate = baseband_rate = int(samp_rate/decim) self.angular_resolution = angular_resolution = 360 self.N_keep = N_keep = 1000 self.N = N = 512 self.M_keep = M_keep = 100 ################################################## # Blocks ################################################## self.tabw = Qt.QTabWidget() self.tabw_widget_0 = Qt.QWidget() self.tabw_layout_0 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.tabw_widget_0) self.tabw_grid_layout_0 = Qt.QGridLayout() self.tabw_layout_0.addLayout(self.tabw_grid_layout_0) self.tabw.addTab(self.tabw_widget_0, "Synchronization Setup") self.tabw_widget_1 = Qt.QWidget() self.tabw_layout_1 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.tabw_widget_1) self.tabw_grid_layout_1 = Qt.QGridLayout() self.tabw_layout_1.addLayout(self.tabw_grid_layout_1) self.tabw.addTab(self.tabw_widget_1, "DOA") self.top_layout.addWidget(self.tabw) self._xlate_bw_layout = Qt.QVBoxLayout() self._xlate_bw_tool_bar = Qt.QToolBar(self) self._xlate_bw_layout.addWidget(self._xlate_bw_tool_bar) self._xlate_bw_tool_bar.addWidget(Qt.QLabel("Xlate Bandwidth"+": ")) self._xlate_bw_counter = Qwt.QwtCounter() self._xlate_bw_counter.setRange(0, baseband_rate, 1) self._xlate_bw_counter.setNumButtons(2) self._xlate_bw_counter.setValue(self.xlate_bw) self._xlate_bw_tool_bar.addWidget(self._xlate_bw_counter) self._xlate_bw_counter.valueChanged.connect(self.set_xlate_bw) self._xlate_bw_slider = Qwt.QwtSlider(None, Qt.Qt.Horizontal, Qwt.QwtSlider.BottomScale, Qwt.QwtSlider.BgSlot) self._xlate_bw_slider.setRange(0, baseband_rate, 1) self._xlate_bw_slider.setValue(self.xlate_bw) self._xlate_bw_slider.setMinimumWidth(200) self._xlate_bw_slider.valueChanged.connect(self.set_xlate_bw) self._xlate_bw_layout.addWidget(self._xlate_bw_slider) self.tabw_grid_layout_0.addLayout(self._xlate_bw_layout, 0,2,1,1) self._phase_layout = Qt.QVBoxLayout() self._phase_tool_bar = Qt.QToolBar(self) self._phase_layout.addWidget(self._phase_tool_bar) self._phase_tool_bar.addWidget(Qt.QLabel("phase"+": ")) self._phase_counter = Qwt.QwtCounter() self._phase_counter.setRange(-3, 3, 0.001) self._phase_counter.setNumButtons(2) self._phase_counter.setValue(self.phase) self._phase_tool_bar.addWidget(self._phase_counter) self._phase_counter.valueChanged.connect(self.set_phase) self._phase_slider = Qwt.QwtSlider(None, Qt.Qt.Horizontal, Qwt.QwtSlider.BottomScale, Qwt.QwtSlider.BgSlot) self._phase_slider.setRange(-3, 3, 0.001) self._phase_slider.setValue(self.phase) self._phase_slider.setMinimumWidth(200) self._phase_slider.valueChanged.connect(self.set_phase) self._phase_layout.addWidget(self._phase_slider) self.top_layout.addLayout(self._phase_layout) self._keep_tool_bar = Qt.QToolBar(self) self._keep_tool_bar.addWidget(Qt.QLabel("Keep input vectors"+": ")) self._keep_line_edit = Qt.QLineEdit(str(self.keep)) self._keep_tool_bar.addWidget(self._keep_line_edit) self._keep_line_edit.returnPressed.connect( lambda: self.set_keep(int(self._keep_line_edit.text().toAscii()))) self.tabw_grid_layout_1.addWidget(self._keep_tool_bar, 2,1,1,1) self._freq_offset_layout = Qt.QVBoxLayout() self._freq_offset_tool_bar = Qt.QToolBar(self) self._freq_offset_layout.addWidget(self._freq_offset_tool_bar) self._freq_offset_tool_bar.addWidget(Qt.QLabel("Xlate Freq. Offset"+": ")) self._freq_offset_counter = Qwt.QwtCounter() self._freq_offset_counter.setRange(-samp_rate/2, samp_rate/2, 1) self._freq_offset_counter.setNumButtons(2) self._freq_offset_counter.setValue(self.freq_offset) self._freq_offset_tool_bar.addWidget(self._freq_offset_counter) self._freq_offset_counter.valueChanged.connect(self.set_freq_offset) self._freq_offset_slider = Qwt.QwtSlider(None, Qt.Qt.Horizontal, Qwt.QwtSlider.BottomScale, Qwt.QwtSlider.BgSlot) self._freq_offset_slider.setRange(-samp_rate/2, samp_rate/2, 1) self._freq_offset_slider.setValue(self.freq_offset) self._freq_offset_slider.setMinimumWidth(200) self._freq_offset_slider.valueChanged.connect(self.set_freq_offset) self._freq_offset_layout.addWidget(self._freq_offset_slider) self.tabw_grid_layout_0.addLayout(self._freq_offset_layout, 0,1,1,1) self.xlate_interleave_0 = xlate_interleave( samp_rate=samp_rate, decim=decim, freq_offset=freq_offset, xlate_bw=xlate_bw, ) self._usrp_gain_tool_bar = Qt.QToolBar(self) self._usrp_gain_tool_bar.addWidget(Qt.QLabel("USRP RF Gain"+": ")) self._usrp_gain_line_edit = Qt.QLineEdit(str(self.usrp_gain)) self._usrp_gain_tool_bar.addWidget(self._usrp_gain_line_edit) self._usrp_gain_line_edit.returnPressed.connect( lambda: self.set_usrp_gain(eng_notation.str_to_num(self._usrp_gain_line_edit.text().toAscii()))) self.tabw_grid_layout_0.addWidget(self._usrp_gain_tool_bar, 0,3,1,1) self.qtgui_time_sink_x_1 = qtgui.time_sink_f( angular_resolution, #size 1.0/1000.0, #samp_rate "MUSIC Spectrum", #name 1 #number of inputs ) self.qtgui_time_sink_x_1.set_update_time(0.10) self.qtgui_time_sink_x_1.set_y_axis(-3.0, 20.0) self.qtgui_time_sink_x_1.enable_tags(-1, False) self.qtgui_time_sink_x_1.set_trigger_mode(qtgui.TRIG_MODE_FREE, qtgui.TRIG_SLOPE_POS, 0.0, 0, 0, "") self._qtgui_time_sink_x_1_win = sip.wrapinstance(self.qtgui_time_sink_x_1.pyqwidget(), Qt.QWidget) self.tabw_grid_layout_1.addWidget(self._qtgui_time_sink_x_1_win, 0,0,2,1) self.missile_launcher_0 = misc.async_missile_launcher(azimuth=0.0, elevation=25.0, threshold=0.0, recal_threshold=0.0) self.misc_numbersink_0 = misc.numbersink(float, "Angle", "Degrees", samp_rate, 0, 360, 1.0, 10, 0.0, 15, False, 0, "Angle", False, True) self._misc_numbersink_0_win = self.misc_numbersink_0.get_pyqwidget() self.tabw_grid_layout_1.addWidget(self._misc_numbersink_0_win, 1,1,1,1) self.misc_music_doa_1 = misc.music_doa_helper(m=2, n=1, nsamples=N, angular_resolution=angular_resolution, frequency=cal_freq, array_spacing=0.132, antenna_array=[[0,0],[1,0]], output_spectrum=True) self.misc_compass_0 = misc.compass(False, "nice", "simple", 15) self._misc_compass_0_win = self.misc_compass_0.get_pyqwidget() self.tabw_grid_layout_1.addWidget(self._misc_compass_0_win, 0,1,1,1) self._fire_tool_bar = Qt.QToolBar(self) self._fire_tool_bar.addWidget(Qt.QLabel("FIRE!"+": ")) self._fire_line_edit = Qt.QLineEdit(str(self.fire)) self._fire_tool_bar.addWidget(self._fire_line_edit) self._fire_line_edit.returnPressed.connect( lambda: self.set_fire(int(self._fire_line_edit.text().toAscii()))) self.tabw_grid_layout_1.addWidget(self._fire_tool_bar, 2,0,1,1) self._calib_freq_offset_layout = Qt.QVBoxLayout() self._calib_freq_offset_tool_bar = Qt.QToolBar(self) self._calib_freq_offset_layout.addWidget(self._calib_freq_offset_tool_bar) self._calib_freq_offset_tool_bar.addWidget(Qt.QLabel("Calibration Tone Offset"+": ")) self._calib_freq_offset_counter = Qwt.QwtCounter() self._calib_freq_offset_counter.setRange(-samp_rate/2, samp_rate/2, 1) self._calib_freq_offset_counter.setNumButtons(2) self._calib_freq_offset_counter.setValue(self.calib_freq_offset) self._calib_freq_offset_tool_bar.addWidget(self._calib_freq_offset_counter) self._calib_freq_offset_counter.valueChanged.connect(self.set_calib_freq_offset) self._calib_freq_offset_slider = Qwt.QwtSlider(None, Qt.Qt.Horizontal, Qwt.QwtSlider.BottomScale, Qwt.QwtSlider.BgSlot) self._calib_freq_offset_slider.setRange(-samp_rate/2, samp_rate/2, 1) self._calib_freq_offset_slider.setValue(self.calib_freq_offset) self._calib_freq_offset_slider.setMinimumWidth(200) self._calib_freq_offset_slider.valueChanged.connect(self.set_calib_freq_offset) self._calib_freq_offset_layout.addWidget(self._calib_freq_offset_slider) self.tabw_grid_layout_0.addLayout(self._calib_freq_offset_layout, 0,0,1,1) self.blocks_vector_to_stream_0_0 = blocks.vector_to_stream(gr.sizeof_float*1, angular_resolution) self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate) self.blocks_stream_to_vector_0 = blocks.stream_to_vector(gr.sizeof_gr_complex*1, N) self.blocks_null_sink_0 = blocks.null_sink(gr.sizeof_float*1) self.blocks_nlog10_ff_0 = blocks.nlog10_ff(10, angular_resolution, 0) self.blocks_multiply_const_vxx_1 = blocks.multiply_const_vcc((math.e**(1.0j*phase), )) self.blocks_keep_one_in_n_1 = blocks.keep_one_in_n(gr.sizeof_float*angular_resolution, keep_plot) self.blocks_keep_one_in_n_0 = blocks.keep_one_in_n(gr.sizeof_gr_complex*N, keep) self.blocks_add_const_vxx_0 = blocks.add_const_vff((0, )) self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 200e3, 1, 0) ################################################## # Connections ################################################## self.connect((self.blocks_keep_one_in_n_0, 0), (self.misc_music_doa_1, 0)) self.connect((self.misc_music_doa_1, 0), (self.blocks_add_const_vxx_0, 0)) self.connect((self.blocks_multiply_const_vxx_1, 0), (self.xlate_interleave_0, 1)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_throttle_0, 0)) self.connect((self.blocks_throttle_0, 0), (self.blocks_multiply_const_vxx_1, 0)) self.connect((self.blocks_throttle_0, 0), (self.xlate_interleave_0, 0)) self.connect((self.xlate_interleave_0, 0), (self.blocks_stream_to_vector_0, 0)) self.connect((self.blocks_stream_to_vector_0, 0), (self.blocks_keep_one_in_n_0, 0)) self.connect((self.blocks_add_const_vxx_0, 0), (self.misc_numbersink_0, 0)) self.connect((self.blocks_add_const_vxx_0, 0), (self.missile_launcher_0, 0)) self.connect((self.blocks_add_const_vxx_0, 0), (self.misc_compass_0, 0)) self.connect((self.misc_music_doa_1, 1), (self.blocks_null_sink_0, 0)) self.connect((self.blocks_keep_one_in_n_1, 0), (self.blocks_nlog10_ff_0, 0)) self.connect((self.blocks_nlog10_ff_0, 0), (self.blocks_vector_to_stream_0_0, 0)) self.connect((self.misc_music_doa_1, 2), (self.blocks_keep_one_in_n_1, 0)) self.connect((self.blocks_vector_to_stream_0_0, 0), (self.qtgui_time_sink_x_1, 0))
def __init__(self): gr.top_block.__init__(self, "new Qt GUI blocks test") Qt.QWidget.__init__(self) self.setWindowTitle("new Qt GUI blocks test") try: self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc')) except: pass self.top_scroll_layout = Qt.QVBoxLayout() self.setLayout(self.top_scroll_layout) self.top_scroll = Qt.QScrollArea() self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame) self.top_scroll_layout.addWidget(self.top_scroll) self.top_scroll.setWidgetResizable(True) self.top_widget = Qt.QWidget() self.top_scroll.setWidget(self.top_widget) self.top_layout = Qt.QVBoxLayout(self.top_widget) self.top_grid_layout = Qt.QGridLayout() self.top_layout.addLayout(self.top_grid_layout) self.settings = Qt.QSettings("GNU Radio", "qt_blocks_test") self.restoreGeometry(self.settings.value("geometry").toByteArray()) ################################################## # Variables ################################################## self.samp_rate = samp_rate = 32000 self.row_span = row_span = 2 self.col_span = col_span = 2 ################################################## # Blocks ################################################## self.tab1 = Qt.QTabWidget() self.tab1_widget_0 = Qt.QWidget() self.tab1_layout_0 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.tab1_widget_0) self.tab1_grid_layout_0 = Qt.QGridLayout() self.tab1_layout_0.addLayout(self.tab1_grid_layout_0) self.tab1.addTab(self.tab1_widget_0, "") self.top_grid_layout.addWidget(self.tab1, 1, 0, 1, 2) self.tab0 = Qt.QTabWidget() self.tab0_widget_0 = Qt.QWidget() self.tab0_layout_0 = Qt.QBoxLayout(Qt.QBoxLayout.TopToBottom, self.tab0_widget_0) self.tab0_grid_layout_0 = Qt.QGridLayout() self.tab0_layout_0.addLayout(self.tab0_grid_layout_0) self.tab0.addTab(self.tab0_widget_0, "") self.top_grid_layout.addWidget(self.tab0, 0, 0, 1, 2) self.misc_numbersink_0 = misc.numbersink(complex, "Number Plot", "Units", samp_rate, -100.0, 100.0, 1.0, 10, 0.0, 15, False, 0, "Number Plot", False, True) self._misc_numbersink_0_win = self.misc_numbersink_0.get_pyqwidget() self.tab1_grid_layout_0.addWidget(self._misc_numbersink_0_win, 0, 0, 1, 1) self.misc_compass_0_0 = misc.compass(False, "nice", "simple", 15) self._misc_compass_0_0_win = self.misc_compass_0_0.get_pyqwidget() self.tab0_grid_layout_0.addWidget(self._misc_compass_0_0_win, 0, 1, 1, 2) self.misc_compass_0 = misc.compass(False, "nice", "simple", 15) self._misc_compass_0_win = self.misc_compass_0.get_pyqwidget() self.tab0_grid_layout_0.addWidget(self._misc_compass_0_win, 0, 0, 1, 2) self.blocks_throttle_1 = blocks.throttle(gr.sizeof_gr_complex*1, samp_rate) self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vff((180, )) self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((180, )) self.blocks_complex_to_float_0 = blocks.complex_to_float(1) self.analog_sig_source_x_0 = analog.sig_source_c(samp_rate, analog.GR_COS_WAVE, 1000, 1, 0) ################################################## # Connections ################################################## self.connect((self.blocks_throttle_1, 0), (self.misc_numbersink_0, 0)) self.connect((self.blocks_complex_to_float_0, 0), (self.blocks_multiply_const_vxx_0, 0)) self.connect((self.blocks_throttle_1, 0), (self.blocks_complex_to_float_0, 0)) self.connect((self.analog_sig_source_x_0, 0), (self.blocks_throttle_1, 0)) self.connect((self.blocks_complex_to_float_0, 1), (self.blocks_multiply_const_vxx_0_0, 0)) self.connect((self.blocks_multiply_const_vxx_0, 0), (self.misc_compass_0, 0)) self.connect((self.blocks_multiply_const_vxx_0_0, 0), (self.misc_compass_0_0, 0))