#!/usr/bin/env python # # Copyright 2012,2013 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 from gnuradio import blocks from gnuradio import filter import scipy try: import gnuradio.qtgui.plot_spectrogram_base as plot_base except ImportError: import plot_spectrogram_base as plot_base try: from gnuradio import qtgui from PyQt4 import QtGui, QtCore import sip except ImportError: print "Error: Program requires PyQt4 and gr-qtgui." sys.exit(1) class spectrogram_plot_c(plot_base.plot_base): def __init__(self, filelist, fc, samp_rate, psdsize, start, nsamples, max_nsamples, avg=1.0): plot_base.plot_base.__init__(self, filelist, fc, samp_rate, psdsize, start, nsamples, max_nsamples, avg) self.read_samples = plot_base.read_samples_c self.dsize = gr.sizeof_gr_complex self.src_type = blocks.vector_source_c self.gui_snk = qtgui.waterfall_sink_c(self._psd_size, filter.firdes.WIN_BLACKMAN_hARRIS, self._center_freq, self._samp_rate, "", self._nsigs) self.setup() def main(): description = "Plots the spectrogram (waterfall) of a list of files. Files are a binary list of complex floats." args = plot_base.setup_options(description) max_nsamples = plot_base.find_max_nsamples(args.files) tb = spectrogram_plot_c(args.files, args.center_frequency, args.sample_rate, args.psd_size, args.start, args.nsamples, max_nsamples, args.average); main_box = plot_base.plot_spectrogram_form(tb, 'GNU Radio Spectrogram Plot') main_box.show() tb.run() tb.qapp.exec_() if __name__ == "__main__": try: main() except KeyboardInterrupt: pass