SIM868——GPS加速定位方法

版权声明:本文为博主原创文章,未经博主允许不得转载,联系邮箱[email protected] https://blog.csdn.net/w464960660/article/details/83932795

【问题】:GPS启动方式一般分为三种,另一篇文章有介绍,模块冷启动时需要实际较长,尤其在信号不佳的情况下,启动时间会更长,亲测室内靠窗户位置  SIM868 冷启动时间约在50s左右,那么假如存在这样的应用场景,客户拿着设备在室内窗户附近启动,等了将近1min才获取位置数据,这样用户体验会极差。

【解决方案】:SIM868_GNSS_AGPS_应用文档_V1.00   文档中也有介绍,有三种加速定位技术,EASY方式默认是开启的,其他两种需要手动设置,我们应用的第三种,文档中笔误,SimFastFix技术  TTFF最小5s就能响应,相比第二种,只是多了LBS辅助基站定位,其他都是一样的,所以速度会更快一些。

【程序源码】:
1、 自检epo文件是否存在、是否过期;
2、如果EPO文件不存在或已过期,则重新下载EPO文件;
3、下载EPO文件成功,且检测EPO OK,则将EPO数据、UTC时间、当前的经纬度(通过基站获取)写入GPS模块;

u8 SIM868_GPSInit(void)
{
	
if(SIM868_Send_Cmd((u8 *)"AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"",(u8 *)"OK",100)) return 1;  //设置网络参数
	 if(SIM868_Send_Cmd((u8 *)"AT+SAPBR=3,1,\"APN\",\"CMNET\"",(u8 *)"OK",500)) return 2;     //设置APN
	 if(SIM868_Send_Cmd((u8 *)"AT+SAPBR=1,1",(u8 *)"OK",500)) return 3;											  //激活网络场景
	 if(SIM868_Send_Cmd((u8 *)"AT+SAPBR=2,1",(u8 *)"OK",600)) return 4;   										//获取分配IP地址
	 if(SIM868_Send_Cmd((u8 *)"AT+CNTP=\"ntp1.aliyun.com\",32",(u8 *)"OK",200)) return 5; 		//设置NTP服务器地址,时区
	 if(SIM868_Send_Cmd((u8 *)"AT+CNTP",(u8 *)"CNTP: 1",2000)) return 6; 											//开启网络同步(需要等待时间较长)
	 if(SIM868_Send_Cmd((u8 *)"AT+CCLK?",(u8 *)"OK",200)) return 7; 													//获取本地时间
	  delay_ms(200);  //重要,等待存储本地时间动作完成再进行下一步
	 if(SIM868_Send_Cmd((u8 *)"AT+CLBS=1,1",(u8 *)"OK",1500)) return 8; 											//获取基站定位地址(需等待5s左右)	
	  delay_ms(200);  //重要,等待存储LBS数据动作完成再进行下一步
	
	 if ( (SIM868_Send_Cmd((u8 *)"AT+FSLS=C:\\User\\",(u8 *)"epo",200)) || (SIM868_Send_Cmd((u8 *)"AT+CGNSCHK=3,1",(u8 *)"+CGNSCHK: 3,1",200)) )		//查询EPO文件是否存在,且检查EPO文件大小并验证生效 
	 { 
	 	 if(SIM868_Send_Cmd((u8 *)"AT+FTPSERV=\"116.247.119.165\"",(u8 *)"OK",200)) return 9; 	//设置FTP服务器地址 
		 if(SIM868_Send_Cmd((u8 *)"AT+FTPUN=\"customer\"",(u8 *)"OK",200)) return 10; 					//设置FTP服务器名
		 if(SIM868_Send_Cmd((u8 *)"AT+FTPPW=\"111111\"",(u8 *)"OK",200)) return 11; 						//设置FTP密码
		 if(SIM868_Send_Cmd((u8 *)"AT+FTPGETNAME=\"MTK3.EPO\"",(u8 *)"OK",200)) return 12; 			//设置预下载的EPO文件名
//		 		 delay_ms(200); 
		 if(SIM868_Send_Cmd((u8 *)"AT+FTPGETPATH=\"/\"",(u8 *)"OK",200)) return 13; 						//设置下载路径
		 if(SIM868_Send_Cmd((u8 *)"AT+FTPEXTGET=1",(u8 *)"+FTPEXTGET:",4000)) return 14; 				//下载数据至本地缓存(需要等待20s左右,为避免无法等到)
		 if(SIM868_Send_Cmd((u8 *)"AT+FTPEXTGET=4,\"epo\"",(u8 *)"OK",500)) return 15; 					//保存数据作为EPO文件至本地存储器(需要等待5s左右)
		 if(SIM868_Send_Cmd((u8 *)"AT+FSLS=C:\\User\\",(u8 *)"epo",200)) return 16; 					  //查询EPO文件是否存在
		 if(SIM868_Send_Cmd((u8 *)"AT+CGNSCHK=3,1",(u8 *)"+CGNSCHK: 3,1",200)) return 17; 			//检查EPO文件大小并验证生效
	 }
	 if(SIM868_Send_Cmd((u8 *)"AT+CGNSPWR=1",(u8 *)"OK",200)) return 18; 					  		   		//开启GPS电源
	 if(SIM868_Send_Cmd((u8 *)"AT+CGNSAID=31,1,1",(u8 *)"+CGNSAID:",1000)) return 19; 					//发送EPO文件给GPS		
//	 if(SIM868_Send_Cmd((u8 *)"AT+SAPBR=0,1",(u8 *)"OK",1000)) return 20; 							//关闭GPRS上下文 	
	 
		return 0;  	
}

猜你喜欢

转载自blog.csdn.net/w464960660/article/details/83932795