diff options
Diffstat (limited to 'gnuradio-examples/python')
-rwxr-xr-x | gnuradio-examples/python/digital/benchmark_qt_loopback.py | 4 | ||||
-rwxr-xr-x | gnuradio-examples/python/digital/benchmark_qt_rx.py | 15 | ||||
-rw-r--r-- | gnuradio-examples/python/digital/qt_digital_window.py | 267 | ||||
-rw-r--r-- | gnuradio-examples/python/digital/qt_digital_window.ui | 910 | ||||
-rw-r--r-- | gnuradio-examples/python/digital/qt_rx_window.py | 102 | ||||
-rw-r--r-- | gnuradio-examples/python/digital/qt_rx_window.ui | 668 | ||||
-rw-r--r-- | gnuradio-examples/python/usrp2/qt_wfm_interface.py | 99 | ||||
-rw-r--r-- | gnuradio-examples/python/usrp2/qt_wfm_interface.ui | 253 | ||||
-rwxr-xr-x | gnuradio-examples/python/usrp2/usrp2_wfm_qt.py | 352 |
9 files changed, 1959 insertions, 711 deletions
diff --git a/gnuradio-examples/python/digital/benchmark_qt_loopback.py b/gnuradio-examples/python/digital/benchmark_qt_loopback.py index 3fd76fdf9..cd77f0748 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_loopback.py +++ b/gnuradio-examples/python/digital/benchmark_qt_loopback.py @@ -229,10 +229,10 @@ class my_top_block(gr.top_block): fftsize = 2048 self.snk_tx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, - -1/2, 1/2, + 0, 1, "Tx", True, True, False, True, True) self.snk_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, - -1/2, 1/2, + 0, 1, "Rx", True, True, False, True, True) self.snk_tx.set_frequency_axis(-80, 0) diff --git a/gnuradio-examples/python/digital/benchmark_qt_rx.py b/gnuradio-examples/python/digital/benchmark_qt_rx.py index 62f9f34a3..33cf94a5c 100755 --- a/gnuradio-examples/python/digital/benchmark_qt_rx.py +++ b/gnuradio-examples/python/digital/benchmark_qt_rx.py @@ -48,7 +48,7 @@ try: except ImportError: print "Error: could not find qt_rx_window.py:" print "\tYou must first build this from qt_rx_window.ui with the following command:" - print "\t pyuic4 qt_rx_window.ui -o qt_rx_window.py" + print "\t\"pyuic4 qt_rx_window.ui -o qt_rx_window.py\"" sys.exit(1) #import os @@ -213,12 +213,13 @@ class my_top_block(gr.top_block): if self.gui_on: self.qapp = QtGui.QApplication(sys.argv) fftsize = 2048 - + + bw_in = self.u.adc_rate() / self.decim() self.snk_rxin = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, - -1/2, 1/2, + self._rx_freq, bw_in, "Received", True, True, False, True, True, False) self.snk_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, - -1/2, 1/2, + 0, self._bitrate, "Post-Synchronizer", True, True, False, True, True, False) self.snk_rxin.set_frequency_axis(-60, 60) @@ -285,6 +286,12 @@ class my_top_block(gr.top_block): self._decim = decim self.u.set_decim(self._decim) + if(self.gui_on): + bw_in = self.u.adc_rate() / self._decim + self._bitrate = bw_in / self._samples_per_symbol + self.snk_rxin.set_frequency_range(0, -bw_in/2.0, bw_in/2.0) + self.snk_rx.set_frequency_range(0, -self._bitrate/2.0, self._bitrate/2.0) + def frequency(self): return self._rx_freq diff --git a/gnuradio-examples/python/digital/qt_digital_window.py b/gnuradio-examples/python/digital/qt_digital_window.py index 5e8885918..e3feb57c9 100644 --- a/gnuradio-examples/python/digital/qt_digital_window.py +++ b/gnuradio-examples/python/digital/qt_digital_window.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'qt_digital_window.ui' # -# Created: Thu Jun 18 08:08:38 2009 +# Created: Fri Jul 3 10:03:54 2009 # by: PyQt4 UI code generator 4.4.3 # # WARNING! All changes made in this file will be lost! @@ -12,94 +12,210 @@ from PyQt4 import QtCore, QtGui class Ui_DigitalWindow(object): def setupUi(self, DigitalWindow): DigitalWindow.setObjectName("DigitalWindow") - DigitalWindow.resize(1236, 739) + DigitalWindow.resize(1050, 752) self.centralwidget = QtGui.QWidget(DigitalWindow) self.centralwidget.setObjectName("centralwidget") - self.closeButton = QtGui.QPushButton(self.centralwidget) - self.closeButton.setGeometry(QtCore.QRect(1120, 640, 101, 31)) - self.closeButton.setObjectName("closeButton") + self.gridLayout = QtGui.QGridLayout(self.centralwidget) + self.gridLayout.setObjectName("gridLayout") + self.verticalLayout_2 = QtGui.QVBoxLayout() + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.sysBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sysBox.sizePolicy().hasHeightForWidth()) + self.sysBox.setSizePolicy(sizePolicy) + self.sysBox.setMinimumSize(QtCore.QSize(240, 60)) + self.sysBox.setMaximumSize(QtCore.QSize(240, 16777215)) + self.sysBox.setObjectName("sysBox") + self.formLayoutWidget = QtGui.QWidget(self.sysBox) + self.formLayoutWidget.setGeometry(QtCore.QRect(10, 20, 221, 31)) + self.formLayoutWidget.setObjectName("formLayoutWidget") + self.formLayout = QtGui.QFormLayout(self.formLayoutWidget) + self.formLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout.setVerticalSpacing(20) + self.formLayout.setObjectName("formLayout") + self.sampleRateEdit = QtGui.QLineEdit(self.formLayoutWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sampleRateEdit.sizePolicy().hasHeightForWidth()) + self.sampleRateEdit.setSizePolicy(sizePolicy) + self.sampleRateEdit.setMinimumSize(QtCore.QSize(100, 26)) + self.sampleRateEdit.setMaximumSize(QtCore.QSize(100, 26)) + self.sampleRateEdit.setObjectName("sampleRateEdit") + self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.sampleRateEdit) + self.sampleRateLabel = QtGui.QLabel(self.formLayoutWidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sampleRateLabel.sizePolicy().hasHeightForWidth()) + self.sampleRateLabel.setSizePolicy(sizePolicy) + self.sampleRateLabel.setMinimumSize(QtCore.QSize(0, 20)) + self.sampleRateLabel.setMaximumSize(QtCore.QSize(16777215, 20)) + self.sampleRateLabel.setObjectName("sampleRateLabel") + self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.sampleRateLabel) + self.verticalLayout_2.addWidget(self.sysBox) + spacerItem = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_2.addItem(spacerItem) + self.gridLayout.addLayout(self.verticalLayout_2, 2, 0, 1, 1) + self.channelModeBox = QtGui.QGroupBox(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.channelModeBox.sizePolicy().hasHeightForWidth()) + self.channelModeBox.setSizePolicy(sizePolicy) + self.channelModeBox.setMinimumSize(QtCore.QSize(245, 130)) + self.channelModeBox.setMaximumSize(QtCore.QSize(245, 16777215)) + self.channelModeBox.setObjectName("channelModeBox") + self.formLayoutWidget_2 = QtGui.QWidget(self.channelModeBox) + self.formLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 231, 98)) + self.formLayoutWidget_2.setObjectName("formLayoutWidget_2") + self.formLayout_2 = QtGui.QFormLayout(self.formLayoutWidget_2) + self.formLayout_2.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_2.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow) + self.formLayout_2.setObjectName("formLayout_2") + self.snrLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.snrLabel.setObjectName("snrLabel") + self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.snrLabel) + self.snrEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.snrEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.snrEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.snrEdit.setObjectName("snrEdit") + self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.snrEdit) + self.freqLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.freqLabel.setObjectName("freqLabel") + self.formLayout_2.setWidget(1, QtGui.QFormLayout.LabelRole, self.freqLabel) + self.freqEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.freqEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.freqEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.freqEdit.setObjectName("freqEdit") + self.formLayout_2.setWidget(1, QtGui.QFormLayout.FieldRole, self.freqEdit) + self.timeLabel = QtGui.QLabel(self.formLayoutWidget_2) + self.timeLabel.setObjectName("timeLabel") + self.formLayout_2.setWidget(2, QtGui.QFormLayout.LabelRole, self.timeLabel) + self.timeEdit = QtGui.QLineEdit(self.formLayoutWidget_2) + self.timeEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.timeEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.timeEdit.setObjectName("timeEdit") + self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.timeEdit) + self.gridLayout.addWidget(self.channelModeBox, 2, 1, 1, 1) + self.verticalLayout_5 = QtGui.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") self.sinkFrame = QtGui.QFrame(self.centralwidget) - self.sinkFrame.setGeometry(QtCore.QRect(10, 10, 1221, 501)) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.sinkFrame.sizePolicy().hasHeightForWidth()) + self.sinkFrame.setSizePolicy(sizePolicy) + self.sinkFrame.setMinimumSize(QtCore.QSize(1000, 550)) self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) self.sinkFrame.setObjectName("sinkFrame") - self.horizontalLayoutWidget = QtGui.QWidget(self.sinkFrame) - self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 1201, 481)) - self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") - self.sinkLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget) + self.gridLayout_2 = QtGui.QGridLayout(self.sinkFrame) + self.gridLayout_2.setObjectName("gridLayout_2") + self.sinkLayout = QtGui.QHBoxLayout() self.sinkLayout.setObjectName("sinkLayout") - self.channelModeBox = QtGui.QGroupBox(self.centralwidget) - self.channelModeBox.setGeometry(QtCore.QRect(290, 520, 291, 161)) - self.channelModeBox.setObjectName("channelModeBox") - self.timeLabel = QtGui.QLabel(self.channelModeBox) - self.timeLabel.setGeometry(QtCore.QRect(10, 90, 101, 17)) - self.timeLabel.setObjectName("timeLabel") - self.timeEdit = QtGui.QLineEdit(self.channelModeBox) - self.timeEdit.setGeometry(QtCore.QRect(160, 90, 113, 23)) - self.timeEdit.setObjectName("timeEdit") - self.snrEdit = QtGui.QLineEdit(self.channelModeBox) - self.snrEdit.setGeometry(QtCore.QRect(160, 30, 113, 23)) - self.snrEdit.setObjectName("snrEdit") - self.snrLabel = QtGui.QLabel(self.channelModeBox) - self.snrLabel.setGeometry(QtCore.QRect(10, 30, 111, 20)) - self.snrLabel.setObjectName("snrLabel") - self.freqEdit = QtGui.QLineEdit(self.channelModeBox) - self.freqEdit.setGeometry(QtCore.QRect(160, 60, 113, 23)) - self.freqEdit.setObjectName("freqEdit") - self.freqLabel = QtGui.QLabel(self.channelModeBox) - self.freqLabel.setGeometry(QtCore.QRect(10, 60, 141, 17)) - self.freqLabel.setObjectName("freqLabel") + self.gridLayout_2.addLayout(self.sinkLayout, 1, 0, 1, 1) + self.verticalLayout_5.addWidget(self.sinkFrame) + self.gridLayout.addLayout(self.verticalLayout_5, 0, 0, 1, 6) + self.verticalLayout_3 = QtGui.QVBoxLayout() + self.verticalLayout_3.setObjectName("verticalLayout_3") self.rxBox = QtGui.QGroupBox(self.centralwidget) - self.rxBox.setGeometry(QtCore.QRect(590, 520, 251, 161)) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.rxBox.sizePolicy().hasHeightForWidth()) + self.rxBox.setSizePolicy(sizePolicy) + self.rxBox.setMinimumSize(QtCore.QSize(180, 90)) + self.rxBox.setMaximumSize(QtCore.QSize(180, 16777215)) self.rxBox.setObjectName("rxBox") - self.gainMuEdit = QtGui.QLineEdit(self.rxBox) - self.gainMuEdit.setGeometry(QtCore.QRect(120, 30, 113, 23)) - self.gainMuEdit.setObjectName("gainMuEdit") - self.gainMuLabel = QtGui.QLabel(self.rxBox) - self.gainMuLabel.setGeometry(QtCore.QRect(10, 30, 111, 20)) + self.formLayoutWidget_3 = QtGui.QWidget(self.rxBox) + self.formLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 161, 61)) + self.formLayoutWidget_3.setObjectName("formLayoutWidget_3") + self.formLayout_3 = QtGui.QFormLayout(self.formLayoutWidget_3) + self.formLayout_3.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_3.setObjectName("formLayout_3") + self.gainMuLabel = QtGui.QLabel(self.formLayoutWidget_3) self.gainMuLabel.setObjectName("gainMuLabel") - self.alphaEdit = QtGui.QLineEdit(self.rxBox) - self.alphaEdit.setGeometry(QtCore.QRect(120, 60, 113, 23)) - self.alphaEdit.setObjectName("alphaEdit") - self.alphaLabel = QtGui.QLabel(self.rxBox) - self.alphaLabel.setGeometry(QtCore.QRect(10, 60, 111, 20)) + self.formLayout_3.setWidget(0, QtGui.QFormLayout.LabelRole, self.gainMuLabel) + self.alphaLabel = QtGui.QLabel(self.formLayoutWidget_3) self.alphaLabel.setObjectName("alphaLabel") - self.sysBox = QtGui.QGroupBox(self.centralwidget) - self.sysBox.setGeometry(QtCore.QRect(20, 520, 261, 161)) - self.sysBox.setObjectName("sysBox") - self.sampleRateEdit = QtGui.QLineEdit(self.sysBox) - self.sampleRateEdit.setGeometry(QtCore.QRect(140, 30, 113, 23)) - self.sampleRateEdit.setObjectName("sampleRateEdit") - self.sampleRateLabel = QtGui.QLabel(self.sysBox) - self.sampleRateLabel.setGeometry(QtCore.QRect(10, 30, 121, 20)) - self.sampleRateLabel.setObjectName("sampleRateLabel") - self.pauseButton = QtGui.QPushButton(self.centralwidget) - self.pauseButton.setGeometry(QtCore.QRect(1120, 520, 101, 31)) - self.pauseButton.setObjectName("pauseButton") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.LabelRole, self.alphaLabel) + self.gainMuEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.gainMuEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.gainMuEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.gainMuEdit.setObjectName("gainMuEdit") + self.formLayout_3.setWidget(0, QtGui.QFormLayout.FieldRole, self.gainMuEdit) + self.alphaEdit = QtGui.QLineEdit(self.formLayoutWidget_3) + self.alphaEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.alphaEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.alphaEdit.setObjectName("alphaEdit") + self.formLayout_3.setWidget(1, QtGui.QFormLayout.FieldRole, self.alphaEdit) + self.verticalLayout_3.addWidget(self.rxBox) + spacerItem1 = QtGui.QSpacerItem(20, 30, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_3.addItem(spacerItem1) + self.gridLayout.addLayout(self.verticalLayout_3, 2, 2, 1, 1) self.rxBox_2 = QtGui.QGroupBox(self.centralwidget) - self.rxBox_2.setGeometry(QtCore.QRect(850, 520, 251, 161)) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.rxBox_2.sizePolicy().hasHeightForWidth()) + self.rxBox_2.setSizePolicy(sizePolicy) + self.rxBox_2.setMinimumSize(QtCore.QSize(220, 125)) + self.rxBox_2.setMaximumSize(QtCore.QSize(265, 125)) self.rxBox_2.setObjectName("rxBox_2") - self.pktsRcvdEdit = QtGui.QLineEdit(self.rxBox_2) - self.pktsRcvdEdit.setGeometry(QtCore.QRect(120, 30, 113, 23)) - self.pktsRcvdEdit.setObjectName("pktsRcvdEdit") - self.pktsRcvdLabel = QtGui.QLabel(self.rxBox_2) - self.pktsRcvdLabel.setGeometry(QtCore.QRect(10, 30, 111, 20)) + self.formLayoutWidget_4 = QtGui.QWidget(self.rxBox_2) + self.formLayoutWidget_4.setGeometry(QtCore.QRect(10, 20, 201, 92)) + self.formLayoutWidget_4.setObjectName("formLayoutWidget_4") + self.formLayout_4 = QtGui.QFormLayout(self.formLayoutWidget_4) + self.formLayout_4.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.formLayout_4.setObjectName("formLayout_4") + self.pktsRcvdLabel = QtGui.QLabel(self.formLayoutWidget_4) self.pktsRcvdLabel.setObjectName("pktsRcvdLabel") - self.pktsCorrectEdit = QtGui.QLineEdit(self.rxBox_2) - self.pktsCorrectEdit.setGeometry(QtCore.QRect(120, 60, 113, 23)) - self.pktsCorrectEdit.setObjectName("pktsCorrectEdit") - self.pktsCorrectLabel = QtGui.QLabel(self.rxBox_2) - self.pktsCorrectLabel.setGeometry(QtCore.QRect(10, 60, 111, 20)) + self.formLayout_4.setWidget(0, QtGui.QFormLayout.LabelRole, self.pktsRcvdLabel) + self.pktsCorrectLabel = QtGui.QLabel(self.formLayoutWidget_4) self.pktsCorrectLabel.setObjectName("pktsCorrectLabel") - self.perLabel = QtGui.QLabel(self.rxBox_2) - self.perLabel.setGeometry(QtCore.QRect(10, 90, 111, 20)) + self.formLayout_4.setWidget(1, QtGui.QFormLayout.LabelRole, self.pktsCorrectLabel) + self.perLabel = QtGui.QLabel(self.formLayoutWidget_4) self.perLabel.setObjectName("perLabel") - self.perEdit = QtGui.QLineEdit(self.rxBox_2) - self.perEdit.setGeometry(QtCore.QRect(120, 90, 113, 23)) + self.formLayout_4.setWidget(2, QtGui.QFormLayout.LabelRole, self.perLabel) + self.pktsRcvdEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.pktsRcvdEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.pktsRcvdEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.pktsRcvdEdit.setObjectName("pktsRcvdEdit") + self.formLayout_4.setWidget(0, QtGui.QFormLayout.FieldRole, self.pktsRcvdEdit) + self.pktsCorrectEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.pktsCorrectEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.pktsCorrectEdit.setMaximumSize(QtCore.QSize(100, 16777215)) + self.pktsCorrectEdit.setObjectName("pktsCorrectEdit") + self.formLayout_4.setWidget(1, QtGui.QFormLayout.FieldRole, self.pktsCorrectEdit) + self.perEdit = QtGui.QLineEdit(self.formLayoutWidget_4) + self.perEdit.setMinimumSize(QtCore.QSize(100, 0)) + self.perEdit.setMaximumSize(QtCore.QSize(100, 16777215)) self.perEdit.setObjectName("perEdit") + self.formLayout_4.setWidget(2, QtGui.QFormLayout.FieldRole, self.perEdit) + self.gridLayout.addWidget(self.rxBox_2, 2, 3, 1, 1) + spacerItem2 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.gridLayout.addItem(spacerItem2, 2, 4, 1, 1) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName("verticalLayout") + self.pauseButton = QtGui.QPushButton(self.centralwidget) + self.pauseButton.setMinimumSize(QtCore.QSize(80, 0)) + self.pauseButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.pauseButton.setObjectName("pauseButton") + self.verticalLayout.addWidget(self.pauseButton) + spacerItem3 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout.addItem(spacerItem3) + self.closeButton = QtGui.QPushButton(self.centralwidget) + self.closeButton.setMinimumSize(QtCore.QSize(80, 0)) + self.closeButton.setMaximumSize(QtCore.QSize(80, 16777215)) + self.closeButton.setObjectName("closeButton") + self.verticalLayout.addWidget(self.closeButton) + self.gridLayout.addLayout(self.verticalLayout, 2, 5, 1, 1) DigitalWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(DigitalWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1236, 25)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1050, 24)) self.menubar.setObjectName("menubar") self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") @@ -116,27 +232,26 @@ class Ui_DigitalWindow(object): QtCore.QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), DigitalWindow.close) QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL("triggered()"), DigitalWindow.close) QtCore.QMetaObject.connectSlotsByName(DigitalWindow) - DigitalWindow.setTabOrder(self.closeButton, self.snrEdit) DigitalWindow.setTabOrder(self.snrEdit, self.freqEdit) DigitalWindow.setTabOrder(self.freqEdit, self.timeEdit) def retranslateUi(self, DigitalWindow): DigitalWindow.setWindowTitle(QtGui.QApplication.translate("DigitalWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) - self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) + self.sysBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.sampleRateLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Sample Rate (sps)", None, QtGui.QApplication.UnicodeUTF8)) self.channelModeBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Channel Model Parameters", None, QtGui.QApplication.UnicodeUTF8)) - self.timeLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Timing Offset", None, QtGui.QApplication.UnicodeUTF8)) self.snrLabel.setText(QtGui.QApplication.translate("DigitalWindow", "SNR (dB)", None, QtGui.QApplication.UnicodeUTF8)) self.freqLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Frequency Offset (Hz)", None, QtGui.QApplication.UnicodeUTF8)) + self.timeLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Timing Offset", None, QtGui.QApplication.UnicodeUTF8)) self.rxBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Receiver Parameters", None, QtGui.QApplication.UnicodeUTF8)) self.gainMuLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Gain mu", None, QtGui.QApplication.UnicodeUTF8)) self.alphaLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha", None, QtGui.QApplication.UnicodeUTF8)) - self.sysBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "System Parameters", None, QtGui.QApplication.UnicodeUTF8)) - self.sampleRateLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Sample Rate (sps)", None, QtGui.QApplication.UnicodeUTF8)) - self.pauseButton.setText(QtGui.QApplication.translate("DigitalWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) self.rxBox_2.setTitle(QtGui.QApplication.translate("DigitalWindow", "Received Packet Info", None, QtGui.QApplication.UnicodeUTF8)) self.pktsRcvdLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Rcvd.", None, QtGui.QApplication.UnicodeUTF8)) self.pktsCorrectLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Correct", None, QtGui.QApplication.UnicodeUTF8)) self.perLabel.setText(QtGui.QApplication.translate("DigitalWindow", "PER", None, QtGui.QApplication.UnicodeUTF8)) + self.pauseButton.setText(QtGui.QApplication.translate("DigitalWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) + self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.menuFile.setTitle(QtGui.QApplication.translate("DigitalWindow", "&File", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setText(QtGui.QApplication.translate("DigitalWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/gnuradio-examples/python/digital/qt_digital_window.ui b/gnuradio-examples/python/digital/qt_digital_window.ui index 669942cb9..413801ec7 100644 --- a/gnuradio-examples/python/digital/qt_digital_window.ui +++ b/gnuradio-examples/python/digital/qt_digital_window.ui @@ -1,358 +1,596 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> +<ui version="4.0" > <class>DigitalWindow</class> - <widget class="QMainWindow" name="DigitalWindow"> - <property name="geometry"> + <widget class="QMainWindow" name="DigitalWindow" > + <property name="geometry" > <rect> <x>0</x> <y>0</y> - <width>1236</width> - <height>739</height> + <width>1050</width> + <height>752</height> </rect> </property> - <property name="windowTitle"> + <property name="windowTitle" > <string>MainWindow</string> </property> - <widget class="QWidget" name="centralwidget"> - <widget class="QPushButton" name="closeButton"> - <property name="geometry"> - <rect> - <x>1120</x> - <y>640</y> - <width>101</width> - <height>31</height> - </rect> - </property> - <property name="text"> - <string>Close</string> - </property> - </widget> - <widget class="QFrame" name="sinkFrame"> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>1221</width> - <height>501</height> - </rect> - </property> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <widget class="QWidget" name="horizontalLayoutWidget"> - <property name="geometry"> - <rect> - <x>10</x> - <y>10</y> - <width>1201</width> - <height>481</height> - </rect> - </property> - <layout class="QHBoxLayout" name="sinkLayout"/> - </widget> - </widget> - <widget class="QGroupBox" name="channelModeBox"> - <property name="geometry"> - <rect> - <x>290</x> - <y>520</y> - <width>291</width> - <height>161</height> - </rect> - </property> - <property name="title"> - <string>Channel Model Parameters</string> - </property> - <widget class="QLabel" name="timeLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>90</y> - <width>101</width> - <height>17</height> - </rect> - </property> - <property name="text"> - <string>Timing Offset</string> - </property> - </widget> - <widget class="QLineEdit" name="timeEdit"> - <property name="geometry"> - <rect> - <x>160</x> - <y>90</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLineEdit" name="snrEdit"> - <property name="geometry"> - <rect> - <x>160</x> - <y>30</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="snrLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>30</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>SNR (dB)</string> - </property> - </widget> - <widget class="QLineEdit" name="freqEdit"> - <property name="geometry"> - <rect> - <x>160</x> - <y>60</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="freqLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>60</y> - <width>141</width> - <height>17</height> - </rect> - </property> - <property name="text"> - <string>Frequency Offset (Hz)</string> - </property> - </widget> - </widget> - <widget class="QGroupBox" name="rxBox"> - <property name="geometry"> - <rect> - <x>590</x> - <y>520</y> - <width>251</width> - <height>161</height> - </rect> - </property> - <property name="title"> - <string>Receiver Parameters</string> - </property> - <widget class="QLineEdit" name="gainMuEdit"> - <property name="geometry"> - <rect> - <x>120</x> - <y>30</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="gainMuLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>30</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Gain mu</string> - </property> - </widget> - <widget class="QLineEdit" name="alphaEdit"> - <property name="geometry"> - <rect> - <x>120</x> - <y>60</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="alphaLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>60</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Alpha</string> - </property> - </widget> - </widget> - <widget class="QGroupBox" name="sysBox"> - <property name="geometry"> - <rect> - <x>20</x> - <y>520</y> - <width>261</width> - <height>161</height> - </rect> - </property> - <property name="title"> - <string>System Parameters</string> - </property> - <widget class="QLineEdit" name="sampleRateEdit"> - <property name="geometry"> - <rect> - <x>140</x> - <y>30</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="sampleRateLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>30</y> - <width>121</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Sample Rate (sps)</string> - </property> - </widget> - </widget> - <widget class="QPushButton" name="pauseButton"> - <property name="geometry"> - <rect> - <x>1120</x> - <y>520</y> - <width>101</width> - <height>31</height> - </rect> - </property> - <property name="text"> - <string>Pause</string> - </property> - </widget> - <widget class="QGroupBox" name="rxBox_2"> - <property name="geometry"> - <rect> - <x>850</x> - <y>520</y> - <width>251</width> - <height>161</height> - </rect> - </property> - <property name="title"> - <string>Received Packet Info</string> - </property> - <widget class="QLineEdit" name="pktsRcvdEdit"> - <property name="geometry"> - <rect> - <x>120</x> - <y>30</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="pktsRcvdLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>30</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Packets Rcvd.</string> - </property> - </widget> - <widget class="QLineEdit" name="pktsCorrectEdit"> - <property name="geometry"> - <rect> - <x>120</x> - <y>60</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="pktsCorrectLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>60</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>Packets Correct</string> - </property> - </widget> - <widget class="QLabel" name="perLabel"> - <property name="geometry"> - <rect> - <x>10</x> - <y>90</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text"> - <string>PER</string> - </property> - </widget> - <widget class="QLineEdit" name="perEdit"> - <property name="geometry"> - <rect> - <x>120</x> - <y>90</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - </widget> + <widget class="QWidget" name="centralwidget" > + <layout class="QGridLayout" name="gridLayout" > + <item row="2" column="0" > + <layout class="QVBoxLayout" name="verticalLayout_2" > + <item> + <widget class="QGroupBox" name="sysBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>240</width> + <height>60</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>240</width> + <height>16777215</height> + </size> + </property> + <property name="title" > + <string>System Parameters</string> + </property> + <widget class="QWidget" name="formLayoutWidget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>221</width> + <height>31</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <property name="verticalSpacing" > + <number>20</number> + </property> + <item row="0" column="1" > + <widget class="QLineEdit" name="sampleRateEdit" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>100</width> + <height>26</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>26</height> + </size> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="sampleRateLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>20</height> + </size> + </property> + <property name="text" > + <string>Sample Rate (sps)</string> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>60</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="1" > + <widget class="QGroupBox" name="channelModeBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>245</width> + <height>130</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>245</width> + <height>16777215</height> + </size> + </property> + <property name="title" > + <string>Channel Model Parameters</string> + </property> + <widget class="QWidget" name="formLayoutWidget_2" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>231</width> + <height>98</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout_2" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <property name="fieldGrowthPolicy" > + <enum>QFormLayout::AllNonFixedFieldsGrow</enum> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="snrLabel" > + <property name="text" > + <string>SNR (dB)</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="snrEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="freqLabel" > + <property name="text" > + <string>Frequency Offset (Hz)</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="freqEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="timeLabel" > + <property name="text" > + <string>Timing Offset</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="timeEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item row="0" column="0" colspan="6" > + <layout class="QVBoxLayout" name="verticalLayout_5" > + <item> + <widget class="QFrame" name="sinkFrame" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>1000</width> + <height>550</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="1" column="0" > + <layout class="QHBoxLayout" name="sinkLayout" /> + </item> + </layout> + <zorder>verticalLayoutWidget</zorder> + <zorder>verticalLayoutWidget</zorder> + </widget> + </item> + </layout> + </item> + <item row="2" column="2" > + <layout class="QVBoxLayout" name="verticalLayout_3" > + <item> + <widget class="QGroupBox" name="rxBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>180</width> + <height>90</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>180</width> + <height>16777215</height> + </size> + </property> + <property name="title" > + <string>Receiver Parameters</string> + </property> + <widget class="QWidget" name="formLayoutWidget_3" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>161</width> + <height>61</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout_3" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="gainMuLabel" > + <property name="text" > + <string>Gain mu</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="alphaLabel" > + <property name="text" > + <string>Alpha</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="gainMuEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="alphaEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item> + <spacer name="verticalSpacer_4" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>30</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="3" > + <widget class="QGroupBox" name="rxBox_2" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>220</width> + <height>125</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>265</width> + <height>125</height> + </size> + </property> + <property name="title" > + <string>Received Packet Info</string> + </property> + <widget class="QWidget" name="formLayoutWidget_4" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>201</width> + <height>92</height> + </rect> + </property> + <layout class="QFormLayout" name="formLayout_4" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="pktsRcvdLabel" > + <property name="text" > + <string>Packets Rcvd.</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="pktsCorrectLabel" > + <property name="text" > + <string>Packets Correct</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="perLabel" > + <property name="text" > + <string>PER</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="pktsRcvdEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="pktsCorrectEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="perEdit" > + <property name="minimumSize" > + <size> + <width>100</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>100</width> + <height>16777215</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item row="2" column="4" > + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="5" > + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QPushButton" name="pauseButton" > + <property name="minimumSize" > + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>Pause</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>60</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="closeButton" > + <property name="minimumSize" > + <size> + <width>80</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>16777215</height> + </size> + </property> + <property name="text" > + <string>Close</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + <zorder>sinkFrame</zorder> + <zorder>channelModeBox</zorder> + <zorder>verticalLayoutWidget</zorder> + <zorder>verticalLayoutWidget</zorder> + <zorder>rxBox</zorder> + <zorder></zorder> + <zorder>rxBox_2</zorder> + <zorder>horizontalSpacer</zorder> + <zorder></zorder> </widget> - <widget class="QMenuBar" name="menubar"> - <property name="geometry"> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > <rect> <x>0</x> <y>0</y> - <width>1236</width> - <height>25</height> + <width>1050</width> + <height>24</height> </rect> </property> - <widget class="QMenu" name="menuFile"> - <property name="title"> + <widget class="QMenu" name="menuFile" > + <property name="title" > <string>&File</string> </property> - <addaction name="actionExit"/> + <addaction name="actionExit" /> </widget> - <addaction name="menuFile"/> + <addaction name="menuFile" /> </widget> - <widget class="QStatusBar" name="statusbar"/> - <action name="actionExit"> - <property name="text"> + <widget class="QStatusBar" name="statusbar" /> + <action name="actionExit" > + <property name="text" > <string>E&xit</string> </property> </action> </widget> <tabstops> - <tabstop>closeButton</tabstop> <tabstop>snrEdit</tabstop> <tabstop>freqEdit</tabstop> <tabstop>timeEdit</tabstop> @@ -365,11 +603,11 @@ <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel"> + <hint type="sourcelabel" > <x>322</x> <y>623</y> </hint> - <hint type="destinationlabel"> + <hint type="destinationlabel" > <x>66</x> <y>561</y> </hint> @@ -381,11 +619,11 @@ <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> - <hint type="sourcelabel"> + <hint type="sourcelabel" > <x>-1</x> <y>-1</y> </hint> - <hint type="destinationlabel"> + <hint type="destinationlabel" > <x>617</x> <y>327</y> </hint> diff --git a/gnuradio-examples/python/digital/qt_rx_window.py b/gnuradio-examples/python/digital/qt_rx_window.py index 0879e1c68..60e1a6e37 100644 --- a/gnuradio-examples/python/digital/qt_rx_window.py +++ b/gnuradio-examples/python/digital/qt_rx_window.py @@ -2,8 +2,8 @@ # Form implementation generated from reading ui file 'qt_rx_window.ui' # -# Created: Wed Jun 17 18:59:00 2009 -# by: PyQt4 UI code generator 4.4.4 +# Created: Fri Jul 3 01:03:19 2009 +# by: PyQt4 UI code generator 4.4.3 # # WARNING! All changes made in this file will be lost! @@ -12,24 +12,40 @@ from PyQt4 import QtCore, QtGui class Ui_DigitalWindow(object): def setupUi(self, DigitalWindow): DigitalWindow.setObjectName("DigitalWindow") - DigitalWindow.resize(1085, 766) + DigitalWindow.resize(1000, 816) self.centralwidget = QtGui.QWidget(DigitalWindow) self.centralwidget.setObjectName("centralwidget") - self.closeButton = QtGui.QPushButton(self.centralwidget) - self.closeButton.setGeometry(QtCore.QRect(960, 670, 101, 31)) - self.closeButton.setObjectName("closeButton") + self.gridLayout = QtGui.QGridLayout(self.centralwidget) + self.gridLayout.setObjectName("gridLayout") self.sinkFrame = QtGui.QFrame(self.centralwidget) - self.sinkFrame.setGeometry(QtCore.QRect(10, 10, 1061, 501)) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(1) + sizePolicy.setHeightForWidth(self.sinkFrame.sizePolicy().hasHeightForWidth()) + self.sinkFrame.setSizePolicy(sizePolicy) + self.sinkFrame.setMinimumSize(QtCore.QSize(800, 500)) self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) self.sinkFrame.setObjectName("sinkFrame") - self.horizontalLayoutWidget = QtGui.QWidget(self.sinkFrame) - self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 1041, 481)) - self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") - self.sinkLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget) + self.horizontalLayout_2 = QtGui.QHBoxLayout(self.sinkFrame) + self.horizontalLayout_2.setObjectName("horizontalLayout_2") + self.sinkLayout = QtGui.QHBoxLayout() self.sinkLayout.setObjectName("sinkLayout") + self.horizontalLayout_2.addLayout(self.sinkLayout) + self.gridLayout.addWidget(self.sinkFrame, 0, 0, 1, 1) + spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.gridLayout.addItem(spacerItem, 1, 0, 1, 1) + self.horizontalLayout = QtGui.QHBoxLayout() + self.horizontalLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.horizontalLayout.setObjectName("horizontalLayout") self.rxBox = QtGui.QGroupBox(self.centralwidget) - self.rxBox.setGeometry(QtCore.QRect(10, 520, 251, 181)) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.rxBox.sizePolicy().hasHeightForWidth()) + self.rxBox.setSizePolicy(sizePolicy) + self.rxBox.setMinimumSize(QtCore.QSize(250, 190)) + self.rxBox.setMaximumSize(QtCore.QSize(250, 190)) self.rxBox.setObjectName("rxBox") self.gainMuEdit = QtGui.QLineEdit(self.rxBox) self.gainMuEdit.setGeometry(QtCore.QRect(120, 120, 113, 23)) @@ -61,30 +77,66 @@ class Ui_DigitalWindow(object): self.decimEdit = QtGui.QLineEdit(self.rxBox) self.decimEdit.setGeometry(QtCore.QRect(120, 90, 113, 23)) self.decimEdit.setObjectName("decimEdit") - self.rxBox_2 = QtGui.QGroupBox(self.centralwidget) - self.rxBox_2.setGeometry(QtCore.QRect(300, 520, 251, 121)) - self.rxBox_2.setObjectName("rxBox_2") - self.pktsRcvdEdit = QtGui.QLineEdit(self.rxBox_2) + self.horizontalLayout.addWidget(self.rxBox) + self.verticalLayout_3 = QtGui.QVBoxLayout() + self.verticalLayout_3.setObjectName("verticalLayout_3") + self.rxPacketBox = QtGui.QGroupBox(self.centralwidget) + self.rxPacketBox.setEnabled(True) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.rxPacketBox.sizePolicy().hasHeightForWidth()) + self.rxPacketBox.setSizePolicy(sizePolicy) + self.rxPacketBox.setMinimumSize(QtCore.QSize(250, 130)) + self.rxPacketBox.setMaximumSize(QtCore.QSize(250, 130)) + font = QtGui.QFont() + font.setWeight(50) + font.setBold(False) + self.rxPacketBox.setFont(font) + self.rxPacketBox.setObjectName("rxPacketBox") + self.pktsRcvdEdit = QtGui.QLineEdit(self.rxPacketBox) self.pktsRcvdEdit.setGeometry(QtCore.QRect(120, 30, 113, 23)) self.pktsRcvdEdit.setObjectName("pktsRcvdEdit") - self.pktsRcvdLabel = QtGui.QLabel(self.rxBox_2) + self.pktsRcvdLabel = QtGui.QLabel(self.rxPacketBox) self.pktsRcvdLabel.setGeometry(QtCore.QRect(10, 30, 111, 20)) self.pktsRcvdLabel.setObjectName("pktsRcvdLabel") - self.pktsCorrectEdit = QtGui.QLineEdit(self.rxBox_2) + self.pktsCorrectEdit = QtGui.QLineEdit(self.rxPacketBox) self.pktsCorrectEdit.setGeometry(QtCore.QRect(120, 60, 113, 23)) self.pktsCorrectEdit.setObjectName("pktsCorrectEdit") - self.pktsCorrectLabel = QtGui.QLabel(self.rxBox_2) + self.pktsCorrectLabel = QtGui.QLabel(self.rxPacketBox) self.pktsCorrectLabel.setGeometry(QtCore.QRect(10, 60, 111, 20)) self.pktsCorrectLabel.setObjectName("pktsCorrectLabel") - self.perLabel = QtGui.QLabel(self.rxBox_2) + self.perLabel = QtGui.QLabel(self.rxPacketBox) self.perLabel.setGeometry(QtCore.QRect(10, 90, 111, 20)) self.perLabel.setObjectName("perLabel") - self.perEdit = QtGui.QLineEdit(self.rxBox_2) + self.perEdit = QtGui.QLineEdit(self.rxPacketBox) self.perEdit.setGeometry(QtCore.QRect(120, 90, 113, 23)) self.perEdit.setObjectName("perEdit") + self.verticalLayout_3.addWidget(self.rxPacketBox) + spacerItem1 = QtGui.QSpacerItem(20, 60, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) + self.verticalLayout_3.addItem(spacerItem1) + self.horizontalLayout.addLayout(self.verticalLayout_3) + spacerItem2 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.horizontalLayout.addItem(spacerItem2) + self.verticalLayout_5 = QtGui.QVBoxLayout() + self.verticalLayout_5.setObjectName("verticalLayout_5") + spacerItem3 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.verticalLayout_5.addItem(spacerItem3) + self.closeButton = QtGui.QPushButton(self.centralwidget) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.closeButton.sizePolicy().hasHeightForWidth()) + self.closeButton.setSizePolicy(sizePolicy) + self.closeButton.setMinimumSize(QtCore.QSize(80, 30)) + self.closeButton.setMaximumSize(QtCore.QSize(80, 30)) + self.closeButton.setObjectName("closeButton") + self.verticalLayout_5.addWidget(self.closeButton) + self.horizontalLayout.addLayout(self.verticalLayout_5) + self.gridLayout.addLayout(self.horizontalLayout, 2, 0, 1, 1) DigitalWindow.setCentralWidget(self.centralwidget) self.menubar = QtGui.QMenuBar(DigitalWindow) - self.menubar.setGeometry(QtCore.QRect(0, 0, 1085, 24)) + self.menubar.setGeometry(QtCore.QRect(0, 0, 1000, 24)) self.menubar.setObjectName("menubar") self.menuFile = QtGui.QMenu(self.menubar) self.menuFile.setObjectName("menuFile") @@ -98,23 +150,23 @@ class Ui_DigitalWindow(object): self.menubar.addAction(self.menuFile.menuAction()) self.retranslateUi(DigitalWindow) - QtCore.QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), DigitalWindow.close) QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL("triggered()"), DigitalWindow.close) + QtCore.QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), DigitalWindow.close) QtCore.QMetaObject.connectSlotsByName(DigitalWindow) def retranslateUi(self, DigitalWindow): DigitalWindow.setWindowTitle(QtGui.QApplication.translate("DigitalWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) - self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.rxBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Receiver Parameters", None, QtGui.QApplication.UnicodeUTF8)) self.gainMuLabel.setText(QtGui.QApplication.translate("DigitalWindow", "mu\'s gain", None, QtGui.QApplication.UnicodeUTF8)) self.alphaLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Alpha", None, QtGui.QApplication.UnicodeUTF8)) self.gainLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Gain (dB)", None, QtGui.QApplication.UnicodeUTF8)) self.freqLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Frequency (Hz)", None, QtGui.QApplication.UnicodeUTF8)) self.decimLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Decimation", None, QtGui.QApplication.UnicodeUTF8)) - self.rxBox_2.setTitle(QtGui.QApplication.translate("DigitalWindow", "Received Packet Info", None, QtGui.QApplication.UnicodeUTF8)) + self.rxPacketBox.setTitle(QtGui.QApplication.translate("DigitalWindow", "Received Packet Info", None, QtGui.QApplication.UnicodeUTF8)) self.pktsRcvdLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Rcvd.", None, QtGui.QApplication.UnicodeUTF8)) self.pktsCorrectLabel.setText(QtGui.QApplication.translate("DigitalWindow", "Packets Correct", None, QtGui.QApplication.UnicodeUTF8)) self.perLabel.setText(QtGui.QApplication.translate("DigitalWindow", "PER", None, QtGui.QApplication.UnicodeUTF8)) + self.closeButton.setText(QtGui.QApplication.translate("DigitalWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) self.menuFile.setTitle(QtGui.QApplication.translate("DigitalWindow", "&File", None, QtGui.QApplication.UnicodeUTF8)) self.actionExit.setText(QtGui.QApplication.translate("DigitalWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) diff --git a/gnuradio-examples/python/digital/qt_rx_window.ui b/gnuradio-examples/python/digital/qt_rx_window.ui index 9b0b0be84..4631b7782 100644 --- a/gnuradio-examples/python/digital/qt_rx_window.ui +++ b/gnuradio-examples/python/digital/qt_rx_window.ui @@ -5,271 +5,406 @@ <rect> <x>0</x> <y>0</y> - <width>1085</width> - <height>766</height> + <width>1000</width> + <height>816</height> </rect> </property> <property name="windowTitle" > <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget" > - <widget class="QPushButton" name="closeButton" > - <property name="geometry" > - <rect> - <x>960</x> - <y>670</y> - <width>101</width> - <height>31</height> - </rect> - </property> - <property name="text" > - <string>Close</string> - </property> - </widget> - <widget class="QFrame" name="sinkFrame" > - <property name="geometry" > - <rect> - <x>10</x> - <y>10</y> - <width>1061</width> - <height>501</height> - </rect> - </property> - <property name="frameShape" > - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow" > - <enum>QFrame::Raised</enum> - </property> - <widget class="QWidget" name="horizontalLayoutWidget" > - <property name="geometry" > - <rect> - <x>10</x> - <y>10</y> - <width>1041</width> - <height>481</height> - </rect> - </property> - <layout class="QHBoxLayout" name="sinkLayout" /> - </widget> - </widget> - <widget class="QGroupBox" name="rxBox" > - <property name="geometry" > - <rect> - <x>10</x> - <y>520</y> - <width>251</width> - <height>181</height> - </rect> - </property> - <property name="title" > - <string>Receiver Parameters</string> - </property> - <widget class="QLineEdit" name="gainMuEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>120</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="gainMuLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>120</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>mu's gain</string> - </property> - </widget> - <widget class="QLineEdit" name="alphaEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>150</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="alphaLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>150</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Alpha</string> - </property> - </widget> - <widget class="QLabel" name="gainLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>60</y> - <width>101</width> - <height>17</height> - </rect> - </property> - <property name="text" > - <string>Gain (dB)</string> - </property> - </widget> - <widget class="QLineEdit" name="freqEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>30</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="freqLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>30</y> - <width>141</width> - <height>17</height> - </rect> - </property> - <property name="text" > - <string>Frequency (Hz)</string> - </property> - </widget> - <widget class="QLineEdit" name="gainEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>60</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="decimLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>90</y> - <width>101</width> - <height>17</height> - </rect> - </property> - <property name="text" > - <string>Decimation</string> - </property> - </widget> - <widget class="QLineEdit" name="decimEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>90</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - </widget> - <widget class="QGroupBox" name="rxBox_2" > - <property name="geometry" > - <rect> - <x>300</x> - <y>520</y> - <width>251</width> - <height>121</height> - </rect> - </property> - <property name="title" > - <string>Received Packet Info</string> - </property> - <widget class="QLineEdit" name="pktsRcvdEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>30</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="pktsRcvdLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>30</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Packets Rcvd.</string> - </property> - </widget> - <widget class="QLineEdit" name="pktsCorrectEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>60</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - <widget class="QLabel" name="pktsCorrectLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>60</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>Packets Correct</string> - </property> - </widget> - <widget class="QLabel" name="perLabel" > - <property name="geometry" > - <rect> - <x>10</x> - <y>90</y> - <width>111</width> - <height>20</height> - </rect> - </property> - <property name="text" > - <string>PER</string> - </property> - </widget> - <widget class="QLineEdit" name="perEdit" > - <property name="geometry" > - <rect> - <x>120</x> - <y>90</y> - <width>113</width> - <height>23</height> - </rect> - </property> - </widget> - </widget> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QFrame" name="sinkFrame" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>1</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>800</width> + <height>500</height> + </size> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <layout class="QHBoxLayout" name="sinkLayout" /> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" > + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <property name="sizeConstraint" > + <enum>QLayout::SetFixedSize</enum> + </property> + <item> + <widget class="QGroupBox" name="rxBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>250</width> + <height>190</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>250</width> + <height>190</height> + </size> + </property> + <property name="title" > + <string>Receiver Parameters</string> + </property> + <widget class="QLineEdit" name="gainMuEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>120</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="gainMuLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>120</y> + <width>111</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>mu's gain</string> + </property> + </widget> + <widget class="QLineEdit" name="alphaEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>150</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="alphaLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>150</y> + <width>111</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>Alpha</string> + </property> + </widget> + <widget class="QLabel" name="gainLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>60</y> + <width>101</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Gain (dB)</string> + </property> + </widget> + <widget class="QLineEdit" name="freqEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>30</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="freqLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>30</y> + <width>141</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Frequency (Hz)</string> + </property> + </widget> + <widget class="QLineEdit" name="gainEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>60</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="decimLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>90</y> + <width>101</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Decimation</string> + </property> + </widget> + <widget class="QLineEdit" name="decimEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>90</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_3" > + <item> + <widget class="QGroupBox" name="rxPacketBox" > + <property name="enabled" > + <bool>true</bool> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>250</width> + <height>130</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>250</width> + <height>130</height> + </size> + </property> + <property name="font" > + <font> + <weight>50</weight> + <bold>false</bold> + </font> + </property> + <property name="title" > + <string>Received Packet Info</string> + </property> + <widget class="QLineEdit" name="pktsRcvdEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>30</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="pktsRcvdLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>30</y> + <width>111</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>Packets Rcvd.</string> + </property> + </widget> + <widget class="QLineEdit" name="pktsCorrectEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>60</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="pktsCorrectLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>60</y> + <width>111</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>Packets Correct</string> + </property> + </widget> + <widget class="QLabel" name="perLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>90</y> + <width>111</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>PER</string> + </property> + </widget> + <widget class="QLineEdit" name="perEdit" > + <property name="geometry" > + <rect> + <x>120</x> + <y>90</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <zorder>pktsRcvdEdit</zorder> + <zorder>pktsRcvdLabel</zorder> + <zorder>pktsCorrectEdit</zorder> + <zorder>pktsCorrectLabel</zorder> + <zorder>perLabel</zorder> + <zorder>perEdit</zorder> + <zorder>rxBox</zorder> + <zorder>verticalLayoutWidget</zorder> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>60</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_5" > + <item> + <spacer name="verticalSpacer_3" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="closeButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>80</width> + <height>30</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>80</width> + <height>30</height> + </size> + </property> + <property name="text" > + <string>Close</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + </layout> + <zorder>closeButton</zorder> + <zorder>sinkFrame</zorder> + <zorder>rxBox</zorder> + <zorder>rxPacketBox</zorder> + <zorder>verticalLayoutWidget</zorder> + <zorder>verticalSpacer</zorder> + <zorder>horizontalLayoutWidget_2</zorder> </widget> <widget class="QMenuBar" name="menubar" > <property name="geometry" > <rect> <x>0</x> <y>0</y> - <width>1085</width> + <width>1000</width> <height>24</height> </rect> </property> @@ -288,40 +423,37 @@ </property> </action> </widget> - <tabstops> - <tabstop>closeButton</tabstop> - </tabstops> <resources/> <connections> <connection> - <sender>closeButton</sender> - <signal>clicked()</signal> + <sender>actionExit</sender> + <signal>triggered()</signal> <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> <hint type="sourcelabel" > - <x>322</x> - <y>623</y> + <x>-1</x> + <y>-1</y> </hint> <hint type="destinationlabel" > - <x>66</x> - <y>561</y> + <x>617</x> + <y>327</y> </hint> </hints> </connection> <connection> - <sender>actionExit</sender> - <signal>triggered()</signal> + <sender>closeButton</sender> + <signal>clicked()</signal> <receiver>DigitalWindow</receiver> <slot>close()</slot> <hints> <hint type="sourcelabel" > - <x>-1</x> - <y>-1</y> + <x>960</x> + <y>694</y> </hint> <hint type="destinationlabel" > - <x>617</x> - <y>327</y> + <x>66</x> + <y>561</y> </hint> </hints> </connection> diff --git a/gnuradio-examples/python/usrp2/qt_wfm_interface.py b/gnuradio-examples/python/usrp2/qt_wfm_interface.py new file mode 100644 index 000000000..4c4367ed0 --- /dev/null +++ b/gnuradio-examples/python/usrp2/qt_wfm_interface.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'qt_wfm_interface.ui' +# +# Created: Thu Jun 18 23:41:03 2009 +# by: PyQt4 UI code generator 4.4.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +class Ui_InterfaceWindow(object): + def setupUi(self, InterfaceWindow): + InterfaceWindow.setObjectName("InterfaceWindow") + InterfaceWindow.resize(909, 711) + self.centralwidget = QtGui.QWidget(InterfaceWindow) + self.centralwidget.setObjectName("centralwidget") + self.closeButton = QtGui.QPushButton(self.centralwidget) + self.closeButton.setGeometry(QtCore.QRect(790, 580, 101, 31)) + self.closeButton.setObjectName("closeButton") + self.sinkFrame = QtGui.QFrame(self.centralwidget) + self.sinkFrame.setGeometry(QtCore.QRect(10, 10, 891, 501)) + self.sinkFrame.setFrameShape(QtGui.QFrame.StyledPanel) + self.sinkFrame.setFrameShadow(QtGui.QFrame.Raised) + self.sinkFrame.setObjectName("sinkFrame") + self.horizontalLayoutWidget = QtGui.QWidget(self.sinkFrame) + self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 871, 481)) + self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") + self.sinkLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget) + self.sinkLayout.setObjectName("sinkLayout") + self.channelModeBox = QtGui.QGroupBox(self.centralwidget) + self.channelModeBox.setGeometry(QtCore.QRect(10, 520, 261, 131)) + self.channelModeBox.setObjectName("channelModeBox") + self.bandwidthabel = QtGui.QLabel(self.channelModeBox) + self.bandwidthabel.setGeometry(QtCore.QRect(10, 90, 101, 17)) + self.bandwidthabel.setObjectName("bandwidthabel") + self.bandwidthEdit = QtGui.QLineEdit(self.channelModeBox) + self.bandwidthEdit.setGeometry(QtCore.QRect(130, 90, 113, 23)) + self.bandwidthEdit.setObjectName("bandwidthEdit") + self.gainEdit = QtGui.QLineEdit(self.channelModeBox) + self.gainEdit.setGeometry(QtCore.QRect(130, 60, 113, 23)) + self.gainEdit.setObjectName("gainEdit") + self.gainLabel = QtGui.QLabel(self.channelModeBox) + self.gainLabel.setGeometry(QtCore.QRect(10, 60, 111, 20)) + self.gainLabel.setObjectName("gainLabel") + self.freqEdit = QtGui.QLineEdit(self.channelModeBox) + self.freqEdit.setGeometry(QtCore.QRect(130, 30, 113, 23)) + self.freqEdit.setObjectName("freqEdit") + self.freqLabel = QtGui.QLabel(self.channelModeBox) + self.freqLabel.setGeometry(QtCore.QRect(10, 30, 111, 17)) + self.freqLabel.setObjectName("freqLabel") + self.pauseButton = QtGui.QPushButton(self.centralwidget) + self.pauseButton.setGeometry(QtCore.QRect(790, 520, 101, 31)) + self.pauseButton.setObjectName("pauseButton") + self.fmBox = QtGui.QGroupBox(self.centralwidget) + self.fmBox.setGeometry(QtCore.QRect(290, 520, 251, 131)) + self.fmBox.setObjectName("fmBox") + self.volumeEdit = QtGui.QLineEdit(self.fmBox) + self.volumeEdit.setGeometry(QtCore.QRect(130, 20, 113, 23)) + self.volumeEdit.setObjectName("volumeEdit") + self.volumeLabel = QtGui.QLabel(self.fmBox) + self.volumeLabel.setGeometry(QtCore.QRect(10, 20, 111, 17)) + self.volumeLabel.setObjectName("volumeLabel") + InterfaceWindow.setCentralWidget(self.centralwidget) + self.menubar = QtGui.QMenuBar(InterfaceWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 909, 24)) + self.menubar.setObjectName("menubar") + self.menuFile = QtGui.QMenu(self.menubar) + self.menuFile.setObjectName("menuFile") + InterfaceWindow.setMenuBar(self.menubar) + self.statusbar = QtGui.QStatusBar(InterfaceWindow) + self.statusbar.setObjectName("statusbar") + InterfaceWindow.setStatusBar(self.statusbar) + self.actionExit = QtGui.QAction(InterfaceWindow) + self.actionExit.setObjectName("actionExit") + self.menuFile.addAction(self.actionExit) + self.menubar.addAction(self.menuFile.menuAction()) + + self.retranslateUi(InterfaceWindow) + QtCore.QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), InterfaceWindow.close) + QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL("triggered()"), InterfaceWindow.close) + QtCore.QMetaObject.connectSlotsByName(InterfaceWindow) + InterfaceWindow.setTabOrder(self.closeButton, self.gainEdit) + InterfaceWindow.setTabOrder(self.gainEdit, self.freqEdit) + InterfaceWindow.setTabOrder(self.freqEdit, self.bandwidthEdit) + + def retranslateUi(self, InterfaceWindow): + InterfaceWindow.setWindowTitle(QtGui.QApplication.translate("InterfaceWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8)) + self.closeButton.setText(QtGui.QApplication.translate("InterfaceWindow", "Close", None, QtGui.QApplication.UnicodeUTF8)) + self.channelModeBox.setTitle(QtGui.QApplication.translate("InterfaceWindow", "USRP Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.bandwidthabel.setText(QtGui.QApplication.translate("InterfaceWindow", "Bandwidth (Hz)", None, QtGui.QApplication.UnicodeUTF8)) + self.gainLabel.setText(QtGui.QApplication.translate("InterfaceWindow", "Gain (dB)", None, QtGui.QApplication.UnicodeUTF8)) + self.freqLabel.setText(QtGui.QApplication.translate("InterfaceWindow", "Frequency", None, QtGui.QApplication.UnicodeUTF8)) + self.pauseButton.setText(QtGui.QApplication.translate("InterfaceWindow", "Pause", None, QtGui.QApplication.UnicodeUTF8)) + self.fmBox.setTitle(QtGui.QApplication.translate("InterfaceWindow", "FM Tuner Parameters", None, QtGui.QApplication.UnicodeUTF8)) + self.volumeLabel.setText(QtGui.QApplication.translate("InterfaceWindow", "Volume", None, QtGui.QApplication.UnicodeUTF8)) + self.menuFile.setTitle(QtGui.QApplication.translate("InterfaceWindow", "&File", None, QtGui.QApplication.UnicodeUTF8)) + self.actionExit.setText(QtGui.QApplication.translate("InterfaceWindow", "E&xit", None, QtGui.QApplication.UnicodeUTF8)) + diff --git a/gnuradio-examples/python/usrp2/qt_wfm_interface.ui b/gnuradio-examples/python/usrp2/qt_wfm_interface.ui new file mode 100644 index 000000000..16902d9f4 --- /dev/null +++ b/gnuradio-examples/python/usrp2/qt_wfm_interface.ui @@ -0,0 +1,253 @@ +<ui version="4.0" > + <class>InterfaceWindow</class> + <widget class="QMainWindow" name="InterfaceWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>909</width> + <height>711</height> + </rect> + </property> + <property name="windowTitle" > + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget" > + <widget class="QPushButton" name="closeButton" > + <property name="geometry" > + <rect> + <x>790</x> + <y>580</y> + <width>101</width> + <height>31</height> + </rect> + </property> + <property name="text" > + <string>Close</string> + </property> + </widget> + <widget class="QFrame" name="sinkFrame" > + <property name="geometry" > + <rect> + <x>10</x> + <y>10</y> + <width>891</width> + <height>501</height> + </rect> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <widget class="QWidget" name="horizontalLayoutWidget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>10</y> + <width>871</width> + <height>481</height> + </rect> + </property> + <layout class="QHBoxLayout" name="sinkLayout" /> + </widget> + </widget> + <widget class="QGroupBox" name="channelModeBox" > + <property name="geometry" > + <rect> + <x>10</x> + <y>520</y> + <width>261</width> + <height>131</height> + </rect> + </property> + <property name="title" > + <string>USRP Parameters</string> + </property> + <widget class="QLabel" name="bandwidthabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>90</y> + <width>101</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Bandwidth (Hz)</string> + </property> + </widget> + <widget class="QLineEdit" name="bandwidthEdit" > + <property name="geometry" > + <rect> + <x>130</x> + <y>90</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLineEdit" name="gainEdit" > + <property name="geometry" > + <rect> + <x>130</x> + <y>60</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="gainLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>60</y> + <width>111</width> + <height>20</height> + </rect> + </property> + <property name="text" > + <string>Gain (dB)</string> + </property> + </widget> + <widget class="QLineEdit" name="freqEdit" > + <property name="geometry" > + <rect> + <x>130</x> + <y>30</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="freqLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>30</y> + <width>111</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Frequency</string> + </property> + </widget> + </widget> + <widget class="QPushButton" name="pauseButton" > + <property name="geometry" > + <rect> + <x>790</x> + <y>520</y> + <width>101</width> + <height>31</height> + </rect> + </property> + <property name="text" > + <string>Pause</string> + </property> + </widget> + <widget class="QGroupBox" name="fmBox" > + <property name="geometry" > + <rect> + <x>290</x> + <y>520</y> + <width>251</width> + <height>131</height> + </rect> + </property> + <property name="title" > + <string>FM Tuner Parameters</string> + </property> + <widget class="QLineEdit" name="volumeEdit" > + <property name="geometry" > + <rect> + <x>130</x> + <y>20</y> + <width>113</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="volumeLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>20</y> + <width>111</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Volume</string> + </property> + </widget> + </widget> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>909</width> + <height>24</height> + </rect> + </property> + <widget class="QMenu" name="menuFile" > + <property name="title" > + <string>&File</string> + </property> + <addaction name="actionExit" /> + </widget> + <addaction name="menuFile" /> + </widget> + <widget class="QStatusBar" name="statusbar" /> + <action name="actionExit" > + <property name="text" > + <string>E&xit</string> + </property> + </action> + </widget> + <tabstops> + <tabstop>closeButton</tabstop> + <tabstop>gainEdit</tabstop> + <tabstop>freqEdit</tabstop> + <tabstop>bandwidthEdit</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>closeButton</sender> + <signal>clicked()</signal> + <receiver>InterfaceWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel" > + <x>322</x> + <y>623</y> + </hint> + <hint type="destinationlabel" > + <x>66</x> + <y>561</y> + </hint> + </hints> + </connection> + <connection> + <sender>actionExit</sender> + <signal>triggered()</signal> + <receiver>InterfaceWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel" > + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel" > + <x>617</x> + <y>327</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/gnuradio-examples/python/usrp2/usrp2_wfm_qt.py b/gnuradio-examples/python/usrp2/usrp2_wfm_qt.py new file mode 100755 index 000000000..0be21ceb9 --- /dev/null +++ b/gnuradio-examples/python/usrp2/usrp2_wfm_qt.py @@ -0,0 +1,352 @@ +#!/usr/bin/env python +# +# Copyright 2005,2006,2007,2008,2009 Free Software Foundation, Inc. +# +# This file is part of GNU Radio +# +# GNU Radio is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Radio is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Radio; see the file COPYING. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, +# Boston, MA 02110-1301, USA. +# + +from gnuradio import gr, gru, eng_notation, optfir +from gnuradio import audio +from gnuradio import usrp2 +from gnuradio import blks2 +from gnuradio.eng_option import eng_option +from optparse import OptionParser +import sys +import math + + +try: + from gnuradio.qtgui import qtgui + from PyQt4 import QtGui, QtCore + import sip +except ImportError: + print "Please install gr-qtgui." + sys.exit(1) + +try: + from qt_wfm_interface import Ui_InterfaceWindow +except ImportError: + print "Error: could not find qt_wfm_interface.py:" + print "\tPlease run: \"pyuic4 qt_wfm_interface.ui -o qt_wfm_interface.py\"" + sys.exit(1) + +print "This program is not in a proper working state. Comment this out if you want to play." +sys.exit(1) + + +# //////////////////////////////////////////////////////////////////// +# Define the QT Interface and Control Dialog +# //////////////////////////////////////////////////////////////////// + + +class dialog_box(QtGui.QMainWindow): + def __init__(self, snk_usrp, snk_vol, fg, parent=None): + + QtGui.QWidget.__init__(self, parent) + self.gui = Ui_InterfaceWindow() + self.gui.setupUi(self) + + self.fg = fg + + # Set USRP parameters + self.set_bw(self.fg.usrp_bw()) + self.set_freq(self.fg.freq()) + self.set_gain(self.fg.gain()) + self.set_volume(self.fg.volume()) + + # Add the qtsnk widgets to the hlayout box + self.gui.sinkLayout.addWidget(snk_usrp) + self.gui.sinkLayout.addWidget(snk_vol) + + + # Connect up some signals + self.connect(self.gui.pauseButton, QtCore.SIGNAL("clicked()"), + self.pauseFg) + + self.connect(self.gui.bandwidthEdit, QtCore.SIGNAL("editingFinished()"), + self.bwEditText) + self.connect(self.gui.freqEdit, QtCore.SIGNAL("editingFinished()"), + self.freqEditText) + self.connect(self.gui.gainEdit, QtCore.SIGNAL("editingFinished()"), + self.gainEditText) + + self.connect(self.gui.volumeEdit, QtCore.SIGNAL("editingFinished()"), + self.volumeEditText) + + + def pauseFg(self): + if(self.gui.pauseButton.text() == "Pause"): + self.fg.stop() + self.fg.wait() + self.gui.pauseButton.setText("Unpause") + else: + self.fg.start() + self.gui.pauseButton.setText("Pause") + + + # Accessor functions for Gui to manipulate USRP + def set_bw(self, bw): + self.gui.bandwidthEdit.setText(QtCore.QString("%1").arg(bw)) + + def set_freq(self, freq): + self.gui.freqEdit.setText(QtCore.QString("%1").arg(freq)) + + def set_gain(self, gain): + self.gui.gainEdit.setText(QtCore.QString("%1").arg(gain)) + + def set_volume(self, vol): + self.gui.volumeEdit.setText(QtCore.QString("%1").arg(vol)) + + def bwEditText(self): + try: + bw = self.gui.bandwidthEdit.text().toDouble()[0] + self.fg.set_usrp_bw(bw) + except RuntimeError: + pass + + def freqEditText(self): + try: + freq = self.gui.freqEdit.text().toDouble()[0] + self.fg.set_freq(freq) + except RuntimeError: + pass + + def gainEditText(self): + try: + gain = self.gui.gainEdit.text().toDouble()[0] + self.fg.set_gain(gain) + except RuntimeError: + pass + + def volumeEditText(self): + try: + vol = self.gui.volumeEdit.text().toDouble()[0] + self.fg.set_volume(vol) + except RuntimeError: + pass + + + + +# //////////////////////////////////////////////////////////////////// +# Define the GNU Radio Top Block +# //////////////////////////////////////////////////////////////////// + + +class wfm_rx_block (gr.top_block): + def __init__(self): + gr.top_block.__init__(self) + + parser = OptionParser(option_class=eng_option) + parser.add_option("-e", "--interface", type="string", default="eth0", + help="select Ethernet interface, default is eth0") + parser.add_option("-m", "--mac-addr", type="string", default="", + help="select USRP by MAC address, default is auto-select") + #parser.add_option("-A", "--antenna", default=None, + # help="select Rx Antenna (only on RFX-series boards)") + parser.add_option("-f", "--freq", type="eng_float", default=100.1, + help="set frequency to FREQ", metavar="FREQ") + parser.add_option("-g", "--gain", type="eng_float", default=None, + help="set gain in dB (default is midpoint)") + parser.add_option("-V", "--volume", type="eng_float", default=None, + help="set volume (default is midpoint)") + parser.add_option("-O", "--audio-output", type="string", default="", + help="pcm device name. E.g., hw:0,0 or surround51 or /dev/dsp") + + (options, args) = parser.parse_args() + if len(args) != 0: + parser.print_help() + sys.exit(1) + + self._volume = options.volume + self._usrp_freq = options.freq + self._usrp_gain = options.gain + self._audio_rate = int(32e3) + + # build graph + + self.u = usrp2.source_32fc(options.interface, options.mac_addr) + + # calculate decimation values to get USRP BW at 320 kHz + self.calculate_usrp_bw(320e3) + + self.set_decim(self._usrp_decim) + + #FIXME: need named constants and text descriptions available to (gr-)usrp2 even + #when usrp(1) module is not built. A usrp_common module, perhaps? + dbid = self.u.daughterboard_id() + print "Using RX d'board 0x%04X" % (dbid,) + #if not (dbid == 0x0001 or #usrp_dbid.BASIC_RX + # dbid == 0x0003 or #usrp_dbid.TV_RX + # dbid == 0x000c or #usrp_dbid.TV_RX_REV_2 + # dbid == 0x0040): #usrp_dbid.TV_RX_REV_3 + # print "This daughterboard does not cover the required frequency range" + # print "for this application. Please use a BasicRX or TVRX daughterboard." + # raw_input("Press ENTER to continue anyway, or Ctrl-C to exit.") + + chan_filt_coeffs = optfir.low_pass (1, # gain + self._usrp_rate, # sampling rate + 80e3, # passband cutoff + 115e3, # stopband cutoff + 0.1, # passband ripple + 60) # stopband attenuation + #print len(chan_filt_coeffs) + chan_filt = gr.fir_filter_ccf (self._chanfilt_decim, chan_filt_coeffs) + + self.guts = blks2.wfm_rcv (self._demod_rate, self._audio_decim) + + self.volume_control = gr.multiply_const_ff(1) + + # sound card as final sink + #audio_sink = audio.sink (int (audio_rate), + # options.audio_output, + # False) # ok_to_block + audio_sink = audio.sink (self._audio_rate, + options.audio_output) + + + if self._usrp_gain is None: + # if no gain was specified, use the mid-point in dB + g = self.u.gain_range() + print "Gain range: ", g + self._usrp_gain = float(g[0]+g[1])/2 + + if self._volume is None: + g = self.volume_range() + self._volume = float(g[0]+g[1])/2 + + if abs(self._usrp_freq) < 1e6: + self._usrp_freq *= 1e6 + + # set initial values + self.set_gain(self._usrp_gain) + self.set_volume(self._volume) + if not(self.set_freq(self._usrp_freq)): + print ("Failed to set initial frequency") + + + # Define a GUI sink to display the received signal + self.qapp = QtGui.QApplication(sys.argv) + fftsize = 2048 + + self.usrp_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, + -self._usrp_rate/2.0, self._usrp_rate/2.0, + "Received Signal", True, True, False, True, False, + use_openGL=False) + self.usrp_rx2 = qtgui.sink_f(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, + -self._usrp_rate/2.0, self._usrp_rate/2.0, + "Received Signal", True, True, False, True, False) + + # now wire it all together + self.connect (self.u, chan_filt, self.guts, self.volume_control, audio_sink) + self.connect (self.u, self.usrp_rx) + self.connect (self.volume_control, self.usrp_rx2) + + usrp_rx_widget = sip.wrapinstance(self.usrp_rx.pyqwidget(), QtGui.QWidget) + usrp_rx2_widget = sip.wrapinstance(self.usrp_rx2.pyqwidget(), QtGui.QWidget) + + self.main_box = dialog_box(usrp_rx_widget, usrp_rx2_widget, self) + self.main_box.show() + + + def calculate_usrp_bw(self, bw): + """ + Calculate the different decimation rates that make the USRP BW equal to the + input bandwidth parameter 'bw' and the audio bandwidth equal to the system- + wide bandwidth 'self._audio_rate' + """ + + adc_rate = self.u.adc_rate() + d_usrp = int(adc_rate/bw) + bw_real = adc_rate / float(d_usrp) + + d_chan = 1 + demod_rate = bw_real / d_chan + + d_audio = int(bw_real / self._audio_rate) + audio_rate = demod_rate / d_audio + + self._usrp_decim = d_usrp + self._chanfilt_decim = d_chan + self._audio_decim = d_audio + self._demod_rate = demod_rate + self._usrp_rate = bw_real + + print "USRP Decimation: ", self._usrp_decim + print "USRP Bandwidth: ", bw_real + print "Audio Decimation: ", self._audio_decim + print "Audio Bandwidth: ", audio_rate + + def set_volume (self, vol): + g = self.volume_range() + self._volume = max(g[0], min(g[1], vol)) + self.volume_control.set_k(10**(self._volume/10)) + + def set_freq(self, target_freq): + """ + Set the center frequency we're interested in. + + @param target_freq: frequency in Hz + @rypte: bool + + Tuning is a two step process. First we ask the front-end to + tune as close to the desired frequency as it can. Then we use + the result of that operation and our target_frequency to + determine the value for the digital down converter. + """ + r = self.u.set_center_freq(target_freq) + if r: + self._usrp_freq = target_freq + return True + return False + + def set_usrp_bw(self, bw): + self.calculate_usrp_bw(bw) + + def set_gain(self, gain): + self._usrp_gain = gain + self.u.set_gain(gain) + + def set_decim(self, decim): + self._usrp_decim = int(decim) + self.u.set_decim(self._usrp_decim) + + def volume(self): + return self._volume + + def freq(self): + return self._usrp_freq + + def usrp_bw(self): + return self._usrp_rate + + def gain(self): + return self._usrp_gain + + def decim(self): + return self._usrp_decim + + def volume_range(self): + return (-20.0, 0.0, 0.5) + + +if __name__ == '__main__': + tb = wfm_rx_block() + tb.start() + tb.qapp.exec_() + |