GPS Class taken from original example https://github.com/DexterInd/GrovePi/blob/master/Software/Python/grove_gps.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# | |
# GrovePi Example for using the Grove GPS Module http://www.seeedstudio.com/depot/Grove-GPS-p-959.html?cPath=25_130 | |
# | |
# The GrovePi connects the Raspberry Pi and Grove sensors. You can learn more about GrovePi here: http://www.dexterindustries.com/GrovePi | |
# | |
# Have a question about this example? Ask on the forums here: http://www.dexterindustries.com/forum/?forum=grovepi | |
# | |
# LICENSE: | |
# These files have been made available online through a [Creative Commons Attribution-ShareAlike 3.0](http://creativecommons.org/licenses/by-sa/3.0/) license. | |
# | |
# History | |
# ------------------------------------------------ | |
# Author Date Comments | |
# Karan 21 Aug 14 Initial Authoring | |
import serial, time | |
import smbus | |
import math | |
import RPi.GPIO as GPIO | |
import struct | |
import sys | |
ser = serial.Serial('/dev/ttyAMA0', 9600, timeout = 0) #Open the serial port at 9600 baud | |
ser.flush() | |
class GPS: | |
#The GPS module used is a Grove GPS module http://www.seeedstudio.com/depot/Grove-GPS-p-959.html | |
inp=[] | |
# Refer to SIM28 NMEA spec file http://www.seeedstudio.com/wiki/images/a/a0/SIM28_DATA_File.zip | |
GGA=[] | |
#Read data from the GPS | |
def read(self): | |
while True: | |
GPS.inp=ser.readline() | |
if GPS.inp[:6] =='$GPGGA': # GGA data , packet 1, has all the data we need | |
break | |
time.sleep(0.1) #without the cmd program will crach | |
try: | |
ind=GPS.inp.index('$GPGGA',5,len(GPS.inp)) #Sometimes multiple GPS data packets come into the stream. Take the data only after the last '$GPGGA' is seen | |
GPS.inp=GPS.inp[ind:] | |
except ValueError: | |
print "" | |
GPS.GGA=GPS.inp.split(",") #Split the stream into individual parts | |
return [GPS.GGA] | |
#Split the data into individual elements | |
def vals(self): | |
time=GPS.GGA[1] | |
lat=GPS.GGA[2] | |
lat_ns=GPS.GGA[3] | |
long=GPS.GGA[4] | |
long_ew=GPS.GGA[5] | |
fix=GPS.GGA[6] | |
sats=GPS.GGA[7] | |
alt=GPS.GGA[9] | |
return [time,fix,sats,alt,lat,lat_ns,long,long_ew] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment