Commit 99dd1cb77645a826db0ec0c24ca386ecf5cf8db6

Authored by Christopher Stone
1 parent 4cf57310
Exists in master

Preparation for supporting multiple windows simultaneously

Showing 1 changed file with 15 additions and 13 deletions   Show diff stats
telemetry/code/monitor/graph_plotter.py
@@ -17,7 +17,7 @@ datafeed = serial.Serial( @@ -17,7 +17,7 @@ datafeed = serial.Serial(
17 17
18 red = [1, 0, 0] 18 red = [1, 0, 0]
19 green = [0, 1, 0] 19 green = [0, 1, 0]
20 -blue = [0, 0, 1] 20 +blue = [0.2, 0.5, 1]
21 21
22 window = pyglet.window.Window(800, 480, resizable=True) 22 window = pyglet.window.Window(800, 480, resizable=True)
23 window.set_caption("Raw data") 23 window.set_caption("Raw data")
@@ -25,31 +25,31 @@ window.set_caption("Raw data") @@ -25,31 +25,31 @@ window.set_caption("Raw data")
25 starttime = time.time() 25 starttime = time.time()
26 26
27 27
28 -def drawgrid(xlines, ylines, xlimits, ylimits): 28 +def drawgrid(target, xlines, ylines, xlimits, ylimits):
29 pyglet.gl.glColor3f(0.5, 0.5, 0.5) 29 pyglet.gl.glColor3f(0.5, 0.5, 0.5)
30 - for xpos in range(0, window.width, window.width/xlines):  
31 - pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (xpos, 0, xpos, window.height)))  
32 - tagtext = str(round((xlimits[1]-xlimits[0])*(float(xpos)/window.width) + xlimits[0], 1)) 30 + for xpos in range(0, target.width, target.width/xlines):
  31 + pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (xpos, 0, xpos, target.height)))
  32 + tagtext = str(round((xlimits[1]-xlimits[0])*(float(xpos)/target.width) + xlimits[0], 1))
33 tag = pyglet.text.Label(tagtext, font_name='Arkhip', font_size=10, x=xpos-2, y=0, anchor_x='right', anchor_y='bottom') 33 tag = pyglet.text.Label(tagtext, font_name='Arkhip', font_size=10, x=xpos-2, y=0, anchor_x='right', anchor_y='bottom')
34 tag.draw() 34 tag.draw()
35 - for ypos in range(0, window.width, window.height/ylines):  
36 - pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (0, ypos, window.width, ypos)))  
37 - tagtext = str(round((ylimits[1]-ylimits[0])*(float(ypos)/window.height) + ylimits[0], 1)) 35 + for ypos in range(0, target.width, target.height/ylines):
  36 + pyglet.graphics.draw(2, pyglet.gl.GL_LINES, ('v2i', (0, ypos, target.width, ypos)))
  37 + tagtext = str(round((ylimits[1]-ylimits[0])*(float(ypos)/target.height) + ylimits[0], 1))
38 tag = pyglet.text.Label(tagtext, font_name='Arkhip', font_size=10, x=0, y=ypos-2, anchor_x='left', anchor_y='top') 38 tag = pyglet.text.Label(tagtext, font_name='Arkhip', font_size=10, x=0, y=ypos-2, anchor_x='left', anchor_y='top')
39 tag.draw() 39 tag.draw()
40 40
41 41
42 -def plotline(xdata, ydata, colour): 42 +def plotline(target, xdata, ydata, colour):
43 pyglet.gl.glColor3f(colour[0], colour[1], colour[2]) 43 pyglet.gl.glColor3f(colour[0], colour[1], colour[2])
44 points = [] 44 points = []
45 for n in range(max(len(xdata), len(ydata))): 45 for n in range(max(len(xdata), len(ydata))):
46 try: 46 try:
47 - xpos = ((xdata[n]-min(xdata))*window.width)/(max(xdata)-min(xdata)) 47 + xpos = ((xdata[n]-min(xdata))*target.width)/(max(xdata)-min(xdata))
48 except: 48 except:
49 xpos = 0 49 xpos = 0
50 xpos = int(xpos) 50 xpos = int(xpos)
51 try: 51 try:
52 - ypos = ((ydata[n]-min(ydata))*window.height)/(max(ydata)-min(ydata)) 52 + ypos = ((ydata[n]-min(ydata))*target.height)/(max(ydata)-min(ydata))
53 except: 53 except:
54 ypos = 0 54 ypos = 0
55 ypos = int(ypos) 55 ypos = int(ypos)
@@ -90,13 +90,15 @@ def poll_serial(foo): @@ -90,13 +90,15 @@ def poll_serial(foo):
90 90
91 pyglet.clock.schedule_interval(poll_serial, 0.01) 91 pyglet.clock.schedule_interval(poll_serial, 0.01)
92 92
  93 +def drawgraph(target, xpoints, ypoints, colour):
  94 + plotline(target, xpoints, ypoints, colour)
  95 + drawgrid(target, 16, 10, [min(xpoints), max(xpoints)], [min(ypoints), max(ypoints)])
93 96
94 @window.event 97 @window.event
95 def on_draw(): 98 def on_draw():
96 window.clear() 99 window.clear()
  100 + drawgraph(window, xdata, ydata, blue)
97 101
98 - drawgrid(16, 10, [min(xdata), max(xdata)], [min(ydata), max(ydata)])  
99 - plotline(xdata, ydata, red)  
100 102
101 103
102 104