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

📄 gprs.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 3 页
字号:
 296   2                  gprs_packet_send(ptr, strlen(ptr) );
C51 COMPILER V7.09   GPRS                                                                  08/22/2008 14:26:33 PAGE 6   

 297   2                  gprsInfo.txTimer = 0;
 298   2                  break;
 299   2      
 300   2              case STATE_SEND_GET_IP:
 301   2                  if( count == 0 )
 302   2                  {
 303   3                      count ++;
 304   3      
 305   3                      ptr = at_cmd[AT_CMD_GET_IP].str;
 306   3                      gprs_packet_send(ptr, strlen(ptr) );
 307   3                      gprsInfo.txTimer = 0;
 308   3                  }
 309   2                  else if( count >= 40 )
 310   2                  {
 311   3                      gprsInfo.state = STATE_SEND_CONNECT;
 312   3                  }
 313   2                  else
 314   2                      count ++;
 315   2      
 316   2                  break;
 317   2      
 318   2      
 319   2              case STATE_SEND_CONNECT:
 320   2                  gprsInfo.state = STATE_RECEIVE_CONNECT;
 321   2      
 322   2                  gprs_send_connect();
 323   2                  gprsInfo.txTimer = 0;
 324   2                  break;
 325   2      
 326   2              case STATE_SEND_PACKET_INIT:
 327   2                  gprsInfo.state = STATE_RECEIVE_PACKET_INIT;
 328   2      
 329   2                  ptr = at_cmd[AT_CMD_AT].str;
 330   2                  gprs_packet_send(ptr, strlen(ptr) );
 331   2                  gprsInfo.txTimer = 20;
 332   2                  break;
 333   2      
 334   2              case STATE_SEND_POWER:
 335   2                  gprsInfo.state = STATE_RECEIVE_POWER;
 336   2      
 337   2                  gprs_packet_send("AT+CSQ\r", 7 );
 338   2                  gprsInfo.txTimer = 40;
 339   2                  break;
 340   2      
 341   2              case STATE_SEND_UDP_LENGTH:
 342   2                  gprsInfo.state = STATE_WAIT_PROMPT;
 343   2      
 344   2                  gprsInfo.errorCount = 0;
 345   2                  clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
 346   2                  strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_IP_SEND].str);
 347   2                  
 348   2                  ptr = gprsInfo.cmdBuffer + strlen(at_cmd[AT_CMD_IP_SEND].str);
 349   2                  sprintf(ptr, "%u\r", ipInfo.txLength);   /*xhb_debug*/
 350   2      
 351   2                  gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
 352   2      
 353   2                  break;
 354   2      
 355   2              case STATE_SEND_UDP_PACKET:
 356   2                  gprsInfo.state = STATE_WAIT_UDP_OK;
 357   2                  ipInfo.txCount ++;
 358   2                  gprs_packet_send(ipInfo.txBuffer, ipInfo.txLength );
C51 COMPILER V7.09   GPRS                                                                  08/22/2008 14:26:33 PAGE 7   

 359   2                  
 360   2                  break;
 361   2      
 362   2              case STATE_IDLE:
 363   2                  if( gprsInfo.outCallNumber[0] )
 364   2                      gprsInfo.state = STATE_VOICE_CALLING;
 365   2                  break;
 366   2      
 367   2      
 368   2              case STATE_VOICE_CALLING:
 369   2                  gprsInfo.state = STATE_VOICE_OUT;
 370   2      
 371   2                  clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
 372   2                  strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_DIAL].str);
 373   2                  
 374   2                  ptr = gprsInfo.cmdBuffer + strlen(at_cmd[AT_CMD_DIAL].str);
 375   2                  sprintf(ptr, "%s;\r", gprsInfo.outCallNumber);
 376   2                  gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
 377   2      
 378   2                  gprsInfo.outCallNumber[0] = 0;
 379   2                      
 380   2                  break;
 381   2              
 382   2              case STATE_HOLD_OFF:
 383   2                  gprsInfo.state = STATE_IDLE;
 384   2      
 385   2                  clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
 386   2                  strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_HOLD_OFF].str);
 387   2                  
 388   2                  gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
 389   2                  break;
 390   2      
 391   2              case STATE_HOLD_ON:
 392   2                  gprsInfo.state = STATE_VOICE_IN;
 393   2      
 394   2                  clear_ram(gprsInfo.cmdBuffer,sizeof(gprsInfo.cmdBuffer) );
 395   2                  strcpy(gprsInfo.cmdBuffer, at_cmd[AT_CMD_HOLD_ON].str);
 396   2                  
 397   2                  gprs_packet_send(gprsInfo.cmdBuffer, strlen(gprsInfo.cmdBuffer) );
 398   2                  break;
 399   2      
 400   2      
 401   2          }
 402   1      
 403   1      }
 404          
 405          char string_contain(char *srcStr, char *destStr)
 406          {
 407   1          while(*srcStr)
 408   1          {
 409   2              if( *srcStr++ != *destStr++ )
 410   2                  return(-1);
 411   2          }
 412   1      
 413   1          return(0);
 414   1      
 415   1      }
 416          
 417          void explain_at_return(void)
 418          {
 419   1          char *ptrChar;
 420   1          unsigned char returnId;
C51 COMPILER V7.09   GPRS                                                                  08/22/2008 14:26:33 PAGE 8   

 421   1          unsigned int i;
 422   1      
 423   1          ptrChar = gprsRcvBuffer;
 424   1      
 425   1          do
 426   1          {
 427   2              returnId = 0;
 428   2      
 429   2              for(i=0; *at_ret[i].str||returnId; i++)
 430   2              {
 431   3                  if( string_contain(at_ret[i].str, ptrChar) == 0)
 432   3                  {
 433   4                      returnId = at_ret[i].memo;
 434   4      
 435   4                      if( returnId == AT_RET_CRLF )
 436   4                      {
 437   5                          ptrChar += strlen(at_ret[i].str);
 438   5                          break;
 439   5                      }
 440   4                      else if( returnId == AT_RET_NJPT )
 441   4                      {
 442   5                          ipInfo.rxState = 1;
 443   5                          ipInfo.rxTimer = 0; 
 444   5                          ipInfo.rxCount ++;
 445   5                          ipInfo.rxLength = gprsInfo.rxBytes;
 446   5                          memcpy(ipInfo.rxBuffer, ptrChar, gprsInfo.rxBytes);
 447   5                          returnId = 0;
 448   5                          //如果此时正在发送数据该怎么处理?//cj add at 2008 2 20
 449   5                          if (gprsInfo.state == STATE_WAIT_PROMPT)
 450   5                          {
 451   6                              
 452   6                              gprsInfo.state = STATE_SEND_UDP_PACKET;
 453   6                          }
 454   5                          else if (gprsInfo.state ==  STATE_WAIT_UDP_OK)
 455   5                          {
 456   6                              gprsInfo.state = STATE_IDLE;
 457   6                          }
 458   5                              
 459   5                          break;
 460   5                      }
 461   4                      else if (returnId == AT_RET_RING)//( (returnId == AT_RET_RING) && (gprsInfo.state>=STATE_I
             -DLE) )//
 462   4                      {
 463   5                          gprsInfo.indication = 1;
 464   5                          strcpy(gprsInfo.inCallNumber, "000");
 465   5                          gprsInfo.state = STATE_VOICE_RING;
 466   5                          set_ringtimeout();
 467   5                      }
 468   4      
 469   4                      //cj add,主要是为了获取SIM卡号
 470   4                      if (returnId == AT_RET_CCID)
 471   4                      {
 472   5                          setSimCard(ptrChar, SIM_CARD_LEN);
 473   5                      }
 474   4                      //end of add
 475   4                      *ptrChar = 0;
 476   4                      switch( gprsInfo.state )
 477   4                      {
 478   5                          /**cj add for setting volume***/
 479   5                          case STATE_RECIEVE_SET_VOLUME:
 480   5                              gprsInfo.state = STATE_SEND_CCID;
 481   5                              break;
C51 COMPILER V7.09   GPRS                                                                  08/22/2008 14:26:33 PAGE 9   

 482   5                          /****end of add******/
 483   5                          case STATE_RECEIVE_PREINIT:
 484   5                              if( (returnId==AT_RET_OK) || (returnId==AT_RET_AT) )
 485   5                                  gprsInfo.state = STATE_SEND_INIT;
 486   5                              break;
 487   5      
 488   5                          case STATE_RECEIVE_INIT:
 489   5                              if( returnId == AT_RET_OK )
 490   5                                  gprsInfo.state = STATE_SEND_SET_VOLUME;//cj mod for setting volume:STATE_SEND_
             -CCID;
 491   5                              else
 492   5                                  gprsInfo.state = STATE_SEND_INIT;
 493   5      
 494   5                              break;
 495   5      
 496   5                          case STATE_RECEIVE_CCID:
 497   5                              if( returnId == AT_RET_CCID )
 498   5                                  gprsInfo.state = STATE_SEND_APN;
 499   5                              else
 500   5                                  gprsInfo.state = STATE_SEND_CCID;
 501   5      
 502   5                              break;
 503   5      
 504   5                          case STATE_RECEIVE_APN:
 505   5                              if( returnId == AT_RET_OK )
 506   5                                  gprsInfo.state = STATE_SEND_ACTIVE;
 507   5      
 508   5                              break;
 509   5      
 510   5                          case STATE_RECEIVE_ACTIVE:
 511   5                              if( returnId == AT_RET_OK )
 512   5                                  gprsInfo.state = STATE_SEND_GET_IP;
 513   5      
 514   5                              break;
 515   5      
 516   5                          case STATE_RECEIVE_PACKET_INIT:
 517   5                              if( (returnId==AT_RET_OK) || (returnId==AT_RET_AT) )//cj mod at 2008 2 21 old if( 
             -returnId == AT_RET_OK )
 518   5                                  gprsInfo.state = STATE_SEND_POWER;
 519   5      
 520   5                              break;
 521   5      
 522   5                          case STATE_RECEIVE_POWER:
 523   5                              if(( returnId == AT_RET_CSQ ) || (returnId == AT_RET_ATCSQ))
 524   5                              {
 525   6                                  unsigned char csqCount;
 526   6                                  char *csqPtr;
 527   6      
 528   6                                  gprsInfo.state = STATE_SEND_UDP_LENGTH;
 529   6      
 530   6                                  csqCount = 0;
 531   6                                  if (returnId == AT_RET_CSQ)
 532   6                                      csqPtr = ptrChar;
 533   6                                  else
 534   6                                      csqPtr = ptrChar+10;
 535   6                                  while(*csqPtr!=0x0D)
 536   6                                  {
 537   7                                      csqCount++;
 538   7                                      csqPtr++;
 539   7                                  }
 540   6                                  csqCount -= 5;
 541   6                                  csqCount &= 0xF;
C51 COMPILER V7.09   GPRS                                                                  08/22/2008 14:26:33 PAGE 10  

 542   6                                  csqPtr = ptrChar + 5;
 543   6                                  memcpy(gprsInfo.power, csqPtr, csqCount);
 544   6                                  *(csqPtr+csqCount) = 0;
 545   6                                  
 546   6                              }
 547   5      
 548   5                              break;
 549   5      
 550   5                          case STATE_RECEIVE_CONNECT:
 551   5                              if( returnId == AT_RET_CONNECT_OK )
 552   5                                  gprsInfo.state = STATE_IDLE;
 553   5                              else if( returnId == AT_RET_OK )
 554   5                              {
 555   6                                  //gprsInfo.txTimer = 80;
 556   6                                  ptrChar += strlen(at_ret[i].str);
 557   6                              }
 558   5      
 559   5                              break;
 560   5      
 561   5                          case STATE_WAIT_PROMPT:
 562   5                              if( returnId == AT_RET_PROMPT )
 563   5                                  gprsInfo.state = STATE_SEND_UDP_PACKET;
 564   5                              else
 565   5                                  gprs_reset(2);//gprsInfo.state = STATE_SEND_PACKET_INIT;
 566   5                              break;
 567   5      
 568   5                          case STATE_WAIT_UDP_OK:
 569   5                              if( returnId == AT_RET_SEND_OK )
 570   5                                  gprsInfo.state = STATE_IDLE;
 571   5      
 572   5                              break;
 573   5      
 574   5                          case STATE_VOICE_OUT:
 575   5                              if( returnId==AT_RET_COLP )
 576   5                                  gprsInfo.indication = 3;
 577   5      
 578   5                          case STATE_VOICE_IN:
 579   5                              if( (returnId==AT_RET_NO_CARRIER) || (returnId==AT_RET_BUSY) )
 580   5                              {
 581   6                                  gprsInfo.state = STATE_IDLE;
 582   6                                  gprsInfo.indication = 2;
 583   6                              }    
 584   5                              break;
 585   5      
 586   5                          case STATE_VOICE_RING:
 587   5                              if(returnId==AT_RET_NO_CARRIER )
 588   5                                  gprsInfo.state = STATE_IDLE;
 589   5      
 590   5                              break;
 591   5                      } /*end switch*/
 592   4                  } /*end if*/
 593   3              } /*end for*/
 594   2          }while( *ptrChar&&(returnId!=0) );
 595   1      
 596   1          
 597   1      
 598   1      }
 599          
 600          void gprs_receive_process(void)
 601          {

⌨️ 快捷键说明

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