1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
def get_gps():
#GPIO.output(gps_power, 1)
try:
with serial.Serial('/dev/ttyS0', baudrate=9600, timeout=1) as ser:
while True:
data = ser.readline()
#if data[0:6] == "b'$GPRMC":
# mnea = pynmea2.parse(data)
# print(mnea.latitue)
parseGPS(data) # J'aimerais bien un nouveau paramètre comme parseGPS(data,"GPRMC")
print('1')
except Exception as e:
print('Error reading serial port:' + e)
def parseGPS(data):
print ("raw:", data) #prints raw data
print(data[0:6])
sentence = data[0:6]
if sentence.decode('UTF-8') == "$GPRMC":
print('2')
spdata = data.decode('UTF-8')
sdata = spdata.split(",")
if sdata[2] == 'V':
print ('no satellite data available')
return
print('---Parsing GPRMC---')
time = sdata[1][0:2] + ":" + sdata[1][2:4] + ":" + sdata[1][4:6]
lat = decode(sdata[3]) #latitude
dirLat = sdata[4] #latitude direction N/S
lon = decode(sdata[5]) #longitute
dirLon = sdata[6] #longitude direction E/W
speed = sdata[7] #Speed in knots
trCourse = sdata[8] #True course
date = sdata[9][0:2] + "/" + sdata[9][2:4] + "/" + sdata[9][4:6]#date
print("time : %s, latitude : %s(%s), longitude : %s(%s), speed : %s, True Course : %s, Date : %s" % (time,lat,dirLat,lon,dirLon,speed,trCourse,date))
return lat,lon,date
#if str.find('GGA') > 0:
#msg = pynmea2.parse(str)
#msg.latitude
#print "Timestamp: %s -- Lat: %s %s -- Lon: %s %s -- Altitude: %s %s -- Satellites: %s" % (msg.timestamp,msg.lat,msg.lat_dir,msg.lon,msg.lon_dir,msg.altitude,msg.altitude_units,msg.num_sa$
def decode(coord):
#Converts DDDMM.MMMMM > DD deg MM.MMMMM min
x = coord.split(".")
head = x[0]
tail = x[1]
deg = head[0:-2]
min = head[-2:]
return deg + " deg " + min + "." + tail + " min" |
Partager