123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #include "includes.h"
- SUT_MESS sutMess;
- GPS_DEF gpsInfo;
- const unsigned short GPS_TimeTable[GPS_TABLE_NUM]={0,5,10,15,30,60,120,300};
- void gpsDataInit(void){
- memset((unsigned char *)&sutMess, 0, sizeof(SUT_MESS));
- memset((unsigned char *)&gpsInfo, 0, sizeof(GPS_DEF));
- }
- unsigned short getGPSTimeValue(unsigned char index){
- return GPS_TimeTable[index];
- }
- static unsigned char gpsCheckCnt=1;//默认开机查询一次
- void gpsCheckInfo(void){//查询GPS信息
- gpsCheckCnt++;
- }
- /*控制查询GPS状态
- dly:接口被调用的频率,单位ms*/
- void gpsProCtl(int dly){
- static unsigned short cnt=0;
- if(sutApp.gtMode!=0) return;//GT模式后不再查询
- if(getAppObjStatus(ASLEEP_POC)==0) return;//POC休眠时,不发指令
- if(++cnt<(5*1000/dly) && gpsCheckCnt==0) return;
- cnt=0;
- //以下5秒操作一次
- msgAtSend("AT+CGPS\r\n");
- gpsCheckCnt=0;
- }
- /*
- +CGPS:bf,ba,gf,[Lat],[Long]
- bf:0 部标关闭 1 部标打开
- ba:0 部标未鉴权 1 部标已鉴权
- gf:0 GPS关闭 1 GPS打开
- Lat: 已定位才有,定位纬度 度.度(已放大1000000)
- Long: 已定位才有,定位经度 度.度(已放大1000000)
- msg=bf,ba,gf,[Lat],[Long]
- */
- void proGpsMsg(char *msg){
- int i;
- unsigned char needCloseGps=0;
- unsigned char needOpenGps=0;
- unsigned char dotNum=0,lach=0;
- unsigned char bblF=0,bbAuth=0,gpsF=0;
- unsigned int Lat=0,Long=0;
- //获取部标开关状态
- bblF=atoi(msg);
- for(i=0;i<strlen(msg);i++){
- if(msg[i]==',') dotNum++;
- if(lach==','){
- if(dotNum==1) bbAuth=atoi(&msg[i]);
- else if(dotNum==2) gpsF=atoi(&msg[i]);
- else if(dotNum==3) Lat=atoi(&msg[i]);
- else if(dotNum==4) Long=atoi(&msg[i]);
- }
- lach=msg[i];
- }
- //优先根据gpsEnable打开或关闭GPS
- if(newPara.gpsEnable==0){
- needCloseGps=1;
- }else{
- //根据GPS上传间隔,打开/关闭GPS
- if(newPara.gpsTimeIndex<GPS_TABLE_NUM){
- if(GPS_TimeTable[newPara.gpsTimeIndex]==0) needCloseGps=1;
- else needOpenGps=1;
- }
- }
- if(needCloseGps!=0 && gpsF!=0){
- MSG_INFO(1, "Shut GPS");
- msgAtSend("AT+SGPS=0\r\n");
- gpsCheckInfo();//检查下是否成功
- }
- if(needOpenGps!=0 && gpsF==0){
- MSG_INFO(1, "Open GPS");
- msgAtSend("AT+SGPS=1\r\n");
- gpsCheckInfo();//检查下是否成功
- }
- //根据bubiaoEnable打开或关闭GPS
- if(newPara.bubiaoEnable==0){
- if(bblF!=0){
- MSG_INFO(1, "Shut BUBIAO");
- msgAtSend("AT+BUBIAO=0\r\n");
- gpsCheckInfo();//检查下是否成功
- }
- }else{
- if(bblF==0){
- MSG_INFO(1, "Open BUBIAO");
- msgAtSend("AT+BUBIAO=1\r\n");
- gpsCheckInfo();//检查下是否成功
- }
- }
- //更新值
- gpsInfo.bblF=bblF;
- gpsInfo.bbAuth=bbAuth;
- gpsInfo.Lat=Lat;
- gpsInfo.Long=Long;
- gpsInfo.update++;
- if(Lat==0 && Long==0) gpsInfo.gpsLocated=0;
- else gpsInfo.gpsLocated=1;
- }
|