#!/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)