summaryrefslogtreecommitdiffstats
path: root/pyk8055/pyplotD.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyk8055/pyplotD.py')
-rwxr-xr-xpyk8055/pyplotD.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/pyk8055/pyplotD.py b/pyk8055/pyplotD.py
new file mode 100755
index 0000000..9145b37
--- /dev/null
+++ b/pyk8055/pyplotD.py
@@ -0,0 +1,113 @@
+#!/usr/bin/env python
+# $Id: pyplotD.py,v 1.2 2007/03/15 14:55:38 pjetur Exp $
+#
+# Simple plotting of digital input data from the K8055 board
+#
+# based on the running plot sample from pyQwt
+# The Python version of qwt-*/examples/data_plot/data_plot.cpp
+
+import random, sys
+from qt import *
+from qwt import *
+from Numeric import *
+from pyk8055 import *
+
+class DataPlot(QwtPlot):
+
+ def __init__(self, *args):
+ QwtPlot.__init__(self, *args)
+
+ # Initialize data
+ self.x = arrayrange(0.0, 100.1, 0.5)
+ self.d1 = 0.0 + zeros(len(self.x), Float)
+ self.d2 = 1.0 + zeros(len(self.x), Float) # shift data up 1
+ self.d3 = 2.0 + zeros(len(self.x), Float) # Shift data up 2...
+ self.d4 = 3.0 + zeros(len(self.x), Float)
+ self.d5 = 4.0 + zeros(len(self.x), Float)
+
+ self.setTitle("Simple K8055 datascope")
+ self.setAutoLegend(True)
+
+ self.curve1 = self.insertCurve("Input 1")
+ self.curve2 = self.insertCurve("Input 2")
+ self.curve3 = self.insertCurve("Input 3")
+ self.curve4 = self.insertCurve("Input 4")
+ self.curve5 = self.insertCurve("Input 5")
+
+ self.setCurvePen(self.curve1, QPen(Qt.red))
+ self.setCurvePen(self.curve2, QPen(Qt.blue))
+ self.setCurvePen(self.curve3, QPen(Qt.green))
+ self.setCurvePen(self.curve4, QPen(Qt.black))
+ self.setCurvePen(self.curve5, QPen(Qt.cyan))
+
+ # Make data plot shape square
+ self.setCurveStyle(self.curve1, QwtCurve.Steps)
+ self.setCurveStyle(self.curve2, QwtCurve.Steps)
+ self.setCurveStyle(self.curve3, QwtCurve.Steps)
+ self.setCurveStyle(self.curve4, QwtCurve.Steps)
+ self.setCurveStyle(self.curve5, QwtCurve.Steps)
+
+ # Fixed axis here from 0 to 5
+ self.setAxisScale(QwtPlot.yLeft,0,5,1)
+
+ self.setAxisTitle(QwtPlot.xBottom, "Time (seconds)")
+ self.setAxisTitle(QwtPlot.yLeft, "Values")
+
+ self.startTimer(50)
+
+ # init the K8055 board
+ self.k = k8055(0)
+ # __init__()
+
+ def timerEvent(self, e):
+
+ # data moves from left to right:
+ # shift data array right and assign new value data[0]
+
+ self.d1 = concatenate((self.d1[:1], self.d1[:-1]), 1)
+ self.d1[0] = self.k.ReadDigitalChannel(1) * 0.95
+
+ self.d2 = concatenate((self.d2[:1], self.d2[:-1]), 1)
+ self.d2[0] = self.k.ReadDigitalChannel(2) * 0.95 + 1 # Shift data up 1
+
+ self.d3 = concatenate((self.d3[:1], self.d3[:-1]), 1)
+ self.d3[0] = self.k.ReadDigitalChannel(3) * 0.95 + 2 # Shift data up 2...
+
+ self.d4 = concatenate((self.d4[:1], self.d4[:-1]), 1)
+ self.d4[0] = self.k.ReadDigitalChannel(4) * 0.95 + 3
+
+ self.d5 = concatenate((self.d5[:1], self.d5[:-1]), 1)
+ self.d5[0] = self.k.ReadDigitalChannel(5) * 0.95 + 4
+
+ self.setCurveData(self.curve1, self.x, self.d1)
+ self.setCurveData(self.curve2, self.x, self.d2)
+ self.setCurveData(self.curve3, self.x, self.d3)
+ self.setCurveData(self.curve4, self.x, self.d4)
+ self.setCurveData(self.curve5, self.x, self.d5)
+
+ self.replot()
+
+ # timerEvent()
+
+# class DataPlot
+
+def main(args):
+ app = QApplication(args)
+ demo = make()
+ app.setMainWidget(demo)
+ app.exec_loop()
+
+# main()
+
+def make():
+ demo = DataPlot()
+ demo.resize(500, 300)
+ demo.show()
+ return demo
+
+# make()
+
+# Admire
+if __name__ == '__main__':
+ main(sys.argv)
+