Files
HeHe-Centiped/rpi/gps.py
T

71 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# http://stackoverflow.com/questions/28867795/reading-i2c-data-from-gps/31010266
import time
import json
import smbus
import logging
import pynmea2
BUS = None
address = 0x42
gpsReadInterval = 1
LOG = logging.getLogger()
def connectBus():
global BUS
BUS = smbus.SMBus(1)
def parseResponse(gpsBytes):
global lastLocation
#gpsLine = "".join(map(chr, gpsBytes))
#gpsLine = "".join([chr(byte) for byte in gpsBytes])
gpsLine = "".join([chr(byte) for byte in gpsBytes])
if "*" not in gpsLine:
return False
print(gpsLine)
gpsObject = pynmea2.parse(gpsLine)
print(gpsObject)
# logs
lt = time.asctime( time.localtime(time.time()) )
with open('/home/alarm/gps.log', 'a') as f:
f.write(lt+' : '+gpsLine+'\n')
def readGPS():
c = None
response = []
try:
while True: # Newline, or bad char.
c = BUS.read_byte(address)
if c == 255:
return False
elif c == 10:
break
else:
#print(c)
response.append(c)
parseResponse(response)
except IOError:
time.sleep(0.5)
connectBus()
except (Exception) as e:
print("Exception")
print(e)
LOG.error(e)
connectBus()
while True:
readGPS()
time.sleep(gpsReadInterval)
#readGPS()