版权声明:本文为博主原创文章转载请务必附上文章网址,谢谢 /zjw_python/article/details/
NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美國国家海洋电子协会(NMEA-The National Marine Electronics Associa-tion)制定的一套通讯协议GPS接收机根据NMEA-0183协议的标准规范,将位置、速度等信息通过串口传送到PC机、PDA等设备
NMEA-0183协议是GPS接收机应当遵守的标准协议,也是目前GPS接收机上使用最广泛的协议大多数常见的GPS接收机、GPS数据处理软件、导航软件都遵守或者至少兼容这個协议。
其中$GPRMC语句的格式如下:
这里整条语句是一个文本行行中以逗号“,”隔开各个字段,每个字段的大小(长度)不一这里的示例呮是一种可能,并不能认为字段的大小就如上述例句一样
这里,“*”为校验和识别符其后面的两位数为校验和,代表了“$”和“*”之間所有字符(不包括这两个字符)的异或值的十六进制值上面这条例句的校验和是十六进制的50,也就是十进制的80
提示:^运算符的作用昰异或。将$和*之间所有的字符做^运算(第一个字符和第二个字符异或结果再和第三个字符异或,依此类推)之后的值对65536取余后的结果应该囷*后面的两个十六进制数字的值相等,否则的话说明这条语句在传输中发生了错误注意这个十六进制值中是会出现A-F的大写字母的。
现在你的程序要读入一系列GPS输出,其中包含$GPRMC也包含其他语句。在数据的最后有一行单独的
你的程序要从中找出$GPRMC语句,计算校验和找出其中校验正确,并且字段2表示已定位的语句从中计算出时间,换算成北京时间一次数据中会包含多条$GPRMC语句,以最后一条语句得到的北京时间作为结果输出
你的程序一定会读到一条有效的$GPRMC语句。
多条GPS语句每条均以回车换行结束。最后一行是END三个大写字母
其中,hh是两位数的小时不足两位时前面补0;mm是两位数的分钟,不足两位时前面补0;ss是两位数的秒不足两位时前面补0。