Outils pour utilisateurs

Outils du site


code:gps2osc
no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


code:gps2osc [2024/02/09 16:26] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== 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
 + 
 +<code>
 +# 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
 +
 +</code>
 +
 +
 +
 +===== gps2OSC.py =====
 +
 +<code>
 +#! /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"
 +</code>
  
code/gps2osc.txt · Dernière modification : de 127.0.0.1