Il risultato calcolato è formattato in un due caratteri ASCII che rappresentano un numero esadecimale.
Esempio:
$GPRMC,062258.000,A,4506.75994,N,00737.15020,E,52.0,56.3,050811,0.0,W*7F
$GPRMC,062258.000,A,4506.75994,N,00737.15020,E,52.0,56.3,050811,0.0,W*7F
Esempio di funzione per il calcolo del checksum in python.
def Checksum_NMEA(stringa_input):
# Calcolo del checksum in formato NMEA
# attenzione, per semplicità le eccezioni non sono gestite
# attenzione, per semplicità le eccezioni non sono gestite
payload_start = stringa_input.find('$') + 1 #trova primo carattere dopo $
payload_end = stringa_input.find('*') #trova carattere *
payload = stringa_input [ payload_start : payload_end ]# dati x lo XOR
ck = 0
for ch in payload: # ciclo di calcolo del checksum
ck = ck ^ ord(ch) # XOR
str_ck = '%02X' % ck # trasforma una stringa di 2 caratteri
return(str_ck)
Potete scaricare il sorgente completo di esempio qui: Checksum_NMEA.zip
Nessun commento:
Posta un commento