diff options
author | Tom Rondeau <trondeau@vt.edu> | 2013-02-17 19:56:21 -0500 |
---|---|---|
committer | Tom Rondeau <trondeau@vt.edu> | 2013-02-17 19:56:21 -0500 |
commit | 6b3b5a5757bea2e89738aeaa6077abc9cb847b44 (patch) | |
tree | 367507b09f121664aab8cc227ea7d14515b962c8 /gnuradio-core/src/python | |
parent | 79c51dce02f1a6f45faf60cabca2820de959ffdb (diff) |
ctrlport: adding display type for stripchart as opposed to timeseries.
Stripcharts add data to the back of what's plotted; time series plots just plot the vector given. All single-value RPC vars have been converted to use stripchart mode.
Diffstat (limited to 'gnuradio-core/src/python')
-rw-r--r-- | gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py | 101 | ||||
-rwxr-xr-x | gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor | 14 |
2 files changed, 66 insertions, 49 deletions
diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py b/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py index b96a47e77f..1990e21aa4 100644 --- a/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py +++ b/gnuradio-core/src/python/gnuradio/ctrlport/GrDataPlotter.py @@ -32,9 +32,10 @@ except ImportError: sys.exit(1) class GrDataPlotterC(gr.top_block): - def __init__(self, name, rate, pmin=None, pmax=None): + def __init__(self, name, rate, pmin=None, pmax=None, stripchart=False): gr.top_block.__init__(self) + self._stripchart = stripchart self._name = name self._npts = 500 samp_rate = 1.0 @@ -84,33 +85,39 @@ class GrDataPlotterC(gr.top_block): self._npts = npts self.snk.reset() - # Update the plot data depending on type - if(type(data) == list): - data_r = data[0::2] - data_i = data[1::2] - data = [complex(r,i) for r,i in zip(data_r, data_i)] - if(len(data) > self._npts): - self.src.set_data(data) - self._last_data = data[-self._npts:] - else: - newdata = self._last_data[-(self._npts-len(data)):] - newdata += data - self.src.set_data(newdata) - self._last_data = newdata - - else: # single value update - if(self._data_len < self._npts): - self._last_data[self._data_len] = data - self._data_len += 1 - else: - self._last_data = self._last_data[1:] - self._last_data.append(data) - self.src.set_data(self._last_data) + if(self._stripchart): + # Update the plot data depending on type + if(type(data) == list): + data_r = data[0::2] + data_i = data[1::2] + data = [complex(r,i) for r,i in zip(data_r, data_i)] + if(len(data) > self._npts): + self.src.set_data(data) + self._last_data = data[-self._npts:] + else: + newdata = self._last_data[-(self._npts-len(data)):] + newdata += data + self.src.set_data(newdata) + self._last_data = newdata + + else: # single value update + if(self._data_len < self._npts): + self._last_data[self._data_len] = data + self._data_len += 1 + else: + self._last_data = self._last_data[1:] + self._last_data.append(data) + self.src.set_data(self._last_data) + else: + if(type(data) != list): + data = [data,] + self.src.set_data(data) class GrDataPlotterF(gr.top_block): - def __init__(self, name, rate, pmin=None, pmax=None): + def __init__(self, name, rate, pmin=None, pmax=None, stripchart=False): gr.top_block.__init__(self) + self._stripchart = stripchart self._name = name self._npts = 500 samp_rate = 1.0 @@ -156,28 +163,32 @@ class GrDataPlotterF(gr.top_block): self._last_data += (npts - self._npts)*[0,] self._npts = npts self.snk.reset() - - # Update the plot data depending on type - if(type(data) == list): - if(len(data) > self._npts): - self.src.set_data(data) - self._last_data = data[-self._npts:] - else: - newdata = self._last_data[-(self._npts-len(data)):] - newdata += data - self.src.set_data(newdata) - self._last_data = newdata - - else: # single value update - if(self._data_len < self._npts): - self._last_data[self._data_len] = data - self._data_len += 1 - else: - self._last_data = self._last_data[1:] - self._last_data.append(data) - self.src.set_data(self._last_data) - + if(self._stripchart): + # Update the plot data depending on type + if(type(data) == list): + if(len(data) > self._npts): + self.src.set_data(data) + self._last_data = data[-self._npts:] + else: + newdata = self._last_data[-(self._npts-len(data)):] + newdata += data + self.src.set_data(newdata) + self._last_data = newdata + + else: # single value update + if(self._data_len < self._npts): + self._last_data[self._data_len] = data + self._data_len += 1 + else: + self._last_data = self._last_data[1:] + self._last_data.append(data) + self.src.set_data(self._last_data) + else: + if(type(data) != list): + data = [data,] + self.src.set_data(data) + class GrDataPlotterConst(gr.top_block): def __init__(self, name, rate, pmin=None, pmax=None): gr.top_block.__init__(self) diff --git a/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor b/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor index 7e3384d017..4625a2d863 100755 --- a/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor +++ b/gnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor @@ -192,6 +192,10 @@ class MAINWindow(QtGui.QMainWindow): self.newPlotF(tag, uid, title, pmin, pmax, True) elif(knobprop.display == GNURadio.DisplayType.DISPLOGTIMESERIESC): self.newPlotC(tag, uid, title, pmin, pmax, True) + elif(knobprop.display == GNURadio.DisplayType.DISPSTRIPCHARTF): + self.newPlotC(tag, uid, title, pmin, pmax, False, True) + elif(knobprop.display == GNURadio.DisplayType.DISPSTRIPCHARTC): + self.newPlotC(tag, uid, title, pmin, pmax, False, True) def createPlot(self, plot, uid, title): plot.start() @@ -216,13 +220,15 @@ class MAINWindow(QtGui.QMainWindow): plot = GrDataPlotterConst(tag, 32e6, pmin, pmax) self.createPlot(plot, uid, title) - def newPlotF(self, tag, uid, title="", pmin=None, pmax=None, logy=False): - plot = GrDataPlotterF(tag, 32e6, pmin, pmax) + def newPlotF(self, tag, uid, title="", pmin=None, pmax=None, + logy=False, stripchart=False): + plot = GrDataPlotterF(tag, 32e6, pmin, pmax, stripchart) plot.semilogy(logy) self.createPlot(plot, uid, title) - def newPlotC(self, tag, uid, title="", pmin=None, pmax=None, logy=False): - plot = GrDataPlotterC(tag, 32e6, pmin, pmax) + def newPlotC(self, tag, uid, title="", pmin=None, pmax=None, + logy=False, stripchart=False): + plot = GrDataPlotterC(tag, 32e6, pmin, pmax, stripchart) plot.semilogy(logy) self.createPlot(plot, uid, title) |