Table des matières

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"