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

📄 trans_process.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 4 页
字号:
 521   1          RES_CONFIGUR *gprs_info;
 522   1          pnum = mess_num;
 523   1          gprs_info = (RES_CONFIGUR *) sbuf.buf[1];
 524   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 525   1          gprs_info->mess_head.mess_version = 2;
 526   1          gprs_info->mess_head.mess_reserve = 0;
 527   1          gprs_info->mess_head.mess_type = (Word)(RES_CONFIGURE);      
 528   1          memcpy(&(gprs_info->res_messageid), pnum, 4);
 529   1          get_device_id(gprs_info->terminal_id);
 530   1          get_bus_id(gprs_info->bus_id);
 531   1          gprs_info->res_value = 0;
 532   1          gprs_info->mess_head.mess_length = 15;
 533   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 534   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
 535   1          sbuf.valid[1] = 1;
 536   1      }
 537          
 538          
 539          /*查询位置信息应答应答*/
 540          void res_seeposition_message(Uchar mess_num[4])
 541          {
 542   1          Uchar  *pnum;
 543   1          Uchar  run_array[3];
 544   1          Uchar  *parray;
 545   1          GPS_DATA *pgps;
 546   1          RES_SEEPOSITIO *gprs_info;
 547   1          parray = run_array;
 548   1          pnum = mess_num;
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 10  

 549   1          gprs_info = (RES_SEEPOSITIO *) sbuf.buf[1];
 550   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 551   1          gprs_info->mess_head.mess_version = 2;
 552   1          gprs_info->mess_head.mess_reserve = 0;
 553   1          gprs_info->mess_head.mess_type = (Word)(RES_SEEPOSITION);      
 554   1          memcpy(&(gprs_info->res_messageid), pnum, 4);
 555   1          get_device_id(gprs_info->terminal_id);
 556   1          get_bus_id(gprs_info->bus_id);
 557   1          get_cur_runmode(parray);
 558   1          if (run_array[0] != 0 )
 559   1          {
 560   2              get_cur_mode(parray + 1);
 561   2              if(run_array[1] >= 1 & run_array[1] <= 8)
 562   2              {
 563   3                  get_cur_direction(parray + 2);
 564   3                  if(run_array[2] == 0)
 565   3                  {
 566   4                      run_array[2]  = 1;
 567   4                  }
 568   3                  else
 569   3                  {
 570   4                      run_array[2]  = 2;
 571   4                  }
 572   3                  gprs_info->runmode = (run_array[2] << 6) & (run_array[1]);
 573   3              }
 574   2              else
 575   2              {
 576   3                  gprs_info->runmode = run_array[1];
 577   3              }
 578   2          }
 579   1          else
 580   1          { 
 581   2              gprs_info->runmode = 0;
 582   2          }
 583   1          gprs_info->res_value = 0;
 584   1          get_cur_direction(&(gprs_info->runmode));
 585   1          get_gps_data(&pgps);
 586   1          memcpy(gprs_info->date, pgps->date, 3);
 587   1          memcpy(gprs_info->time, pgps->time, 3);
 588   1          memcpy(&(gprs_info->longitude), &(pgps->longitude), 4);
 589   1          memcpy(&(gprs_info->latitude), &(pgps->latitude), 4);
 590   1          gprs_info->speed = pgps->speed;
 591   1          gprs_info->direction = pgps->direction;
 592   1          get_device_id(&(gprs_info->terminal_id));
 593   1          get_bus_id(&(gprs_info->bus_id));
 594   1          gprs_info->mess_head.mess_length = 15;
 595   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 596   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
 597   1          sbuf.valid[1] = 1;
 598   1      }
 599          
 600          
 601          /*查询终端信息应答应答*/
 602          void res_seeterminal_message(Uchar mess_num[4])
 603          {
 604   1          Uchar  *pnum;
 605   1          RES_SEETERMINA *gprs_info;
 606   1          pnum = mess_num;
 607   1          gprs_info = (RES_SEETERMINA *) sbuf.buf[1];
 608   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 609   1          gprs_info->mess_head.mess_version = 2;
 610   1          gprs_info->mess_head.mess_reserve = 0;
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 11  

 611   1          gprs_info->mess_head.mess_type = (Word)(RES_SEETERMINAL);      
 612   1          memcpy(&(gprs_info->res_messageid), pnum, 4);
 613   1          get_device_id(gprs_info->terminal_id);
 614   1          get_bus_id(gprs_info->bus_id);
 615   1          gprs_info->res_value = 0;
 616   1          get_software_version(&(gprs_info->soft_edition));
 617   1          gprs_info->mess_head.mess_length = 16;
 618   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 619   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
 620   1          sbuf.valid[1] = 1;
 621   1      }
 622          
 623          /*远程下载更新应答*/
 624          void res_update_message(Uchar mess_num[4], Uchar rcv_block[2], Uchar type, Uchar up_value )
 625          {
 626   1          Uchar  *pnum;
 627   1          RES_UPDAT *gprs_info;
 628   1          pnum = mess_num;
 629   1          gprs_info = (RES_UPDAT *) sbuf.buf[1];
 630   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 631   1          gprs_info->mess_head.mess_version = 2;
 632   1          gprs_info->mess_head.mess_reserve = 0;
 633   1          gprs_info->mess_head.mess_type = (Word)(RES_UPDATE);      
 634   1          memcpy(&(gprs_info->res_messageid), pnum, 4);
 635   1          get_device_id(gprs_info->terminal_id);
 636   1          get_bus_id(gprs_info->bus_id);
 637   1          gprs_info->res_value = up_value;
 638   1          memcpy(&(gprs_info->block), rcv_block, 2);/*返回的block*/
 639   1          gprs_info->update_type = type;
 640   1          gprs_info->mess_head.mess_length = 18;
 641   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 642   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
 643   1          sbuf.valid[1] = 1;
 644   1      }
 645          
 646          /*查询终端参数配置应答*/
 647          void res_seeconfugure_message(Uchar mess_num[4])
 648          {
 649   1          Uchar  *pnum;
 650   1          RES_SEECONFIGUR *gprs_info;
 651   1          pnum = mess_num;
 652   1          gprs_info = (RES_SEECONFIGUR *) sbuf.buf[1];
 653   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 654   1          gprs_info->mess_head.mess_version = 2;
 655   1          gprs_info->mess_head.mess_reserve = 0;
 656   1          gprs_info->mess_head.mess_type = (Word)(RES_SEECONFIGURE);      
 657   1          memcpy(&(gprs_info->res_messageid), pnum, 4);
 658   1          get_device_id(gprs_info->terminal_id);
 659   1          get_bus_id(gprs_info->bus_id);
 660   1          gprs_info->res_value = 0;
 661   1          get_online_time(&(gprs_info->heartbeat_interval));/*心跳间隔*/
 662   1          get_auto_time(&(gprs_info->potision_interval));/*gps间隔*/
 663   1          get_arrive_meter(&(gprs_info->in_distance));/*到站距离*/
 664   1          get_left_meter(&(gprs_info->out_distance));/*出站距离*/
 665   1          gprs_info->mess_head.mess_length = 20;
 666   1          swap_uint((Uchar *)(&(gprs_info->potision_interval)));
 667   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 668   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
 669   1          sbuf.valid[1] = 1;
 670   1      }
 671          
 672          
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 12  

 673          /**照片拍摄应答**/
 674          void res_photo_message(Uchar* messID)
 675          {
 676   1          RES_PHOTOMESSAGE_STR *gprs_info;
 677   1          gprs_info = (RES_PHOTOMESSAGE_STR *) sbuf.buf[1];
 678   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 679   1          gprs_info->mess_head.mess_version = 2;
 680   1          gprs_info->mess_head.mess_reserve = 0;
 681   1          gprs_info->mess_head.mess_type = (Word)(RES_PHOTOMESSAGE);      
 682   1          memcpy(gprs_info->messID, messID, 4);
 683   1          get_bus_id(gprs_info->bus_id);
 684   1          gprs_info->mess_head.mess_length = 11;
 685   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 686   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
 687   1          sbuf.valid[1] = 1;
 688   1      }
 689          
 690          /**照片停止拍摄应答**/
 691          void res_photostop_message(Uchar* messID)
 692          {
 693   1          RES_PHOTOMESSAGE_STR *gprs_info;
 694   1          gprs_info = (RES_PHOTOMESSAGE_STR *) sbuf.buf[1];
 695   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 696   1          gprs_info->mess_head.mess_version = 2;
 697   1          gprs_info->mess_head.mess_reserve = 0;
 698   1          gprs_info->mess_head.mess_type = (Word)(RES_PHOTOSTOPMSG);      
 699   1          memcpy(gprs_info->messID, messID, 4);
 700   1          get_bus_id(gprs_info->bus_id);
 701   1          gprs_info->mess_head.mess_length = 11;
 702   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 703   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
 704   1          sbuf.valid[1] = 1;
 705   1      }
 706          
 707          
 708          /*发送处理*/
 709          void serverTrans_process(void)
 710          {
 711   1          Int8 *ptr;
 712   1          Uint16 len = 0;
 713   1          struct _mess_head_info *head_info;
 714   1          Uint16 gps_send_num;
 715   1          Uchar heart_send_num;
 716   1          Uint16  heart_send_number;   
 717   1      
 718   1          gps_num++;
 719   1          heart_num++;
 720   1          get_auto_time(&gps_send_num);
 721   1          get_online_time(&heart_send_num);
 722   1          heart_send_number = heart_send_num * 20;  
 723   1      
 724   1      
 725   1          /********************发送相片数据使用***********************/
 726   1          if (1 == sbufPhoto.valid)
 727   1          {
 728   2              head_info = (struct _mess_head_info *)(sbufPhoto.buf);
 729   2              len = Le16(head_info->mess_length);
 730   2              if (udp_send(sbufPhoto.buf, len) == 0)
 731   2              {
 732   3                  //for debug
 733   3                 // memcpy(testBuf, sbufPhoto.buf, 200);
 734   3                  //sioc_send(testBuf, 200);
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 13  

 735   3                  //end of debug
 736   3                  sbufPhoto.valid = 0;
 737   3              }            
 738   2      
 739   2              return;
 740   2          }
 741   1      
 742   1          if (PHOTO_DATASENDING != photo_getdatastatus())
 743   1          {
 744   2              /*************************专门为远程程序更新来处理*************/
 745   2              if (sbuf.valid[REMOTE_BUFFER_ID] == 1)
 746   2              {
 747   3                  ptr = sbuf.buf[REMOTE_BUFFER_ID];
 748   3                  head_info = (struct _mess_head_info *)(sbuf.buf[REMOTE_BUFFER_ID]);
 749   3                  len = (Uchar)(head_info->mess_length >> 8);
 750   3                  if (udp_send(sbuf.buf[REMOTE_BUFFER_ID],len) == 0)
 751   3                  {
 752   4                      sbuf.valid[REMOTE_BUFFER_ID] = 0;
 753   4                  }            
 754   3          
 755   3                  return;
 756   3              }
 757   2              /**********************************************************/
 758   2          
 759   2              if (gps_num >= (gps_send_num * 20))    /*gps消息处理(不要求响应)*/    
 760   2              {
 761   3                  make_gps_message();
 762   3                  head_info = (struct _mess_head_info *)(sbuf.buf[4]);
 763   3                  ptr = sbuf.buf[4];
 764   3                  len = (Uchar)((head_info->mess_length >> 8));        
 765   3                  if(udp_send(ptr,len) == 0)
 766   3                  {
 767   4                      gps_num = 0;
 768   4                  }     
 769   3          
 770   3                  return;
 771   3              }
 772   2          
 773   2              if (sbuf.valid[0] == 1)/*未收到响应的消息重发*/
 774   2              {
 775   3                  ptr = sbuf.buf[0];  
 776   3                  retry_num++;
 777   3                  if(retry_num >= 20 * 5) /*重发时间间隔5秒*/
 778   3                  {
 779   4                      retry_num = 0;
 780   4                      trans_num ++;                
 781   4                      if(trans_num < 6)/*重发3次*/
 782   4                      {  
 783   5                          head_info = (struct _mess_head_info *)(sbuf.buf[0]);
 784   5                          len = (Uchar)(head_info->mess_length >> 8);
 785   5                          if( udp_send(ptr,len) == 0 )
 786   5                          {

⌨️ 快捷键说明

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