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

📄 message.lst

📁 通过车载终端采集GPS数据
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE MESSAGE
OBJECT MODULE PLACED IN .\output\message.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main\message.c LARGE BROWSE INCDIR(audio\;eeprom\;extendUART\;flash\;gps\;i
                    -nter\;key\;mcu\;menu\;usb\;gprs\;main\;1wire\) DEBUG OBJECTEXTEND PRINT(.\output\message.lst) OBJECT(.\output\message.ob
                    -j)

line level    source

   1          /*****************************************************
   2          *调度消息读写文件
   3          ******************************************************/
   4          #include "global.h"
   5          #include "message.h"
   6          #include "24c512.h"
   7          #include "string.h"
   8          
   9          #include "struct_def.h"
  10          #include "rcv_process.h"
  11          #include "trans_process.h"
  12          #include "common_function.h"
  13          #include "centerinterface.h"
  14          #include "commoninterface.h"
  15          #include "menuProcess.h"
  16          #define MESSAGE_BASE_ADDRESS    0x400
  17          #define MESSAGE_MAX_LENGTH      256
  18          
  19          
  20          
  21          MESSAGEINFO messageInfo[3];
  22          char messageBuffer[MESSAGE_MAX_LENGTH];
  23          
  24          
  25          /*0x11:该消息未读;0x22:该消息已读;其他:消息无效*/
  26          void record_init(char block)
  27          {
  28   1          unsigned char i;
  29   1          unsigned int address;
  30   1          unsigned char value[3];
  31   1          MESSAGEINFO *msgPtr;
  32   1      
  33   1          if( block==1)
  34   1          {
  35   2              msgPtr = &messageInfo[0];
  36   2              msgPtr->baseAddress = MESSAGE_BASE_ADDRESS;
  37   2          }
  38   1          else if( block == 2 )
  39   1          {
  40   2              msgPtr = &messageInfo[1];
  41   2              msgPtr->baseAddress = MESSAGE_BASE_ADDRESS + 0x1400;
  42   2          }
  43   1          else if( block == 3 )
  44   1          {
  45   2              msgPtr = &messageInfo[2];
  46   2              msgPtr->baseAddress = MESSAGE_BASE_ADDRESS + 0x1400 * 2;
  47   2          }
  48   1          else
  49   1              return;
  50   1      
  51   1          /*告警记录初始化*/
  52   1          msgPtr->entrys = 0;
  53   1          msgPtr->id = 0;
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 2   

  54   1          msgPtr->noRead = 0;
  55   1          msgPtr->current = 0;
  56   1      
  57   1          for(i=0; i<MESSAGE_RECORD_MAX; i++)
  58   1          {
  59   2              address = i * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
  60   2              c512_config_read(address, value, 2);
  61   2              if( (value[1]==0x11) || (value[1]==0x22) )
  62   2              {
  63   3                  msgPtr->entrys ++;
  64   3      
  65   3                  if( i==0 )
  66   3                  {
  67   4                      msgPtr->id = value[0];
  68   4                  }
  69   3                  else 
  70   3                  {
  71   4                      if( msgPtr->id != value[0] )
  72   4                      {
  73   5                          msgPtr->current = i;
  74   5                          msgPtr->entrys = MESSAGE_RECORD_MAX;
  75   5                          break;
  76   5                      }
  77   4                  }
  78   3      
  79   3                  msgPtr->current ++;
  80   3                  msgPtr->id ++;
  81   3              }
  82   2              else
  83   2              {
  84   3                  msgPtr->current = i;
  85   3                  break;
  86   3              }
  87   2          }
  88   1      
  89   1          for(i=0; i<MESSAGE_RECORD_MAX; i++)
  90   1          {
  91   2              address = i * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
  92   2              c512_config_read(address, value, 2);
  93   2              if( value[1]==0x11 )
  94   2                  msgPtr->noRead ++;
  95   2          }
  96   1      
  97   1          msgPtr->current = msgPtr->current % MESSAGE_RECORD_MAX;
  98   1          
  99   1      }
 100          
 101          
 102          /*index 1-20*/
 103          void message_read(char block, unsigned char index, MESSAGE *ptr)
 104          {
 105   1          unsigned int address;
 106   1          unsigned char tmp;
 107   1          MESSAGEINFO *msgPtr;
 108   1      
 109   1          if( block==1)
 110   1          {
 111   2              msgPtr = &messageInfo[0];
 112   2          }
 113   1          else if( block == 2 )
 114   1          {
 115   2              msgPtr = &messageInfo[1];
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 3   

 116   2          }
 117   1          else if( block == 3 )
 118   1          {
 119   2              msgPtr = &messageInfo[2];
 120   2          }
 121   1          else
 122   1              return;
 123   1      
 124   1      
 125   1          tmp = index;
 126   1          if( (tmp > MESSAGE_RECORD_MAX) || (tmp == 0)  )
 127   1          {
 128   2              ptr->state = 0;                  /*index值超过最大记录数*/
 129   2              return;
 130   2          }
 131   1      
 132   1          if( index > msgPtr->current )
 133   1          {
 134   2              tmp = MESSAGE_RECORD_MAX + msgPtr->current - index;
 135   2          }
 136   1          else
 137   1          {
 138   2              tmp = msgPtr->current - index;
 139   2          }
 140   1      
 141   1          address = 1+ tmp * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
 142   1          c512_config_read(address, (char *)ptr, sizeof(MESSAGE) );
 143   1      
 144   1          tmp = ptr->state;
 145   1          if( tmp == 0x11 )
 146   1          {
 147   2              ptr->state = 0x1;
 148   2              if( (block==2) || (block == 3) )
 149   2              {
 150   3                  make_ack_message( ((char*)ptr)+21 );
 151   3                  set_message_readFlag(block, index);
 152   3              }
 153   2          }
 154   1          else if( tmp == 0x22 )
 155   1          {
 156   2              ptr->state = 2;
 157   2          }
 158   1          else
 159   1          {
 160   2              ptr->state = 0;
 161   2          }
 162   1      }
 163          
 164          void set_message_readFlag(char block, unsigned char index)
 165          {
 166   1          unsigned int address;
 167   1          unsigned char tmp;
 168   1          MESSAGEINFO *msgPtr;
 169   1          unsigned char readFlag;
 170   1      
 171   1          if( block==1)
 172   1          {
 173   2              msgPtr = &messageInfo[0];
 174   2          }
 175   1          else if( block == 2 )
 176   1          {
 177   2              msgPtr = &messageInfo[1];
C51 COMPILER V7.09   MESSAGE                                                               09/16/2008 14:31:34 PAGE 4   

 178   2          }
 179   1          else if( block == 3 )
 180   1          {
 181   2              msgPtr = &messageInfo[2];
 182   2          }
 183   1          else
 184   1              return;
 185   1      
 186   1          if( (index > MESSAGE_RECORD_MAX) || (index == 0)  )
 187   1          {
 188   2              return;
 189   2          }
 190   1      
 191   1          if( index > msgPtr->current )
 192   1          {
 193   2              tmp = MESSAGE_RECORD_MAX + msgPtr->current - index;
 194   2          }
 195   1          else
 196   1          {
 197   2              tmp = msgPtr->current - index;
 198   2          }
 199   1      
 200   1          address = 1+ tmp * MESSAGE_MAX_LENGTH + msgPtr->baseAddress;
 201   1          c512_config_read(address, &readFlag, 1 );
 202   1      
 203   1          if( readFlag == 0x11 )
 204   1          {
 205   2              readFlag = 0x22;
 206   2              c512_config_write(address, &readFlag, 1 );
 207   2      
 208   2              if( msgPtr->noRead )
 209   2                  msgPtr->noRead --;
 210   2          }
 211   1      
 212   1      }
 213          
 214          void message_convert(char *okPtr, char *inPtr)
 215          {
 216   1          unsigned char *srcPtr, *destPtr;
 217   1          unsigned char isChinese;
 218   1      
 219   1          srcPtr = inPtr;
 220   1          destPtr = okPtr;
 221   1          
 222   1          while( *srcPtr )
 223   1          {
 224   2              if( *srcPtr >= 0x80 )
 225   2                  isChinese = 1;
 226   2              else 
 227   2                  isChinese = 0;
 228   2      
 229   2              *destPtr++ = *srcPtr++;
 230   2              
 231   2              if( *srcPtr>=0x80)
 232   2              {
 233   3                  if( isChinese )
 234   3                      *destPtr++ = *srcPtr++;
 235   3                  else

⌨️ 快捷键说明

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