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

📄 rcv_process.lst

📁 通过车载终端采集GPS数据
💻 LST
字号:
C51 COMPILER V7.09   RCV_PROCESS                                                           09/16/2008 09:24:35 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE RCV_PROCESS
OBJECT MODULE PLACED IN .\output\Rcv_process.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE gprs\Rcv_process.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gp
                    -s\;inter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\Rcv_process.lst) OBJECT(.\output\Rc
                    -v_process.obj)

line level    source

   1          #include "typedef.h"
   2          #include "struct_def.h"
   3          #include "string.h"
   4          #include "common_function.h"
   5          #include "Trans_process.h"
   6          #include "Rcv_process.h"
   7          #include "global.h" 
   8          #include "message.h"
   9          #include "centerinterface.h"
  10          #include "menuprocess.h"
  11          #include "photo.h"
  12          #include "systemmanager.h"
  13          #include "16c554.h"
  14          extern PROTOCOL_SEND_BUFFER sbuf;
  15          extern DWord serial_number;
  16          
  17          /*消息合法性检验*/
  18          Uchar verify_process(void)
  19          {
  20   1          char *ptra;/*调试用*/
  21   1          char * ptr;
  22   1          Uchar  *pl;
  23   1          Word   chksum;
  24   1          Uchar rsync[4];
  25   1          Uchar sync[4] = "NJPT";
  26   1          unsigned int len = 0;
  27   1          ptra = sbuf.buf[5];/*调试用*/ ;
  28   1          if(udp_receive(&ptr) == 0)/*有无消息判断*/
  29   1          {
  30   2              return(0);
  31   2          }
  32   1          else
  33   1          {
  34   2              memcpy(rsync, ptr, 4);
  35   2              pl = (ptr+12);
  36   2              len = ((*(ptr+11))<<8)+(*(ptr+10));
  37   2              chksum = 0;
  38   2              while(len--)
  39   2              {
  40   3                  chksum += *pl++;
  41   3              }
  42   2              if( (compare(rsync,sync,4)==0) && (*(ptr+9) == (Uchar)(chksum >> 8)) && (*(ptr+8) == (Uchar)chksum
             -)  )/*同步判断与校验和判断*/
  43   2              {
  44   3                  return(1);  
  45   3              }
  46   2              else
  47   2              {
  48   3                  return(0);
  49   3              }    
  50   2          }
  51   1      }
  52          
C51 COMPILER V7.09   RCV_PROCESS                                                           09/16/2008 09:24:35 PAGE 2   

  53          /*判断调度类型*/
  54          void judge(Int8 *ptr,Uchar command_type)
  55          {
  56   1          Uchar len;
  57   1          long msgNo;
  58   1          unsigned char tmp;
  59   1          
  60   1          len = *(ptr + 10);
  61   1          len = len - 20;
  62   1          msgNo = *((long*)(ptr+12));
  63   1          switch(command_type)
  64   1          {
  65   2              case 1:
  66   2                  message_write(1, (ptr+32), len, msgNo);               
  67   2                  break;
  68   2                  
  69   2              case 4: 
  70   2                      /*daily(ptr+33,len-1);*/
  71   2                      message_write(3, ptr+33, len-1, msgNo);
  72   2                      break;
  73   2                      
  74   2              case 7: 
  75   2                  /*alarm_judge((ptr+32),len-1);*/
  76   2                  message_write(2, (ptr+33), len-1, msgNo);
  77   2                  break;
  78   2                      
  79   2              case 2:
  80   2              case 3:
  81   2              case 5: 
  82   2              case 6: 
  83   2                  break;
  84   2                      
  85   2              case 8:
  86   2                  tmp = *(ptr + 32);
  87   2                  if(tmp== '1')
  88   2                  {
  89   3                      tmp = RUN_NORMAL;
  90   3                      set_work_state(&tmp);
  91   3                  }
  92   2                  else if( tmp == '3' )
  93   2                  {
  94   3                      tmp = RUN_NOTASK;
  95   3                      set_work_state(&tmp);
  96   3                  }
  97   2      
  98   2                  if ((tmp >= '1') && (tmp <= '4'))
  99   2                  {
 100   3                      if (1 == is_saveswitchmode())
 101   3                         set_loginmsg_response(len, ptr+32, *(Word*)(ptr+6)); 
 102   3                  }
 103   2                  else
 104   2                      set_loginmsg_response(len, ptr+32, *(Word*)(ptr+6));
 105   2                  break;
 106   2                  
 107   2              case 9:
 108   2                  tmp = *(ptr + 32);
 109   2                  if(tmp== '1')
 110   2                      tmp = RUN_NORMAL;
 111   2                  if( tmp=='2')
 112   2                      tmp = RUN_NOTASK;
 113   2                  
 114   2                  set_work_state(&tmp);
C51 COMPILER V7.09   RCV_PROCESS                                                           09/16/2008 09:24:35 PAGE 3   

 115   2                  break;
 116   2                  
 117   2              default:
 118   2                  break; 
 119   2          }
 120   1          return;
 121   1      }
 122          
 123          /*应答消息处理*/
 124          void res_process(Int8 *ptr)
 125          {
 126   1          Uchar rtype;
 127   1          Uchar num[4];
 128   1          PROTOCOL_SEND_BUFFER * message_info;
 129   1          message_info = &sbuf;
 130   1          memcpy(num, (ptr+12),4);
 131   1          if (ptr[6] == 0x0c)
 132   1          {
 133   2              photo_setPacketState(ptr[18]-1);
 134   2          }
 135   1          else if(((rtype=*(ptr+7)) == (sbuf.buf[0][7]+0x40)) && (compare(num,&(sbuf.buf[0][12]),4) == 0))/*找出
             -对应的请求消息*/
 136   1          {
 137   2              Byte msgLen, tmpLen, tmpValue;
 138   2              tmpValue = ptr[23];
 139   2              sbuf.valid[0] = 0;
 140   2              if (ptr[6] == 0x03)
 141   2              {
 142   3                  if (tmpValue == 0xdd)
 143   3                  {
 144   4                      set_systemlandflag(); 
 145   4                           
 146   4                      msgLen = ptr[10];
 147   4                      if (msgLen >= 30)
 148   4                      {
 149   5                          msgLen -= 12;
 150   5                          tmpLen = 0;
 151   5                          while (tmpLen <= (msgLen-18))
 152   5                          {
 153   6                              add_alarmOneZone(ptr+12+12+tmpLen);
 154   6                              tmpLen += 18;
 155   6                          }
 156   5                      }
 157   4                  }
 158   3              }
 159   2          }   
 160   1      }
 161          
 162          /*收到的请求消息处理*/
 163          /*********************************************
 164          *陈剑修改:添加远程程序更新处理;时间06-12-16
 165          *********************************************/
 166          void command_process(Int8 *ptr)
 167          {
 168   1          Uchar command_type;
 169   1          unsigned int auto_time;    
 170   1          Uchar sync[4]="NJPT";
 171   1          Uchar rtype[2];
 172   1          Uchar update_type;
 173   1          Uchar re_value;
 174   1          Uchar send_block[2];
 175   1          Uchar mess_num[4];
C51 COMPILER V7.09   RCV_PROCESS                                                           09/16/2008 09:24:35 PAGE 4   

 176   1          
 177   1          rtype[0] = *(ptr+7) + 0x40;
 178   1          rtype[1] = *(ptr+6);
 179   1          memcpy(mess_num,ptr+12,4);
 180   1          switch(rtype[1])/*选择对应的应答消息打包*/
 181   1          {
 182   2              case 1: res_direct_message(mess_num);
 183   2                      command_type = *(ptr+31);
 184   2                      judge(ptr,command_type);/*判断调度类型*/
 185   2                      break;
 186   2              case 2: res_seeconfiguer_message(mess_num);
 187   2                      
 188   2                      auto_time = ptr[34] * 256 + ptr[33];
 189   2                      set_keyArea_value(auto_time, ptr[32], ptr[35], ptr[36]);
 190   2                   /*   set_auto_time( &auto_time );
 191   2                      set_online_time( ptr+32 );
 192   2                      set_arrive_meter( ptr+35 );
 193   2                      set_left_meter( ptr+36 );*/
 194   2                      break;
 195   2              case 3: res_seeposition_message(mess_num);
 196   2                      break;
 197   2              case 4: res_seeterminal_message(mess_num);
 198   2                      break;
 199   2              case 5: update_type = *(ptr + 16);
 200   2                      memcpy(send_block,ptr+31,2);  
 201   2                      if(*(ptr+30) == 0x01)
 202   2                      {
 203   3                                  res_update_message( mess_num, send_block, update_type, re_value = 0x06);
 204   3                              //    update_firmware(update_type, up_flag = 5, ptr);
 205   3                      }
 206   2                      else if(*(ptr+30) == 0x04)
 207   2                      {
 208   3                                  res_update_message( mess_num, send_block, update_type, re_value = 0x06);
 209   3                             //     update_firmware(update_type, up_flag = 4, ptr);
 210   3                      }
 211   2                      else
 212   2                      {
 213   3                                  res_update_message( mess_num, send_block, update_type, re_value = 0x15);
 214   3                      }
 215   2                      break;
 216   2              case 6: res_seeconfugure_message(mess_num);
 217   2                  break;
 218   2      
 219   2              /*******add by cj******/
 220   2              case 7:
 221   2                  res_update_program(ptr);
 222   2                  break;
 223   2              /******end of add*****/
 224   2              case 0x0A: /*requir telephone list*/
 225   2                  res_requir_telephone_list_message(mess_num);
 226   2                  break;
 227   2      
 228   2              case 0x0B:  /*configure telephone list*/
 229   2                  res_configure_telephone_list_message(mess_num);
 230   2                  set_telephone_list(ptr+32);
 231   2                  break;
 232   2              case 0x0e: /*photo request*/
 233   2                  photostart_photo(mess_num);
 234   2                  res_photo_message(mess_num);
 235   2                  break;
 236   2              case 0x0f:/*photo stop*/
 237   2                  res_photostop_message(mess_num);
C51 COMPILER V7.09   RCV_PROCESS                                                           09/16/2008 09:24:35 PAGE 5   

 238   2                  photo_stopphoto();
 239   2                  break;
 240   2              default:return;
 241   2          }
 242   1          return;
 243   1      }
 244          
 245          
 246          /*接收处理*/
 247          void serverRcv_process(void)
 248          {
 249   1          char * ptr;
 250   1          Uchar rtype[2]; 
 251   1          if(verify_process()==0)
 252   1          {
 253   2              udp_start_receive();
 254   2          }
 255   1          else
 256   1          {
 257   2              udp_receive(&ptr);
 258   2              memcpy(rtype, (ptr+7), 1);
 259   2              if(rtype[0]==0x60)
 260   2              {
 261   3                  res_process(ptr);
 262   3                  udp_start_receive(); 
 263   3              }
 264   2              else if(rtype[0]==0x08)
 265   2              {
 266   3                  command_process(ptr);
 267   3                  udp_start_receive();            
 268   3      
 269   3              }
 270   2              else
 271   2              {
 272   3                  udp_start_receive(); 
 273   3              }
 274   2          }
 275   1          return;
 276   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1619    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----      67
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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