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

📄 trans_process.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 4 页
字号:
 787   6                              heart_num = 0;
 788   6                          }
 789   5                      } 
 790   4                      else
 791   4                      {
 792   5                          sbuf.valid[0] = 0; 
 793   5                          gprs_reset(6);
 794   5                      }
 795   4                  }   
 796   3          
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 14  

 797   3                  return;
 798   3              }
 799   2          
 800   2              if (sbuf.valid[1] == 1)/*应答发送*/
 801   2              {
 802   3                  ptr = sbuf.buf[1];
 803   3                  head_info = (struct _mess_head_info *)(sbuf.buf[1]);
 804   3                  len = (Uchar)(head_info->mess_length >> 8);
 805   3                  if (udp_send(sbuf.buf[1],len) == 0)
 806   3                  {
 807   4                      sbuf.valid[1] = 0;
 808   4                  }            
 809   3          
 810   3                  return;
 811   3              }
 812   2          
 813   2              if (sbuf.valid[2] == 1)/*需要等待应答消息*/ 
 814   2              {
 815   3                  ptr = sbuf.buf[2];
 816   3                  head_info = (struct _mess_head_info *)(sbuf.buf[2]);
 817   3                  len = (Uchar)((head_info->mess_length) >> 8);
 818   3                  if(udp_send(ptr,len) == 0);
 819   3                  {    
 820   4                      memcpy(sbuf.buf[0], sbuf.buf[2], len +12 );
 821   4                      sbuf.valid[0] = 1;
 822   4                      trans_num = 0;
 823   4                      retry_num = 0;
 824   4          
 825   4                      sbuf.valid[2] = 0;
 826   4                      heart_num = 0;
 827   4                  }
 828   3          
 829   3                  return;
 830   3              }
 831   2             
 832   2              if (heart_num >= heart_send_number)/*心跳包*/
 833   2              {
 834   3                  make_heartbeat_message();
 835   3                  head_info = (struct _mess_head_info *)(sbuf.buf[5]);
 836   3                  ptr = sbuf.buf[5];
 837   3                  len = (Uchar)((head_info->mess_length >> 8)); 
 838   3                  if(udp_send(ptr,len) == 0)
 839   3                  {
 840   4                      heart_num = 0;
 841   4                      memcpy(sbuf.buf[0], sbuf.buf[5], len +12 );
 842   4                      sbuf.valid[0] = 1;
 843   4                      trans_num = 0;
 844   4                      retry_num = 0;
 845   4                  }
 846   3          
 847   3                  return;
 848   3              }
 849   2          }
 850   1          
 851   1      }
 852              
 853          
 854          /***xhb add***/
 855          void res_requir_telephone_list_message(char *mess_num)
 856          {
 857   1          RES_GENERAL *gprs_info;
 858   1          char *ptr;
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 15  

 859   1          
 860   1          gprs_info = (RES_GENERAL *) sbuf.buf[1];
 861   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 862   1          gprs_info->mess_head.mess_version = 2;
 863   1          gprs_info->mess_head.mess_reserve = 0;
 864   1          gprs_info->mess_head.mess_type = (Word)(RES_GET_TELEPHONE_LIST);
 865   1           gprs_info->mess_head.mess_length = 231;
 866   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 867   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
 868   1            
 869   1          ptr = gprs_info->memo;
 870   1          memcpy(ptr, mess_num, 4);
 871   1          ptr += 4;
 872   1      
 873   1          get_device_id(ptr);  
 874   1          ptr += 3;
 875   1          
 876   1          get_bus_id(ptr);
 877   1          ptr += 7;
 878   1      
 879   1          *ptr ++ = 0;
 880   1          
 881   1          get_telephone_list(ptr);
 882   1      
 883   1          sbuf.valid[1] = 1;
 884   1      }
 885          
 886          void res_configure_telephone_list_message(char *mess_num)
 887          {
 888   1          RES_GENERAL *gprs_info;
 889   1          char *ptr;
 890   1          
 891   1          gprs_info = (RES_GENERAL *) sbuf.buf[1];
 892   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 893   1          gprs_info->mess_head.mess_version = 2;
 894   1          gprs_info->mess_head.mess_reserve = 0;
 895   1          gprs_info->mess_head.mess_type = (Word)(RES_SET_TELEPHONE_LIST);
 896   1          gprs_info->mess_head.mess_length = 231;
 897   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
 898   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
 899   1            
 900   1          ptr = gprs_info->memo;
 901   1          memcpy(ptr, mess_num, 4);
 902   1          ptr += 4;
 903   1      
 904   1          get_device_id(ptr);  
 905   1          ptr += 3;
 906   1          
 907   1          get_bus_id(ptr);
 908   1          ptr += 7;
 909   1      
 910   1          *ptr ++ = 0;
 911   1          
 912   1          sbuf.valid[1] = 1;
 913   1      }
 914          
 915          /*以下代码,在一体式中暂不考虑*/
 916          /*******************************cj add****************/
 917          //远程下载程序应答
 918          #define UPDATA_TERM 2//更新终端
 919          #define UPDATA_HOST 1//更新主机
 920          /***********cj add***************/
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 16  

 921          /*type:1 为发送;2为接收
 922          ***********************************/
 923          Uint16 gProgramCurNum = 0;
 924          Uint32 gtestremoteAddrPro=  0;
 925          void res_update_program(Uchar* ptr)
 926          {
 927   1          PACKET_UPDATEPRO* pPacket;
 928   1          U16 nLen;
 929   1          U32 addr;
 930   1          RES_GENERAL *gprs_info;
 931   1          U8* tmpPtr;
 932   1          Byte nValue = KO;
 933   1          //先将程序写如E2
 934   1          pPacket = (PACKET_UPDATEPRO*)ptr;
 935   1          nLen = Le16(pPacket->len);
 936   1          //把信息打印出来
 937   1          if (UPDATA_HOST == pPacket->programType)
 938   1          {
 939   2              if (gProgramCurNum != pPacket->curPacket)
 940   2              {
 941   3                  
 942   3                  addr = pPacket->startAddr[0]+(pPacket->startAddr[1]<<8)+(pPacket->startAddr[2]<<16)+(pPacket->
             -startAddr[3]<<24);
 943   3      //            addr = ;
 944   3                  //是否需要置相关的位,用来表示更新是否允许完成?
 945   3                  if (pPacket->totalPacket == pPacket->curPacket)
 946   3                  {
 947   4                      //最后一个包
 948   4                      if (nLen >= (sizeof(PACKET_UPDATEPRO)-6))
 949   4                      {
 950   5                          nValue = write_programtoFlash(ptr+sizeof(PACKET_UPDATEPRO), (nLen-sizeof(PACKET_UPDATE
             -PRO)+6), gtestremoteAddrPro, NFUPDATE_REMOTE);
 951   5                      }
 952   4                      //将更新时间保存,启动更新任务
 953   4                      if (OK == nValue)
 954   4                          write_updatetime(ptr+nLen+6);
 955   4                  }
 956   3                  else
 957   3                  {
 958   4                      //中间的一个包
 959   4                      if (nLen > (sizeof(PACKET_UPDATEPRO)-12))
 960   4                          nValue = write_programtoFlash(ptr+sizeof(PACKET_UPDATEPRO), (nLen-sizeof(PACKET_UPDATE
             -PRO)+12), gtestremoteAddrPro, NFUPDATE_REMOTE);
 961   4                      if (OK == nValue)
 962   4                          gtestremoteAddrPro += 256;
 963   4                  }
 964   3              }
 965   2              else
 966   2                  nValue = OK;
 967   2              
 968   2          
 969   2              //生成响应包
 970   2              if (OK == nValue)
 971   2              {
 972   3                  gProgramCurNum = pPacket->curPacket;
 973   3                  gprs_info = (RES_GENERAL *) sbuf.buf[REMOTE_BUFFER_ID];
 974   3                  memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
 975   3                  gprs_info->mess_head.mess_version = 2;
 976   3                  gprs_info->mess_head.mess_reserve = 0;
 977   3                  gprs_info->mess_head.mess_type = (Word)(RES_UPDATE_PROGRAM);
 978   3                  gprs_info->mess_head.mess_length = sizeof(PACKET_UPDATEPRO)-sizeof(struct _mess_head_info);
 979   3                  swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 17  

 980   3                  swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));
 981   3                    
 982   3                  tmpPtr = gprs_info->memo;
 983   3                  memcpy(tmpPtr, pPacket->seq, 4);
 984   3                  tmpPtr += 4;
 985   3                  *tmpPtr++ = UPDATA_HOST;
 986   3                  
 987   3                  get_bus_id(tmpPtr);
 988   3                  tmpPtr += 7;
 989   3          
 990   3                  memcpy(tmpPtr, (Uchar*)&(pPacket->totalPacket), 2);
 991   3                  tmpPtr += 2;
 992   3                  memcpy(tmpPtr, (Uchar*)&(pPacket->curPacket), 2);
 993   3                  tmpPtr += 2;
 994   3                  memcpy(tmpPtr, (Uchar*)&(pPacket->startAddr), 4);
 995   3                  tmpPtr += 2;
 996   3                  sbuf.valid[REMOTE_BUFFER_ID] = 1;
 997   3              }
 998   2          }
 999   1      }
1000          
1001          /*查询广告通告应答*/
1002          /**********************
1003          *pnum:消息ID
1004          *type:值取LED_QUERYNOTICE和LED_QUERYADVERTICE
1005          *seq:值为LED_QUERYADVERTICE时,取值为1-20
1006          *pContent:内容
1007          *len:内容的长度
1008          **********************/
1009          void res_query_notice(Byte* pnum, Byte type, Byte seq, Byte* pContent, Byte len)
1010          {
1011   1          RES_QUERYNOTICE_STRUCT* gprs_info;
1012   1          Byte* pTmpPtr;
1013   1          gprs_info = (RES_QUERYNOTICE_STRUCT *) sbuf.buf[1];
1014   1          memcpy(gprs_info->mess_head.mess_sync, "NJPT", 4);
1015   1          gprs_info->mess_head.mess_version = 2;
1016   1          gprs_info->mess_head.mess_reserve = 0;
1017   1          gprs_info->mess_head.mess_type = (Word)(RES_QUERYNOTICE);      
1018   1          memcpy(&(gprs_info->res_messageid), pnum, 4);
1019   1          get_bus_id(gprs_info->bus_id);
1020   1          gprs_info->seq = seq;
1021   1          gprs_info->type = type;
1022   1          get_term_data(gprs_info->date);
1023   1          get_term_time(gprs_info->time);
1024   1          pTmpPtr = sbuf.buf[1]+sizeof(RES_QUERYNOTICE_STRUCT);
1025   1          if (len > 0)
1026   1              memcpy(pTmpPtr, pContent, len);
1027   1          gprs_info->mess_head.mess_length = len+sizeof(RES_QUERYNOTICE_STRUCT)-12;
1028   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_type));
1029   1          swap_uint((Uchar *)(&gprs_info->mess_head.mess_length));    
1030   1          sbuf.valid[1] = 1;
1031   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =  10220    ----
   CONSTANT SIZE    =      5    ----
   XDATA SIZE       =   2108     248
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V7.09   TRANS_PROCESS                                                         09/16/2008 09:24:30 PAGE 18  

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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