====== gps2OSC ======
discute avec gpsd et transfert les info en OSC
===== ajout a gpsd pour le lancement et l'init du gps =====
le checksum http://www.hhhh.org/wiml/proj/nmeaxor.html
# jamming mode
echo -e '$PMTK286,1*23\r\n' > /dev/ttyS1
sleep 1
# update rate 1s
echo -e '$PMTK220,1000*1F\r\n' > /dev/ttyS1
sleep 1
# DGPS_MODE
echo -e '$PMTK301,2*2E\r\n' > /dev/ttyS1
sleep 1
# SBAS MODE 0=off
#echo -e '$PMTK313,0*2F\r\n' > /dev/ttyS1
#echo -e '$PMTK313,1*2E\r\n' > /dev/ttyS1
===== gps2OSC.py =====
#! /usr/bin/python
# License: GPL 3
#
from gps import *
import threading
import liblo
gpsd = None
class GpsStream(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
global gpsd
gpsd = gps(mode=WATCH_ENABLE) # lecture ok
self.current_value = None
self.running = True # thread ok
def run(self):
global gpsd
while gpsp.running:
gpsd.next() #lire en boucle pour remplir
if __name__ == '__main__':
try:
# init OSC
target = liblo.Address('127.0.0.1',9001)
except liblo.AddressError, err:
print str(err)
sys.exit()
gpsp = GpsStream() # thread
try:
gpsp.start()
while True:
liblo.send(target, "/GPS/latitude/", gpsd.fix.latitude)
liblo.send(target, "/GPS/longitude/", gpsd.fix.longitude)
liblo.send(target, "/GPS/altitude/", gpsd.fix.altitude)
liblo.send(target, "/GPS/fixeps/", gpsd.fix.eps)
liblo.send(target, "/GPS/fixepx/", gpsd.fix.epx)
liblo.send(target, "/GPS/fixepv/", gpsd.fix.epv)
liblo.send(target, "/GPS/fixept/", gpsd.fix.ept)
liblo.send(target, "/GPS/fixmode/", gpsd.fix.mode)
liblo.send(target, "/GPS/sat/", gpsd.satellites_used)
#print gpsd.fix.latitude,' ',gpsd.fix.longitude,' ',gpsd.utc
# print 'time utc ' , gpsd.utc,' + ', gpsd.fix.time
# print 'climb ' , gpsd.fix.climb
# print 'track ' , gpsd.fix.track
# print 'speed (m/s) ' , gpsd.fix.speed
# print 'mode ' , gpsd.fix.mode
# print 'Quality: %d p=%2.2f h=%2.2f v=%2.2f t=%2.2f g=%2.2f' % (gpsd.satellites_used, gpsd.pdop, gpsd.hdop, gpsd.vdop, gpsd.tdop, gpsd.gdop)
time.sleep(1)
except (KeyboardInterrupt, SystemExit):
print "\nKill Thread..."
gpsp.running = False
gpsp.join()
print "End"