From b7e28404a9962cf220c51e1b83b81b6a2b6a3d87 Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Sat, 5 May 2012 23:14:34 +0100 Subject: fix test gps status --- gpspoller.py | 62 ++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 23 deletions(-) (limited to 'gpspoller.py') diff --git a/gpspoller.py b/gpspoller.py index 6f7c19c..13ad5bb 100644 --- a/gpspoller.py +++ b/gpspoller.py @@ -1,3 +1,5 @@ + + #!/usr/bin/python # Copyright (C) 2007 by Jaroslaw Zachwieja @@ -12,12 +14,15 @@ class GpsPoller(threading.Thread): latitude = 0 longitude = 0 changed = False + fix=0 + satellites=0 def __init__(self,port,test=False): self.test=test self.port=port self.gps = serial.Serial(port, 9600, timeout=1) threading.Thread.__init__(self) + self.fixname=("no fix","no fix","2D fix","3D fix") def check(self): if self.changed: @@ -42,32 +47,42 @@ class GpsPoller(threading.Thread): line = self.gps.read(1) line = line+self.gps.readline() datablock = line.split(',') + #print line + try: + if line[0:6] =='$GPGSV': + self.satellites=string.atoi(datablock[3]) + if line[0:6] =='$GPGSA': + self.fix=string.atoi(datablock[2]) + if line[0:6] == '$GPGGA': + + + latitude_in = string.atof(datablock[2]) + longitude_in = string.atof(datablock[4]) + + #altitude = string.atof(datablock[8]) + #speed_in = string.atof(datablock[7]) + #heading = string.atof(datablock[8]) - if line[0:6] == '$GPRMC': - latitude_in = string.atof(datablock[3]) - longitude_in = string.atof(datablock[5]) - altitude = string.atof(datablock[8]) - speed_in = string.atof(datablock[7]) - heading = string.atof(datablock[8]) - - if datablock[4] == 'S': - latitude_in = -latitude_in - if datablock[6] == 'W': - longitude_in = -longitude_in + if datablock[3] == 'S': + latitude_in = -latitude_in + if datablock[5] == 'W': + longitude_in = -longitude_in - latitude_degrees = int(latitude_in/100) - latitude_minutes = latitude_in - latitude_degrees*100 + latitude_degrees = int(latitude_in/100) + latitude_minutes = latitude_in - latitude_degrees*100 - longitude_degrees = int(longitude_in/100) - longitude_minutes = longitude_in - longitude_degrees*100 + longitude_degrees = int(longitude_in/100) + longitude_minutes = longitude_in - longitude_degrees*100 - latitude = latitude_degrees + (latitude_minutes/60) - longitude = longitude_degrees + (longitude_minutes/60) - - if latitude!=self.latitude or longitude!=self.longitude: - self.latitude=latitude - self.longitude=longitude - self.changed=True + latitude = latitude_degrees + (latitude_minutes/60) + longitude = longitude_degrees + (longitude_minutes/60) + + if latitude!=self.latitude or longitude!=self.longitude: + self.latitude=latitude + self.longitude=longitude + self.changed=True + except: + print "caught corrupt NMEA sentence" except StopIteration: @@ -82,7 +97,8 @@ if __name__ == '__main__': gpsp.start() while 1: # In the main thread, every 5 seconds print the current value - time.sleep(0.1) + time.sleep(1.0) check=gpsp.check() + print gpsp.fixname[gpsp.fix],":satellites in view", gpsp.satellites if check!=False: print "changed:",check[0],check[1] -- cgit v1.2.3