⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gps.lst

📁 w77E58开发的具备蓝牙功能的GPS导航仪
💻 LST
📖 第 1 页 / 共 2 页
字号:
 217   1              if(i==0) return;
 218   1              
 219   1              if(     GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 220   1                      GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
 221   1                      GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
 222   1                      GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9'||
 223   1                      GprmcBuff[i+5]<'0'||GprmcBuff[i+5]>'9'||
 224   1                      GprmcBuff[i+6]<'0'||GprmcBuff[i+6]>'9')
 225   1                  return;
 226   1            
 227   1              xYear =(GprmcBuff[i+5]-'0')*10+GprmcBuff[i+6]-'0';
 228   1                  xMonth=(GprmcBuff[i+3]-'0')*10+GprmcBuff[i+4]-'0';
 229   1                  xDay  =(GprmcBuff[i+1]-'0')*10+GprmcBuff[i+2]-'0';
 230   1      
 231   1      
 232   1              i=Split(GprmcBuff,GPRMC_SPEED);   
 233   1              if(i==0) return;
 234   1                  if(GprmcBuff[i+4]=='.')
 235   1                  {
 236   2                   if(GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 237   2                      GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 5   

 238   2                      GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9'||
 239   2                      GprmcBuff[i+4]!='.'||
 240   2                      GprmcBuff[i+5]<'0'||GprmcBuff[i+5]>'9')
 241   2                      return;      
 242   2                    Speed = (GprmcBuff[i+1]-'0')*1000+(GprmcBuff[i+2]-'0')*100+(GprmcBuff[i+3]-'0')*10+(GprmcBuff[i+5]-
             -'0'); /*ELARGE 10*/
 243   2                  }   
 244   1                  else
 245   1                  if(GprmcBuff[i+3]=='.')
 246   1                  {
 247   2                    if(GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 248   2                      GprmcBuff[i+2]<'0'||GprmcBuff[i+2]>'9'||
 249   2                      GprmcBuff[i+3]!='.'||
 250   2                      GprmcBuff[i+4]<'0'||GprmcBuff[i+4]>'9')
 251   2                      return;      
 252   2                    Speed = (GprmcBuff[i+1]-'0')*100+(GprmcBuff[i+2]-'0')*10+(GprmcBuff[i+4]-'0'); /*ELARGE 10*/
 253   2                  }   
 254   1                  else
 255   1                  if(GprmcBuff[i+2]=='.')
 256   1                  {
 257   2                     if(GprmcBuff[i+1]<'0'||GprmcBuff[i+1]>'9'||
 258   2                     GprmcBuff[i+2]!='.'||
 259   2                     GprmcBuff[i+3]<'0'||GprmcBuff[i+3]>'9')
 260   2                     return;      
 261   2                     Speed = (GprmcBuff[i+1]-'0')*10+(GprmcBuff[i+3]-'0'); /*ELARGE 10*/
 262   2                  }   
 263   1                  else
 264   1                  if(GprmcBuff[i+1]==',' && GprmcBuff[i+2] != '.' && GPSav==1)
 265   1                  {
 266   2                     Speed = 0;
 267   2                  }
 268   1              else
 269   1                  return;
 270   1      
 271   1              JWDMode=JWD_DU;
 272   1                  
 273   1                      sprintf(TP_UD,"Lat:");
 274   1              if(JWDMode==JWD_DU)   //度,如114。573124度
 275   1                      {
 276   2                  
 277   2                    i= LatDeg;
 278   2                        j= (LatMin1*10000+LatMin2)/60;                   //33.4264  ==> 33*10000=330000+4264=334264/60=5571
 279   2                        k= (LatMin1*10000+LatMin2-j*60);       //(334264-5571X60)=4/60
 280   2                k=k*100/6;
 281   2                        if(k>=100)
 282   2                           sprintf(cmd,"%d.%d%d",i,j,k);
 283   2                    else
 284   2                {
 285   3                   sprintf(cmd,"%d.%d0%d",i,j,k);
 286   3               
 287   3                        }
 288   2      
 289   2                      }
 290   1                      else
 291   1              if(JWDMode==JWD_DMS) //度分秒 如114。27'34"
 292   1                      {
 293   2                
 294   2                        i= LatDeg;     
 295   2                j= LatMin1;      //MIN 
 296   2                        k= LatMin2*60/10000;      //SEC
 297   2      
 298   2                sprintf(cmd,"%d %d'%d\"",i,j,k);
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 6   

 299   2      
 300   2      
 301   2              }               
 302   1              strcat(TP_UD, cmd);                               
 303   1              strcat(TP_UD, "\r\n");                               
 304   1              strcat(TP_UD, "Long:");                               
 305   1      
 306   1              if(JWDMode==JWD_DU)   //度,如114。573124度
 307   1                      {
 308   2                        i= LonDeg;
 309   2                        j= (LonMin1*10000+LonMin2)/60;                   //33.4264  ==> 33*10000=330000+4264=334264/60=5571
 310   2                        k= (LonMin1*10000+LonMin2-j*60);       //(334264-5571X60)=4/60
 311   2                k=k*100/6;
 312   2                        if(k>=100)
 313   2                           sprintf(cmd,"%d.%d%d",i,j,k);
 314   2                    else
 315   2                {
 316   3                   sprintf(cmd,"%d.%d0%d",i,j,k);
 317   3               
 318   3                        }
 319   2                      }
 320   1                      else
 321   1              if(JWDMode==JWD_DMS) //度分秒 如114。27'34"
 322   1                      {
 323   2                        i= LonDeg;     
 324   2                j= LonMin1;      //MIN 
 325   2                        k= LonMin2*60/10000;      //SEC
 326   2                        sprintf(cmd,"%d %d'%d\"",i,j,k);
 327   2      
 328   2              }               
 329   1              
 330   1                  strcat(TP_UD, cmd);                               
 331   1              strcat(TP_UD, "\r\n");                               
 332   1              strcat(TP_UD, "Speed:");                               
 333   1              
 334   1                      i= (Speed/10);
 335   1              j= Speed%10;   
 336   1              sprintf(cmd,"%d.%d",i,j);
 337   1              strcat(TP_UD, cmd);                               
 338   1              strcat(TP_UD, "\r\n"); 
 339   1      
 340   1              sprintf(cmd,"%d-%d-%d",(int)xYear+2000,(int)xMonth,(int)xDay);
 341   1              strcat(TP_UD, cmd);                               
 342   1              strcat(TP_UD, "\r\n"); 
 343   1      
 344   1                  
 345   1              sprintf(cmd,"%d:%d:%d",(int)xHour+8,(int)xMin,(int)xSec);
 346   1              strcat(TP_UD, cmd);                               
 347   1              strcat(TP_UD, "\r\n"); 
 348   1      
 349   1      
 350   1      
 351   1                      GPSns = ((GprmcBuff[i+10]=='N')? 1:0);
 352   1              GPSew = ((GprmcBuff[i+23]=='E')? 1:0);
 353   1              
 354   1              GPSReady = TRUE;
 355   1           
 356   1      }       
 357          
 358          
 359          void ParseNMEA0183(uchar* GpsBuff)
 360          {
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 7   

 361   1              
 362   1             
 363   1                  if(strncmp(GpsBuff, "$GPRMC",5)==0)
 364   1              {
 365   2      
 366   2      /*jiuwang data format:*/        
 367   2      /*      $GPRMC,090058.01,A,2233.4264,N,11406.1970,E,000.0,000.0,041206,002.1,W,A*29*/
 368   2                  if(GpsBuff[6]==',')
 369   2                          {
 370   3                             ParseGPRMC(GpsBuff);
 371   3                  } 
 372   2                 
 373   2              }
 374   1              
 375   1      
 376   1      }       
 377          
 378          
 379          
 380          void ReadGPS(void)
 381          {
 382   1           int i;
 383   1           uchar retry;
 384   1      #ifdef DEBUG_GPS    
 385   1           ParseNMEA0183(debug_gps);
 386   1      
 387   1      #else
                   //if(GPS_UART1_RDY==FALSE) return NULL; 
                   
                       retry=250;
                   i=0;
                   while(retry--)
                   {  
                     if((m_Buffer[i]=getdp310())=='$') break;
                   
                       }       
                   
                   if(retry!=0)
                   {
                        while(1)
                        {
                            m_Buffer[++i]=getbyte1();
                            if(m_Buffer[i-1]=='\r' &&  m_Buffer[i]=='\n') break;       
                            else if(i>100)break;
                                   
                        }
                   }
                   
              
                   if(m_Buffer[0]=='$') 
                   {
                        ParseNMEA0183(m_Buffer);
                       //gsmSendMessage();
                         #ifdef DEBUG  
                               for(i=0;i<100;i++)
                               {
                          if(m_Buffer[i-1]=='\r' &&  m_Buffer[i]=='\n')
                          {
                             
                             m_Buffer[i+1]=0;     
                                         putstring(m_Buffer);
                                         break;
C51 COMPILER V7.08   GPS                                                                   04/06/2008 23:24:33 PAGE 8   

                                      }
                            
                               }
                      #endif 
                       m_Buffer[0]=NULL; 
                   }
              
              #endif
 431   1      
 432   1           
 433   1      }
 434          
 435          
 436          
 437          
 438          
 439          

C51 COMPILATION COMPLETE.  2 WARNING(S),  2 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -