Скорость обновления Python Raspberry PI GPS
В настоящее время я пытаюсь написать скрипт python (2.7), основанный на библиотеке GPSd, для предоставления данных о скорости GPS с частотой обновления 10 Гц, используя adafruit Ultimate GPS raspberry Pi Hat ( https://www.adafruit.com/product/2324) с отметками времени также сообщалось в 0,1 с.
Сам модуль способен поддерживать частоту обновления до 10 Гц, однако по умолчанию он равен 1 Гц, и в настоящее время я не могу его успешно увеличить. Я попытался выполнить команды PMTK ( https://cdn-shop.adafruit.com/datasheets/PMTK_A11.pdf), чтобы увеличить частоту обновления, однако не могу заставить это работать (PMTK220) и включил установку максимальной скорости передачи данных значение 115200.
Я искал метод увеличения частоты обновления, но не вижу, в чем проблема. Приведенный ниже код распечатывает ответы со скоростью, превышающей 10 Гц, однако значения обновляются только каждые 1 с.
import os
import serial
from gps import *
import datetime
import time
import threading
import subprocess
#### CURRENTLY TRYING TO INCREASE GPS POLLING UPDATE RATE FROM DEFAULT 1Hz to 10Hz
subprocess.call(["stty","-F","/dev/serial0","raw","115200","cs8","clocal","-cstopb"])
subprocess.call(["sudo","systemctl","stop","gpsd.socket"])
subprocess.call(["sudo","systemctl","disable","gpsd.socket"])
subprocess.call(["sudo","gpsd","/dev/ttyS0","-F","/var/run/gpsd.sock"])
subprocess.call(["echo","-e","$PMTK251,115200*27\r\n","/dev/ttyS0"]) # command to set baudrate of serial port
subprocess.call(["echo","-e","$PMTK220,100*2F\r\n","/dev/ttyS0"]) #command to set GPS Update Rate
gpsd = None #seting the global variable
os.system('clear') #clear the terminal (optional)
class GpsPoller(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
global gpsd #bring it in scope
gpsd = gps(mode=WATCH_ENABLE) #starting the stream of info
self.current_value = None
self.running = True #setting the thread running to true
def run(self):
global gpsd
while gpsp.running:
gpsd.next() #this will continue to loop and grab EACH set of gpsd info to clear the buffer
gpsp = GpsPoller() # create the thread
gpsp.start() # start it up
os.system('clear')
x = 0
while x < 20: # infinite loop- use ctrl + c to end
print gpsd.utc # print timestamp
print gpsd.fix.speed # print gps speed
print '-----------------'
time.sleep(0.025) # Set print rate much higher than maximum possible of 10 Hz update rate
0 ответов
Возможно, немного поздно для этого, но по умолчанию модуль настроен на 9600, iirc. Попробуйте сначала установить скорость 9600 бод на Pi, а затем отправить строку $PMTK251,115200. Теперь измените скорость на Pi на 115200 и отправьте часть 10 Гц ($PMTK220,100*2F\r\n)