Generando una suma de comprobación hexadecimal para un mensaje NMEA (PMTK)

0

Estoy tratando de usar el receptor GPS Quectel L80 para mi proyecto. Estoy tratando de configurar el L80 utilizando las cadenas PMTK. Pero el problema es que la cadena también debe contener una suma de verificación hexadecimal.

por ejemplo. $ PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 * 29

Esta es la cadena de ejemplo que se proporciona en el documento "especificación de protocolo" . En esta cadena ' 29 ' es la suma de verificación. Mi pregunta es ¿cómo genero la suma de comprobación? Sé que para las cadenas NMEA, la suma de verificación se genera mediante la operación 'XOR' de caracteres consecutivos entre '$' y '*'. Al calcular la suma de comprobación, ¿también debo incluir una coma?

Gracias

    
pregunta R. Hirur

1 respuesta

4

Usted acaba de excluir, o todos los caracteres entre el '$' y el '*' (incluidas las comas) y usa la representación hexadecimal de dos caracteres de ese byte (lo que lleva 0 si es necesario rellenar dos caracteres). Aquí hay un fragmento de código de ejemplo en Python:

st = "PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
i = 0
checksum = 0
while i < len(st):
   checksum ^= ord(st[i])
   i+= 1
print "%02X"%checksum

El resultado es 29

Para "GPGSA, A, 3,10,07,05,02,29,04,08,13 , 1.72,1.03,1.38", el resultado es 0A

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas