summaryrefslogtreecommitdiff
path: root/gr-qtgui/apps/gr_time_plot_c
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/apps/gr_time_plot_c')
-rwxr-xr-xgr-qtgui/apps/gr_time_plot_c141
1 files changed, 25 insertions, 116 deletions
diff --git a/gr-qtgui/apps/gr_time_plot_c b/gr-qtgui/apps/gr_time_plot_c
index 2f27623e5..4450a2074 100755
--- a/gr-qtgui/apps/gr_time_plot_c
+++ b/gr-qtgui/apps/gr_time_plot_c
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright 2012 Free Software Foundation, Inc.
+# Copyright 2012,2013 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
@@ -21,9 +21,12 @@
#
from gnuradio import gr
-from gnuradio.eng_option import eng_option
-from optparse import OptionParser
-import os, sys
+import scipy
+
+try:
+ import gnuradio.qtgui.plot_time_base as plot_base
+except ImportError:
+ import plot_time_base as plot_base
try:
from gnuradio import qtgui
@@ -33,127 +36,33 @@ except ImportError:
print "Error: Program requires PyQt4 and gr-qtgui."
sys.exit(1)
-try:
- import scipy
-except ImportError:
- print "Error: Scipy required (www.scipy.org)."
- sys.exit(1)
-
-try:
- from gnuradio.qtgui.plot_form import *
-except ImportError:
- from plot_form import *
-
-def read_samples(filename, start, in_size):
- # Read in_size number of samples from file
- fhandle = open(filename, 'r')
- fhandle.seek(start*gr.sizeof_gr_complex, 0)
- data = scipy.fromfile(fhandle, dtype=scipy.complex64, count=in_size)
- data = data.tolist()
- fhandle.close()
-
- if(len(data) < in_size):
- print "Warning: read in {0} samples but asked for {1} samples.".format(
- len(data), in_size)
-
- return data
-
-class my_top_block(gr.top_block):
- def __init__(self, filelist, samp_rate, start, nsamples, max_nsamples):
- gr.top_block.__init__(self)
-
- self._filelist = filelist
- self._samp_rate = samp_rate
- self._start = start
- self._max_nsamps = max_nsamples
- self._nsigs = len(self._filelist)
-
- if(nsamples is None):
- self._nsamps = max_nsamples
- else:
- self._nsamps = nsamples
-
- self.qapp = QtGui.QApplication(sys.argv)
-
- self.skip = gr.skiphead(gr.sizeof_gr_complex, self._start)
+class plot_time_c(plot_base.plot_base):
+ def __init__(self, filelist, samp_rate,
+ start, nsamples, max_nsamples,
+ auto_scale):
+ plot_base.plot_base.__init__(self, filelist, samp_rate,
+ start, nsamples, max_nsamples,
+ auto_scale)
+ self.read_samples = plot_base.read_samples_c
+ self.dsize = gr.sizeof_gr_complex
+ self.src_type = gr.vector_source_c
self.gui_snk = qtgui.time_sink_c(self._nsamps, self._samp_rate,
"GNU Radio Time Plot", self._nsigs)
- n = 0
- self.srcs = list()
- for f in filelist:
- data = read_samples(f, self._start, self._nsamps)
- self.srcs.append(gr.vector_source_c(data))
-
- # Set default labels based on file names
- fname = f.split("/")[-1]
- self.gui_snk.set_line_label(n, "Re{{{0}}}".format(fname))
- self.gui_snk.set_line_label(n+1, "Im{{{0}}}".format(fname))
- n += 2
-
- self.connect(self.srcs[0], self.skip)
- self.connect(self.skip, (self.gui_snk, 0))
-
- for i,s in enumerate(self.srcs[1:]):
- self.connect(s, (self.gui_snk, i+1))
-
- self.gui_snk.set_update_time(0);
-
- # Get Python Qt references
- pyQt = self.gui_snk.pyqwidget()
- self.pyWin = sip.wrapinstance(pyQt, QtGui.QWidget)
-
- def get_gui(self):
- return self.pyWin
-
- def reset(self, newstart, newnsamps):
- self.stop()
- self.wait()
-
- self._start = newstart
-
- for s,f in zip(self.srcs, self._filelist):
- data = read_samples(f, self._start, newnsamps)
- s.set_data(data)
- if(len(data) < newnsamps):
- newnsamps = len(data)
-
- self._nsamps = newnsamps
- self.gui_snk.set_nsamps(self._nsamps)
-
- self.start()
+ self._nsigs *= 2 # complex plots have real/imag
+ self.setup()
def main():
description = "Plots a list of files on a scope plot. Files are a binary list of complex floats."
- parser = OptionParser(option_class=eng_option, description=description,
- conflict_handler="resolve")
- parser.add_option("-N", "--nsamples", type="int", default=None,
- help="Set the number of samples to display [default=prints entire file]")
- parser.add_option("-S", "--start", type="int", default=0,
- help="Starting sample number [default=%default]")
- parser.add_option("-r", "--sample-rate", type="eng_float", default=1.0,
- help="Set the sample rate of the signal [default=%default]")
- (options, args) = parser.parse_args()
-
- if(len(args) < 1):
- parser.print_help()
- sys.exit(0)
+ (options, args) = plot_base.setup_options(description)
filelist = list(args)
+ max_nsamples = plot_base.find_max_nsamples(filelist)
- nsamples = options.nsamples
-
- # Find the smallest number of samples in all files and use that as
- # a maximum value possible.
- filesizes = []
- for f in filelist:
- if(os.path.exists(f)):
- filesizes.append(os.path.getsize(f) / gr.sizeof_gr_complex)
- max_nsamples = min(filesizes)
-
- tb = my_top_block(filelist, options.sample_rate,
- options.start, nsamples, max_nsamples);
+ tb = plot_time_c(filelist, options.sample_rate,
+ options.start, options.nsamples, max_nsamples,
+ not options.no_auto_scale)
- main_box = dialog_box(tb, 'GNU Radio Time Plot')
+ main_box = plot_base.plot_time_form(tb, 'GNU Radio Time Plot')
main_box.show()
tb.run()