18 def parse_nmea_string(self, string):
20 string = string.lstrip('$')
21 (data, dummy, csum) = string.rpartition('*')
27 if mycsum != int(csum, 16): # can throw with invalid csum
30 data = data.split(',')
32 if data[0] == 'GPGGA':
36 (temp, n) = re.subn('^(\d{2})(\d{2})(\d{2}\.\d+)$', '\\1:\\2:\\3', data[1])
41 (temp, n) = re.subn('^(\d{2})(\d{2})\.(.*)$', '\\1.\\2\\3', data[2])
43 self.lat = temp + data[3]
46 (temp, n) = re.subn('^0?(\d{2,3}?)(\d{2})\.(.*)$', '\\1.\\2\\3', data[4])
48 self.lon = temp + data[5]
53 elif int(data[6]) == 1:
54 self.quality = "normal"
55 elif int(data[6]) == 2:
57 elif int(data[6]) == 3:
58 self.quality = "precision"
63 self.nsat = int(data[7])
70 return "Time: %s\tQuality: %s\nLat: %s\tSat: %s\nLon: %s\tHDOP: %s\nEle: %s" % (self.time, self.quality, self.lat, self.nsat, self.lon, self.hdop, self.ele)