NAVIGAZIONE SATELLITARE E DINTORNI

                             

giovedì 5 gennaio 2012

Calcolo del checksum NMEA

Il checksum delle stringhe NMEA è calcolato facendo lo XOR di tutti i caratteri a partire dal primo dopo il carattere di inizio messaggio "$" e fino all'ultimo carattere prima del terminatore "*".
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     

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
    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

Related Posts Plugin for WordPress, Blogger...