3 from gnuradio import gr, blks2
4 from gnuradio.qtgui import qtgui
5 from PyQt4 import QtGui, QtCore
10 from qt_digital_window import Ui_DigitalWindow
12 print "Error: could not find qt_digital_window.py:"
13 print "\t\"pyuic4 qt_digital_window.ui -o qt_digital_window.py\""
16 class dialog_box(QtGui.QMainWindow):
17 def __init__(self, snkTx, snkRx, channel, parent=None):
18 QtGui.QWidget.__init__(self, parent)
19 self.gui = Ui_DigitalWindow()
20 self.gui.setupUi(self)
22 self.channel = channel
24 # Add the qtsnk widgets to the hlayout box
25 self.gui.sinkLayout.addWidget(snkTx)
26 self.gui.sinkLayout.addWidget(snkRx)
28 # Connect up some signals
29 self.connect(self.gui.noiseEdit, QtCore.SIGNAL("editingFinished()"),
31 self.connect(self.gui.freqEdit, QtCore.SIGNAL("editingFinished()"),
33 self.connect(self.gui.timeEdit, QtCore.SIGNAL("editingFinished()"),
36 def set_noise(self, noise):
38 self.gui.noiseEdit.setText(QtCore.QString("%1").arg(self.noise))
40 def set_frequency(self, freq):
42 self.gui.freqEdit.setText(QtCore.QString("%1").arg(self.freq))
44 def set_time_offset(self, to):
45 self.timing_offset = to
46 self.gui.timeEdit.setText(QtCore.QString("%1").arg(self.timing_offset))
48 def noiseEditText(self):
50 noise = self.gui.noiseEdit.text().toDouble()[0]
51 self.channel.set_noise_voltage(noise)
57 def freqEditText(self):
59 freq = self.gui.freqEdit.text().toDouble()[0]
60 self.channel.set_frequency_offset(freq)
66 def timeEditText(self):
68 to = self.gui.timeEdit.text().toDouble()[0]
69 self.channel.set_timing_offset(to)
71 self.timing_offset = to
76 class my_top_block(gr.top_block):
78 gr.top_block.__init__(self)
80 self.qapp = QtGui.QApplication(sys.argv)
88 data = scipy.random.randint(0, 255, 1000)
89 src = gr.vector_source_b(data, True)
90 mod = blks2.dqpsk_mod(sps, excess_bw, gray_code, False, False)
92 rrctaps = gr.firdes.root_raised_cosine(1, sps, 1, excess_bw, 21)
93 rx_rrc = gr.fir_filter_ccf(sps, rrctaps)
98 channel = gr.channel_model(noise, fo, to)
100 thr = gr.throttle(gr.sizeof_gr_complex, 10*fftsize)
101 self.snk_tx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, -1/2, 1/2,
102 "Tx", True, True, False, True, True)
104 self.snk_rx = qtgui.sink_c(fftsize, gr.firdes.WIN_BLACKMAN_hARRIS, -1/2, 1/2,
105 "Rx", True, True, False, True, True)
107 self.connect(src, mod, channel, self.snk_tx)
108 self.connect(channel, rx_rrc, thr, self.snk_rx)
110 pyTxQt = self.snk_tx.pyqwidget()
111 pyTx = sip.wrapinstance(pyTxQt, QtGui.QWidget)
113 pyRxQt = self.snk_rx.pyqwidget()
114 pyRx = sip.wrapinstance(pyRxQt, QtGui.QWidget)
116 self.main_box = dialog_box(pyTx, pyRx, channel);
117 self.main_box.set_noise(noise)
118 self.main_box.set_frequency(fo)
119 self.main_box.set_time_offset(to)
124 if __name__ == "__main__":