!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# SPDX-License-Identifier: GPL-3.0
#
# GNU Radio Python Flow Graph
# Title: Not titled yet
# GNU Radio version: 3.8.1.0
from distutils.version import StrictVersion
if __name__ == '__main__':
import ctypes
import sys
if sys.platform.startswith('linux'):
try:
x11 = ctypes.cdll.LoadLibrary('libX11.so')
x11.XInitThreads()
except:
print("Warning: failed to XInitThreads()")
from PyQt5 import Qt
from gnuradio import qtgui
from gnuradio.filter import firdes
import sip
from gnuradio import analog
from gnuradio import audio
from gnuradio import blocks
from gnuradio import filter
from gnuradio import gr
import sys
import signal
from argparse import ArgumentParser
from gnuradio.eng_arg import eng_float, intx
from gnuradio import eng_notation
from gnuradio import qtgui
class Fm(gr.top_block, Qt.QWidget):
def __init__(self):
gr.top_block.__init__(self, "Not titled yet")
Qt.QWidget.__init__(self)
self.setWindowTitle("Not titled yet")
qtgui.util.check_set_qss()
try:
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
except:
pass
self.top_scroll_layout = Qt.QVBoxLayout()
self.setLayout(self.top_scroll_layout)
self.top_scroll = Qt.QScrollArea()
self.top_scroll.setFrameStyle(Qt.QFrame.NoFrame)
self.top_scroll_layout.addWidget(self.top_scroll)
self.top_scroll.setWidgetResizable(True)
self.top_widget = Qt.QWidget()
self.top_scroll.setWidget(self.top_widget)
self.top_layout = Qt.QVBoxLayout(self.top_widget)
self.top_grid_layout = Qt.QGridLayout()
self.top_layout.addLayout(self.top_grid_layout)
self.settings = Qt.QSettings("GNU Radio", "Fm")
try:
if StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
self.restoreGeometry(self.settings.value("geometry").toByteArray())
else:
self.restoreGeometry(self.settings.value("geometry"))
except:
pass
##################################################
# Variables
##################################################
self.samp_rate = samp_rate = 1000000
##################################################
# Blocks
##################################################
self.rational_resampler_xxx_0 = filter.rational_resampler_fff(
interpolation=1,
decimation=1,
taps=None,
fractional_bw=None)
self.qtgui_sink_x_1 = qtgui.sink_c(
1024, #fftsize
firdes.WIN_BLACKMAN_hARRIS, #wintype
2000000, #fc
samp_rate, #bw
'已调', #name
True, #plotfreq
True, #plotwaterfall
True, #plottime
True #plotconst
)
self.qtgui_sink_x_1.set_update_time(1.0/10)
self._qtgui_sink_x_1_win = sip.wrapinstance(self.qtgui_sink_x_1.pyqwidget(), Qt.QWidget)
self.qtgui_sink_x_1.enable_rf_freq(False)
self.top_grid_layout.addWidget(self._qtgui_sink_x_1_win)
self.qtgui_sink_x_0 = qtgui.sink_f(
1024, #fftsize
firdes.WIN_BLACKMAN_hARRIS, #wintype
2000000, #fc
samp_rate, #bw
'音频', #name
True, #plotfreq
True, #plotwaterfall
True, #plottime
True #plotconst
)
self.qtgui_sink_x_0.set_update_time(1.0/10)
self._qtgui_sink_x_0_win = sip.wrapinstance(self.qtgui_sink_x_0.pyqwidget(), Qt.QWidget)
self.qtgui_sink_x_0.enable_rf_freq(False)
self.top_grid_layout.addWidget(self._qtgui_sink_x_0_win)
self.blocks_wavfile_source_0 = blocks.wavfile_source('/home/dengxu/桌面/FM/悠悠琴韵 - 所念皆星河~星河不可及.wav', True)
self.blocks_complex_to_float_0 = blocks.complex_to_float(1)
self.audio_sink_1 = audio.sink(samp_rate, '', True)
self.analog_wfm_tx_0 = analog.wfm_tx(
audio_rate=200000,
quad_rate=800000,
tau=75e-6,
max_dev=75e3,
fh=-1.0,
)
##################################################
# Connections
##################################################
self.connect((self.analog_wfm_tx_0, 0), (self.blocks_complex_to_float_0, 0))
self.connect((self.analog_wfm_tx_0, 0), (self.qtgui_sink_x_1, 0))
self.connect((self.blocks_complex_to_float_0, 0), (self.audio_sink_1, 0))
self.connect((self.blocks_wavfile_source_0, 0), (self.qtgui_sink_x_0, 0))
self.connect((self.blocks_wavfile_source_0, 0), (self.rational_resampler_xxx_0, 0))
self.connect((self.rational_resampler_xxx_0, 0), (self.analog_wfm_tx_0, 0))
def closeEvent(self, event):
self.settings = Qt.QSettings("GNU Radio", "Fm")
self.settings.setValue("geometry", self.saveGeometry())
event.accept()
def get_samp_rate(self):
return self.samp_rate
def set_samp_rate(self, samp_rate):
self.samp_rate = samp_rate
self.qtgui_sink_x_0.set_frequency_range(2000000, self.samp_rate)
self.qtgui_sink_x_1.set_frequency_range(2000000, self.samp_rate)
def main(top_block_cls=Fm, options=None):
if StrictVersion("4.5.0") <= StrictVersion(Qt.qVersion()) < StrictVersion("5.0.0"):
style = gr.prefs().get_string('qtgui', 'style', 'raster')
Qt.QApplication.setGraphicsSystem(style)
qapp = Qt.QApplication(sys.argv)
tb = top_block_cls()
tb.start()
tb.show()
def sig_handler(sig=None, frame=None):
Qt.QApplication.quit()
signal.signal(signal.SIGINT, sig_handler)
signal.signal(signal.SIGTERM, sig_handler)
timer = Qt.QTimer()
timer.start(500)
timer.timeout.connect(lambda: None)
def quitting():
tb.stop()
tb.wait()
qapp.aboutToQuit.connect(quitting)
qapp.exec_()
if __name__ == '__main__':
main()