summaryrefslogtreecommitdiff
path: root/pyBTlatency/pySerialGraph.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyBTlatency/pySerialGraph.py')
-rwxr-xr-xpyBTlatency/pySerialGraph.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/pyBTlatency/pySerialGraph.py b/pyBTlatency/pySerialGraph.py
new file mode 100755
index 0000000..61b2ed9
--- /dev/null
+++ b/pyBTlatency/pySerialGraph.py
@@ -0,0 +1,64 @@
+#!/usr/bin/python
+
+import time
+import serial
+import signal
+import sys, csv
+import pygame
+
+class Serial(serial.PosixSerial,serial.FileLike):
+ #workaround for python 2.6 seriall behavior, http://code.google.com/p/python-on-a-chip/issues/detail?id=110
+ pass
+
+ser = Serial(
+ port='/dev/ttyUSB0',
+ baudrate=115200,
+)
+
+def signal_handler(signal, frame):
+ print "closing serial port"
+ ser.close()
+ sys.exit(0)
+
+signal.signal(signal.SIGINT, signal_handler)
+tStart=time.time()
+waiting=True
+print "Starting..."
+while waiting:
+ ser.write('a') #start comms
+ time.sleep(0.1);
+ while time.time()-tStart<1.0 and waiting :
+ if ser.inWaiting() >0:
+ print ser.readline()
+ waiting=False
+ time.sleep(0.1);
+ if waiting:
+ print "Timeout,restarting..."
+ tStart=time.time()
+window = pygame.display.set_mode((640, 512))
+y=127
+times=[]
+tSec=40;
+while 1:
+ if ser.inWaiting() >0:
+ i=ser.readline(eol=chr(0))
+ #print "received packet:",len(i),"bytes"
+ pygame.draw.rect(window,(0,0,0),(0,0, 640,512))
+ for x in range(0,len(i)-1): #skip end char
+ y1=ord(i[x])
+ pygame.draw.line(window, (255, 255, 255), (x*2, y*2), ((x*2)+2, y1*2))
+ y=y1
+
+ tNow=time.time();
+ times.append(tNow-tStart);
+ tStart=tNow
+ if len(times)>320:
+ times.pop(0)
+ for x in range(0,len(times)-1): #skip end char
+ pygame.draw.line(window, (255, 0, 0), (x*2, 512-(255*times[x]*tSec)), ((x*2)+2, 512-(255*times[x]*tSec)) )
+ pygame.display.flip()
+
+ time.sleep(0.01)
+
+
+ \ No newline at end of file