GPS 10Hz mit serieller Verbindung ohne Verwendung von GPSD. Der Code lautet wie folgt und schreiben Sie den Code, um die empfangenen Daten im Hauptteil unten zu verarbeiten.
mtk3339_set_10Hz.py
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from time import sleep
import serial
#Baudrate Anfangswert der seriellen Verbindung:9600
ser=serial.Serial('/dev/ttyS0', baudrate=9600, timeout=30)
class GPS:
def __init__(self):
UPDATE_100msec= r"$PMTK220,100*2F\r\n" #Aktualisierungsintervall 100 ms(10Hz)
UPDATE_200msec= r"$PMTK220,200*2C\r\n" #Aktualisierungsintervall 200 ms(5Hz)
UPDATE_250msec= r"$PMTK220,250*29\r\n" #Aktualisierungsintervall 250 ms(4Hz)
UPDATE_500msec= r"$PMTK220,500*2B\r\n" #Aktualisierungsintervall 500 ms(2Hz)
UPDATE_1000msec= r"$PMTK220,1000*1F\r\n" #Aktualisierungsintervall 1 Sek(1Hz)
MEAS_100msec= r"$PMTK300,100,0,0,0,0*2C\r\n" #Messintervall 100 ms(10Hz)
MEAS_200msec= r"$PMTK300,200,0,0,0,0*2F\r\n" #Messintervall 200 ms(5Hz)
MEAS_250msec= r"$PMTK300,250,0,0,0,0*2A\r\n" #Messintervall 250 ms(4Hz)
MEAS_500msec= r"$PMTK300,500,0,0,0,0*28\r\n" #Messintervall 500 ms(2Hz)
MEAS_1000msec= r"$PMTK300,1000,0,0,0,0*1C\r\n" #Messintervall 1 Sek(1Hz)
BAUDRATE_9600 = r"$PMTK251,9600*17\r\n" #Die Baudrate von tty beträgt 9600 bps
BAUDRATE_19200 = r"$PMTK251,19200*22\r\n" #tty Baudrate 19200bps
BAUDRATE_38400 = r"$PMTK251,38400*27\r\n" #tty Baudrate 38400bps
BAUDRATE_57600 = r"$PMTK251,57600*2C\r\n" #Die Baudrate von tty beträgt 57600 bps
BAUDRATE_115200 = r"$PMTK251,115200*1F\r\n" #tty Baudrate 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() #GPS wird eingestellt, wenn die Instanz initialisiert wird
while(1):
while ser.inWaiting()==0:
pass
data=ser.readline()
#Schreiben Sie hier die Verarbeitung der erfassten Daten
print(data)
Warum sind die Aktualisierungs- und Messeinstellungen getrennt? Ich denke, es ist bedeutungslos, wenn es nicht zusammenarbeitet.
Recommended Posts