GPSD не может начать правильно при загрузке - PullRequest
0 голосов
/ 13 ноября 2018

Я на Raspberry PI Zero W (Raspbian NOOBS v2.9.0)

  • GPS-модуль является GPS-модулем Neo 6M. https://www.amazon.it/ILS-navigazione-satellitare-posizionamento-Arduino/dp/B07911Z266/ref=sr_1_46?ie=UTF8&qid=1542095676&sr=8-46&keywords=gps+raspberry+pi

  • Я установил GPSD с помощью следующей команды

    sudo apt-get install gpsd gpsd-clients python-gps
    
  • Я включил аппаратный последовательный порт и отключил последовательную консоль с помощью raspi-config
  • Я отредактировал файл / etc / default / gpsd следующим образом:

    START_DAEMON="true"
    GPSD_OPTIONS="/dev/ttyS0"
    DEVICES=""
    USBAUTO="false"
    GPSD_SOCKET="/var/run/gpsd.sock"
    
  • Я добавил следующие строки в /etc/rc.local (ДО «выхода 0»)

    sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock
    sudo python /home/pi/code.py
    
  • В code.py у меня работает этот код:

    import os
    import sys
    from gps import *
    import threading
    from threading import Thread
    
    class GpsPoller(threading.Thread):
    
        # object needed to obtain GPS data
        gpsd = None
    
        def __init__(self):
            print "Initializing GPS poller..."
            global gpsd         
    
            threading.Thread.__init__(self)
            gpsd = gps(mode=WATCH_ENABLE)
            self.current_value = None
            self.running = True
    
        def run(self):
            print "Starting GPS loop..."
            global gpsd
    
            while self.running:
    
                # get the next set of data
                gpsd.next()
    
                # clear screen
                os.system("clear")
    
                print
                print 'GPS'
                print
                print '----------------------------------------'
                print 'latitude    ' , gpsd.fix.latitude
                print 'longitude   ' , gpsd.fix.longitude
                print 'time (utc)     ' , gpsd.utc,' + ', gpsd.fix.time
                print 'altitude (m)' , gpsd.fix.altitude
                print 'eps           ' , gpsd.fix.eps
                print 'epx           ' , gpsd.fix.epx
                print 'epv           ' , gpsd.fix.epv
                print 'ept           ' , gpsd.fix.ept
                print 'speed (m/s)' , gpsd.fix.speed
                print 'mode      ' , gpsd.fix.mode
                print '----------------------------------------'
                print
    
    gpsp = GpsPoller()
    gpsp.run()
    
  • Я отключил службу GPSD при запуске (чтобы предотвратить запуск системы и позволить rc.local выполнить эту задачу) с помощью следующих команд:

    sudo systemctl stop gpsd.socket
    sudo systemctl disable gpsd.socket
    

В результате, когда я включаю Rpi, код и демон gpsd запускаются правильно, но данные не могут быть получены, если я затем уничтожу код python и запусту его вручную, он будет работать.

...