tag 标签: nmea

相关博文
  • 热度 19
    2010-5-24 09:14
    1752 次阅读|
    2 个评论
    The sample code is to check the correct gprmc format with the last chars, and try to calculate the checksum of gprmc. // parameters: // softuart_revbuf: the whole nmea string with header_char '$' and endchar_char 0x0a // softuart_revbuf_len: the length of this nmea string // return: // TRUE: right format; FALSE: bad string format with error end chars or checksum bool nmea_checksum(U8* softuart_revbuf, U32 softuart_revbuf_len) {             U8 checksum = 0;             U8 sum , nmea_sum ;             // "$GPRMC"             if( (softuart_revbuf =='R') (softuart_revbuf =='M') (softuart_revbuf =='C') ) {                 // check nmea data with length, and '*'0x0d0x0a as endchar                 if( (softuart_revbuf_len10) || (softuart_revbuf !=0x0d) || (softuart_revbuf !='*') ) {                     return FALSE;                                }                                 // checksum                 for(U32 i=1; i(softuart_revbuf_len-5); i++)                     checksum ^= softuart_revbuf ;                 nmea_sum = softuart_revbuf ;                 nmea_sum = softuart_revbuf ;                            copy_2xchar_1xchar(sum, nmea_sum, 1);                 if( checksum != sum ) {                     return FALSE;                 }            }            return TRUE; } Allen Zhan GV-TECH 2010.05.24