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:

    Where do whites fit in the New Africa? Nowhere, I’m inclined to say ... and I do believe that it is true that even the gentlest and most westernised Africans would like the emotional idea of the continent entirely without the complication of the presence of the white man for a generation or two. But nowhere, as an answer for us whites, is in the same category as remarks like What’s the use of living? in the face of the threat of atomic radiation. We are living; we are in Africa.
    Nadine Gordimer (b. 1923)