
怎么从GPS模块发送来的字符串中解析出自己需要的经纬度以及时间信息
发布日期:2021-05-07 03:03:29
浏览次数:18
分类:精选文章
本文共 2277 字,大约阅读时间需要 7 分钟。
/*****************************************************************功能:解析GPS/北斗定位的时间及经纬度信息示例: extern void GPSParse(void) ; //声明外部GPS解析函数 GPSParse(); //调用GPS解析函数*********************************************************************/#include "port.h"#includetyGNRMC GNRMC ; //float test1 = 10096.7998 ;float test2 = 10017.6807 ;uint16_t dingwei = 0 ;char latitudeA[12] = { 0}; //暂存GPS的经纬度数据char longitudeA[12] = { 0}; //暂存GPS的经纬度数据char fi = 0 ;/**************************************************************************** GPS接收函数*****************************************************************************/void GPSParse(void){ unsigned long y=0,z=0; if(Uart2_Seriadef.ReciveSta ) //DMA接收完成标志位 { Uart2_Seriadef.ReciveSta = 0 ; //清空接收标志位 //$GNRMC,031223.00,A,3450.13043,N,11330.10687,E,0.036,,040121,,,A*63 GNRMC.all_data = strstr((char *)Uart2_Seriadef.pRecData ,"$GPRMC"); //获取以$GPRMC开头的数据 if( GNRMC.all_data != NULL ) { GNRMC.step = 0 ; strtok((char *)Uart2_Seriadef.pRecData ,","); while(GNRMC.step<6 ) //分割前10个数据 { GNRMC.step++; switch(GNRMC.step) { case 1 : GNRMC.time = atol(strtok(NULL,",")) ; //获取原始时间数据 break ; case 2 : if(strstr(strtok(NULL,","),"A") == NULL ) //判读经纬度信息是否有效 { GNRMC.step = 7 ; dingwei = 1 ; } else { dingwei = 0 ; } break ; case 3 :// GNRMC.latitude = atof(strtok(NULL,",")) * test1 ; //获得纬度数据 strcpy(latitudeA,strtok(NULL,",")); y=(latitudeA[0]-0x30)*10000000+(latitudeA[1]-0x30)*1000000; z=((latitudeA[2]-0x30)*10+(latitudeA[3]-0x30))/0.00006+(((latitudeA[5]-0x30)*1000+(latitudeA[6]-0x30)*100+(latitudeA[7]-0x30)*10+(latitudeA[8]-0x30))/0.6); GNRMC.latitude = y+z; break ; case 5 : strcpy(longitudeA,strtok(NULL,",")); y=(longitudeA[0]-0x30)*100000000+(longitudeA[1]-0x30)*10000000+(longitudeA[2]-0x30)*1000000; z=((longitudeA[3]-0x30)*10+(longitudeA[4]-0x30))/0.00006+(((longitudeA[6]-0x30)*1000+(longitudeA[7]-0x30)*100+(longitudeA[8]-0x30)*10+(longitudeA[9]-0x30))/0.6); GNRMC.longitude =y+z; break ; default : strtok(NULL,",") ; //分割一些无用数据 break ; } } } }}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月31日 05时39分50秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
杭电 2007 平方和与立方和(输入数据的大小顺序并不能默认)
2021-05-08
十大排序算法之三:插入排序(Python)
2021-05-08
利用Python实现循环队列
2021-05-08
利用递归实现二叉树的前中后序遍历(Python)
2021-05-08
冒泡排序又来啦(C/C++版本)
2021-05-08
python负数存储
2021-05-08
求二维数组中最大值的位置
2021-05-08
python中sort和sorted的区别
2021-05-08
maven安装
2021-05-08
合并两个有序数组
2021-05-08
聊聊我的五一小假期
2021-05-08
Vue新建项目——页面初始化
2021-05-08
Node.js包使用系列(一)——修改NPM全局下载和缓存路径
2021-05-08
6.14编一个程序,将两个字符串s1和s2比较,不要用strcmp函数。
2021-05-08
Java纯文本文件显示工具制作
2021-05-08
Unity2D Fixed Joint 2D详解
2021-05-08
三、案例:留言板 & url.parse()
2021-05-08
Python实验26:计算文件MD5值
2021-05-08
LeetCode:28. 实现 strStr()——————简单
2021-05-08