NMEA 0183 - C Implementation of Checksum Generation

C Implementation of Checksum Generation

Persons looking to implement NMEA 0183 are often stumped by the checksum part. The following C code generates a checksum for the string entered as "mystring" and prints it to the output stream. In the example a sentence for the sample file is used.

#include #include int main { char *mystring= "GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A"; int lengthofstring = strlen(mystring); int checksum=0, i; for( i=0; i
Which can be simplified to function form as follows:

#include #include int checksum(char *s) { int c = 0; while(*s) c ^= *s++; return c; } int main { char mystring = "GPRMC,092751.000,A,5321.6802,N,00630.3371,W,0.06,31.66,280511,,,A"; printf("String: %s\nChecksum: 0x%02X\n", mystring, checksum(mystring)); return 0; }

Read more about this topic:  NMEA 0183

Famous quotes containing the word generation:

    “The generation of mankind is like the generation of leaves. The wind scatters the leaves on the ground, but the living tree burgeons with leaves again in the spring.”
    —Homer (c. 9th century B.C.)