GPS 10Hz avec connexion série sans utiliser le GPS. Le code est le suivant, et écrivez le code pour traiter les données reçues dans la partie principale en bas.
mtk3339_set_10Hz.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from time import sleep
import serial
#Valeur initiale de la vitesse de transmission de la connexion série:9600
ser=serial.Serial('/dev/ttyS0', baudrate=9600, timeout=30)
class GPS:
def __init__(self):
UPDATE_100msec= r"$PMTK220,100*2F\r\n" #Intervalle de mise à jour 100 ms(10Hz)
UPDATE_200msec= r"$PMTK220,200*2C\r\n" #Intervalle de mise à jour 200 ms(5Hz)
UPDATE_250msec= r"$PMTK220,250*29\r\n" #Intervalle de mise à jour 250 msec(4Hz)
UPDATE_500msec= r"$PMTK220,500*2B\r\n" #Intervalle de mise à jour 500 ms(2Hz)
UPDATE_1000msec= r"$PMTK220,1000*1F\r\n" #Intervalle de mise à jour 1sec(1Hz)
MEAS_100msec= r"$PMTK300,100,0,0,0,0*2C\r\n" #Intervalle de mesure 100msec(10Hz)
MEAS_200msec= r"$PMTK300,200,0,0,0,0*2F\r\n" #Intervalle de mesure 200 ms(5Hz)
MEAS_250msec= r"$PMTK300,250,0,0,0,0*2A\r\n" #Intervalle de mesure 250 msec(4Hz)
MEAS_500msec= r"$PMTK300,500,0,0,0,0*28\r\n" #Intervalle de mesure 500msec(2Hz)
MEAS_1000msec= r"$PMTK300,1000,0,0,0,0*1C\r\n" #Intervalle de mesure 1 sec(1Hz)
BAUDRATE_9600 = r"$PMTK251,9600*17\r\n" #débit en bauds du tty 9600bps
BAUDRATE_19200 = r"$PMTK251,19200*22\r\n" #débit en bauds tty 19200 bps
BAUDRATE_38400 = r"$PMTK251,38400*27\r\n" #débit en bauds tty 38400bps
BAUDRATE_57600 = r"$PMTK251,57600*2C\r\n" #débit en bauds du tty 57600bps
BAUDRATE_115200 = r"$PMTK251,115200*1F\r\n" #débit en bauds tty 115200bps
#Commands for which NMEA Sentences are sent
GPRMC_ONLY= "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n" # Send only the GPRMC Sentence
GPRMC_GPGGA="$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n" # Send GPRMC AND GPGGA Sentences
SEND_ALL ="$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n" # Send All Sentences
SEND_NOTHING="$PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n" # Send Nothing
ser.write(BAUDRATE_115200.encode('utf-8')) # Set Baudrate to 115200
sleep(1)
ser.baudrate=115200
ser.write(UPDATE_100msec.encode('utf-8')) # Set update interval 100ms
sleep(1)
ser.write(MEAS_100msec.encode('utf-8')) # Set measurement interval 100ms
sleep(1)
ser.write(GPRMC_ONLY.encode('utf-8')) # Set report GPRMC message only
sleep(1)
ser.flushInput()
ser.flushOutput()
print("GPS is Initialized\n")
gps=GPS() #Le GPS est défini lorsque l'instance est initialisée
while(1):
while ser.inWaiting()==0:
pass
data=ser.readline()
#Écrivez ici le traitement des données acquises
print(data)
Pourquoi les paramètres de mise à jour et de mesure sont-ils séparés? Je pense que cela n'a pas de sens si cela ne fonctionne pas ensemble.
Recommended Posts