Commit 8ffbc4ad423462be75c94c4cb854d4db68b03f5d
1 parent
e9ac5444
Exists in
master
Split class series into separate module, as part of attempt to declutter main
Showing
2 changed files
with
46 additions
and
41 deletions
Show diff stats
robots/little_john/telemetry/code/monitor/version1/main.py
@@ -21,6 +21,7 @@ import logging | @@ -21,6 +21,7 @@ import logging | ||
21 | 21 | ||
22 | from serialselect import selectserial | 22 | from serialselect import selectserial |
23 | from colours import * | 23 | from colours import * |
24 | +from series import Series | ||
24 | 25 | ||
25 | logging.basicConfig(format='%(levelname)s:\t%(message)s', level=logging.DEBUG) | 26 | logging.basicConfig(format='%(levelname)s:\t%(message)s', level=logging.DEBUG) |
26 | logging.info("Logging system active") | 27 | logging.info("Logging system active") |
@@ -38,47 +39,6 @@ else: | @@ -38,47 +39,6 @@ else: | ||
38 | os='Other' | 39 | os='Other' |
39 | logging.info('OS = ' + os) | 40 | logging.info('OS = ' + os) |
40 | 41 | ||
41 | -class Series: | ||
42 | - def __init__(self, points=300, title="Series title", xname="x-axis name", yname="y-axis name"): | ||
43 | - """Set up an object to store a 2D data series""" | ||
44 | - # Proposal: | ||
45 | - # In order to neatly handle multiple lines on the same graph | ||
46 | - # a series is not so much a set of 2D data points, but a number | ||
47 | - # of series sharing an x axis. For example | ||
48 | - # (time, temperature) | ||
49 | - # (time, xaccel, yaccel, zaccel) | ||
50 | - # The latter seta of points much be of like nature and share an axis | ||
51 | - # (time, temperature, xaccel) | ||
52 | - # would be a meaningless thing to plot on a single graph anyway | ||
53 | - | ||
54 | - self.title = title | ||
55 | - self.xname = xname | ||
56 | - self.yname = yname | ||
57 | - self.xlimits = (0, 100) | ||
58 | - self.ylimits = (-100, 100) | ||
59 | - self.data = [] | ||
60 | - self.points = points | ||
61 | - | ||
62 | - def addpoint(self, point): | ||
63 | - """Add a point to the dataset, and remove the oldest, if necessary""" | ||
64 | - self.data.append(point) | ||
65 | - if len(self.data) > self.points: | ||
66 | - del self.data[0] | ||
67 | - self.autoscale(0) | ||
68 | - | ||
69 | - def autoscale(self, axis): # axis=0 is x, 1 is y | ||
70 | - minval = self.data[0][axis] | ||
71 | - maxval = self.data[0][axis] | ||
72 | - for value in self.data: | ||
73 | - if value[axis] < minval: | ||
74 | - minval = value[axis] | ||
75 | - if value[axis] > maxval: | ||
76 | - maxval = value[axis] | ||
77 | - if axis == 0: | ||
78 | - self.xlimits = (minval, maxval) | ||
79 | - else: | ||
80 | - self.ylimits = (minval, maxval) | ||
81 | - | ||
82 | class Plot(pyglet.window.Window): | 42 | class Plot(pyglet.window.Window): |
83 | def __init__(self, series): | 43 | def __init__(self, series): |
84 | """Setup a the details of a plot, and create a corresponding window""" | 44 | """Setup a the details of a plot, and create a corresponding window""" |
robots/little_john/telemetry/code/monitor/version1/series.py
0 → 100644
@@ -0,0 +1,45 @@ | @@ -0,0 +1,45 @@ | ||
1 | +# Class to store data for a live graph | ||
2 | +# Written as a telemetry tool by: | ||
3 | +# The UoN Robot Wars Project, 2018 | ||
4 | + | ||
5 | + | ||
6 | +class Series: | ||
7 | + def __init__(self, points=300, title="Series title", xname="x-axis name", yname="y-axis name"): | ||
8 | + """Set up an object to store a 2D data series""" | ||
9 | + # Proposal: | ||
10 | + # In order to neatly handle multiple lines on the same graph | ||
11 | + # a series is not so much a set of 2D data points, but a number | ||
12 | + # of series sharing an x axis. For example | ||
13 | + # (time, temperature) | ||
14 | + # (time, xaccel, yaccel, zaccel) | ||
15 | + # The latter seta of points much be of like nature and share an axis | ||
16 | + # (time, temperature, xaccel) | ||
17 | + # would be a meaningless thing to plot on a single graph anyway | ||
18 | + | ||
19 | + self.title = title | ||
20 | + self.xname = xname | ||
21 | + self.yname = yname | ||
22 | + self.xlimits = (0, 100) | ||
23 | + self.ylimits = (-100, 100) | ||
24 | + self.data = [] | ||
25 | + self.points = points | ||
26 | + | ||
27 | + def addpoint(self, point): | ||
28 | + """Add a point to the dataset, and remove the oldest, if necessary""" | ||
29 | + self.data.append(point) | ||
30 | + if len(self.data) > self.points: | ||
31 | + del self.data[0] | ||
32 | + self.autoscale(0) | ||
33 | + | ||
34 | + def autoscale(self, axis): # axis=0 is x, 1 is y | ||
35 | + minval = self.data[0][axis] | ||
36 | + maxval = self.data[0][axis] | ||
37 | + for value in self.data: | ||
38 | + if value[axis] < minval: | ||
39 | + minval = value[axis] | ||
40 | + if value[axis] > maxval: | ||
41 | + maxval = value[axis] | ||
42 | + if axis == 0: | ||
43 | + self.xlimits = (minval, maxval) | ||
44 | + else: | ||
45 | + self.ylimits = (minval, maxval) |