summaryrefslogtreecommitdiff
path: root/gnuradio-core/src/python
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2013-02-17 19:56:21 -0500
committerTom Rondeau <trondeau@vt.edu>2013-02-17 19:56:21 -0500
commit6b3b5a5757bea2e89738aeaa6077abc9cb847b44 (patch)
tree367507b09f121664aab8cc227ea7d14515b962c8 /gnuradio-core/src/python
parent79c51dce02f1a6f45faf60cabca2820de959ffdb (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.py101
-rwxr-xr-xgnuradio-core/src/python/gnuradio/ctrlport/gr-ctrlport-monitor14
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)