Commit 87acb46adb6ae47675efcc8f4d08afe8c55f5eb5
1 parent
3ba04ab1
Exists in
master
Added code to actually plot lines! Still very much an experimental arranagement,…
… but scale/limit calculation seems to be correct
Showing
1 changed file
with
27 additions
and
8 deletions
Show diff stats
robots/little_john/telemetry/code/monitor/version1/main.py
... | ... | @@ -53,7 +53,7 @@ class Series: |
53 | 53 | self.title = title |
54 | 54 | self.xname = xname |
55 | 55 | self.yname = yname |
56 | - self.xlimits = (100, 0) | |
56 | + self.xlimits = (0, 100) | |
57 | 57 | self.ylimits = (0, 255) |
58 | 58 | self.data = [] |
59 | 59 | self.points = points |
... | ... | @@ -97,6 +97,7 @@ class Plot(pyglet.window.Window): |
97 | 97 | self.drawHeading() |
98 | 98 | self.drawAxis(0) |
99 | 99 | self.drawAxis(1) |
100 | + self.drawLine(self.series) | |
100 | 101 | |
101 | 102 | def drawBackground(self): |
102 | 103 | """Draw the graph background, currently a plain colour""" |
... | ... | @@ -110,10 +111,27 @@ class Plot(pyglet.window.Window): |
110 | 111 | anchor_x='center', anchor_y='top') |
111 | 112 | heading.draw() |
112 | 113 | |
113 | - def drawLine(self): | |
114 | - for n in range(len(data) - 1): | |
115 | - a, b = data[n], data[n+1] | |
116 | - pass | |
114 | + def drawLine(self, series): | |
115 | + xscale = float(self.series.xlimits[1]-self.series.xlimits[0])/(self.bounds[0][1]-self.bounds[0][0]) | |
116 | + yscale = float(self.series.ylimits[1]-self.series.ylimits[0])/(self.bounds[1][1]-self.bounds[1][0]) | |
117 | + logging.debug("xscale = " + str(xscale) + ", yscale = " + str(yscale)) | |
118 | + #xscale = 5 | |
119 | + #xscale = self.series.xlimits[1] self.series.xlimits[0] | |
120 | + #yscale = 1 | |
121 | + lmar = int(self.width * self.margins[0]) | |
122 | + rmar = int(self.width * self.margins[1]) | |
123 | + tmar = int(self.height * self.margins[0]) | |
124 | + bmar = int(self.height * self.margins[1]) | |
125 | + for n in range(len(series.data) - 1): | |
126 | + x1, y1, x2, y2 = series.data[n][0], series.data[n][1], series.data[n+1][0], series.data[n+1][1] | |
127 | + x1 = int((x1/xscale)+lmar) | |
128 | + y1 = int((y1/yscale)+bmar) | |
129 | + x2 = int((x2/xscale)+lmar) | |
130 | + y2 = int((y2/yscale)+bmar) | |
131 | + pyglet.graphics.draw(2, pyglet.gl.GL_LINES, | |
132 | + ('v2i', (x1, y1, x2, y2)), | |
133 | + ('c3B', (255, 0, 0, 255, 0, 0))) | |
134 | + | |
117 | 135 | |
118 | 136 | def drawAxis(self, axis): # axis=0 is x, 1 is y |
119 | 137 | """Draw the gridlines and labels for one axis, specified in the last argument""" |
... | ... | @@ -181,13 +199,14 @@ def pollSerial(elapsed): |
181 | 199 | values = values.split(b', ') |
182 | 200 | for n, value in enumerate(values): |
183 | 201 | values[n] = float(value) |
184 | - logging.info("Recieved data: " + str(values)) | |
202 | + #logging.info("Recieved data: " + str(values)) | |
185 | 203 | testseries.addpoint(values) |
186 | 204 | |
187 | 205 | def fakePollSerial(elapsed): |
188 | 206 | """This function immitates the behaviour of pollSerial, for testing purposes""" |
189 | - values = [time.time(), time.time()%10] | |
190 | - logging.info("Generated test data: " + str(values)) | |
207 | + faketime = time.time() * 10 | |
208 | + values = [(faketime%100), faketime%255] | |
209 | + #logging.info("Generated test data: " + str(values)) | |
191 | 210 | testseries.addpoint(values) |
192 | 211 | |
193 | 212 | # Pyglet looks after the main event loop, but this ensures that data keeps being read in | ... | ... |