sim808 gps 定位数据解析

  1. AT+CGNSPWR=1 //打开GPS电源

正常返回“OK

AT+CGNSPWR=0 //关闭GPS电源

 

2AT+CGNSSEQ="RMC"//定义NMEA解析

返回:

OK

 

3AT+CGNSINF //获取GPS定位信息

返回:

AT+CGPSINF

+CGNSINF:1,1,20151031073440.000,22.275393,113.507882,5.200,0.02,351.3,1,,1.2,1.9,1.5,,12,9,,,46,,

OK

数据内容定义,请查阅“SIM800 Series_GNSS_Application Note V1.00

  1. AT+CGNSURC=1//间隔1S输出定位信息

返回:

+UGNSINF:1,1,20151031073659.000,22.275405,113.507875,4.700,0.04,250.6,1,,1.2,1.9,1.5,,12,9,,,48,,

之后串口就会不断的输出NMEA信息

 

详细的配置和信息的解析,请查看“SIM800 Series_GNSS_ApplicationNote V1.00”。


定位不成功:

+UGNSINF:1,0,20161105064849.104,,,,0.00,0.0,0,,,,,,4,0,,,38,,

+UGNSINF:1,0,20161105064945.303,,,,726.95,234.9,0,,,,,,7,3,,,45,,


定位成功:

+UGNSINF:1,1,20161105065046.000,22.827863,113.61953,38.100,0.00,242.5,1,,1.3,1.6,0.9,,9,6,,,46,,

+UGNSINF: 1,1,20161105073116.000,22.858005,113.263150,40.900,7.56,166.2,1,,0.9,1.2,0.8,,10,9,,,42,,


{
    if((p1 = (char*)strstr((const char*)Uart2_Buf, "+UGNSINF: 1,1,")), (p1 != NULL)) //寻找开始符
    {
        if((p2 = (char*)strstr((const char*)p1, "\x0d\x0a")), (p2 != NULL)) //寻找结束符
        {
            *p2 = 0;//添加结束符
            p2 = strtok((p1), ",");
            p2 = (char*)strtok(NULL, ",");
            p2 = (char*)strtok(NULL, ",");
            UART1_SendString("时间:");
            UART1_SendString((char *)p2);
            UART1_SendLR();
            p2 = (char*)strtok(NULL, ",");
            UART1_SendString("纬度:");
            UART1_SendString((char *)p2);
            UART1_SendLR();
            p2 = (char*)strtok(NULL, ",");
            UART1_SendString("经度:");
            UART1_SendString((char *)p2);
            UART1_SendLR();
            p2 = (char*)strtok(NULL, ",");
            UART1_SendString("海拔:");
            UART1_SendString((char *)p2);
            UART1_SendLR();
            UART1_SendLR();
            CLR_Buf2();
        }
    }
}

阅读更多
文章标签: stm32 gps
个人分类: gps
想对作者说点什么? 我来说一句

SIM808开发手册

2015年05月11日 19.54MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭