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

📄 iccard.lst

📁 通过车载终端采集GPS数据
💻 LST
字号:
C51 COMPILER V7.09   ICCARD                                                                08/22/2008 14:26:52 PAGE 1   


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

line level    source

   1          #include "typedef.h"
   2          #include "iccard.h"
   3          ICCARD_STATUS_BUF gICcardStatus;
   4          /*****BCC校验***
   5          *返回值:BCC校验的值
   6          *pSrcBuf:需要加校验的报文
   7          *nSrcLen;pSrcBuf的长度
   8          ******************/
   9          /*Byte iccard_bcccode(Byte* pSrcBuf, Byte nSrcLen)
  10          {
  11              Byte nRet, i;
  12              nRet = pSrcBuf[0];
  13              for (i=1; i<nSrcLen; i++)
  14                  nRet ^= pSrcBuf[i];
  15              return nRet;
  16          }
  17          
  18          /****BCC校验检查**************
  19          *返回值:0表示校验未通过,否则校验通过
  20          *pSrcBuf:进行校验的报文,其中最后一个字节为BCC校验和
  21          *nSrcLen;pSrcBuf的长度
  22          ******************************/
  23          /*Byte iccard_bccdecode(Byte* pSrcBuf, Byte nSrcLen)
  24          {
  25              Byte nBcc, i;
  26              if (nSrcLen >1)
  27              {
  28                  nBcc = pSrcBuf[0];
  29                  for (i=1; i<(nSrcLen-1); i++)
  30                      nBcc ^= pSrcBuf[i];
  31                  if (nBcc == pSrcBuf[nSrcLen-1])
  32                      return nSrcLen;
  33                  else
  34                      return 0;
  35              }
  36              else
  37                  return 0;
  38          }
  39          
  40          /****解码函数***************
  41          *作用:还原出原始报文,主要是针对报文中DLE
  42          *返回值:0表示报文错误或者无有意义报文(BCC校验不正确),否则返回原始报文的长度
  43          *pSrcBuf:包括DLE的报文,该报文包括STX和ETX
  44          *pDestBuf:去除DLE的报文
  45          *nSrcLen;pSrcBuf的长度
  46          ****************************/
  47          /*Byte iccard_dlepack(Byte* pSrcBuf, Byte* pDestBuf, Byte nSrcLen)
  48          {
  49              Byte i, j, bFound;
  50              if ((ICCARD_STX == pSrcBuf[0]) && (ICCARD_ETX == pSrcBuf[nSrcLen-1]))
  51              {
  52                  if (nSrcLen > 3)
  53                  {
C51 COMPILER V7.09   ICCARD                                                                08/22/2008 14:26:52 PAGE 2   

  54                      i = 1;
  55                      j = 0;
  56                      bFound = 0;
  57                      while (i < (nSrcLen-1))
  58                      {
  59                          if (1 == bFound)
  60                          {
  61                              bFound = 0;
  62                              pDestBuf[j] = pSrcBuf[i];
  63                              i++;
  64                              j++;
  65                          }
  66                          else
  67                          {
  68                              if (ICCARD_DLE == pSrcBuf[i])
  69                              {
  70                                  bFound = 1;
  71                                  i++;
  72                              }
  73                              else
  74                              {
  75                                  pDestBuf[j] = pSrcBuf[i];
  76                                  i++;
  77                                  j++;
  78                              }
  79                          }
  80                          return iccard_bccdecode(pDestBuf, j);                    
  81                      }
  82                  }
  83                  return 0;
  84              }
  85              else if (2 == nSrcLen)
  86                  return nSrcLen;
  87              else
  88                  return 0;
  89          }
  90          
  91          char gICcardSendBuf[256];//发送缓存
  92          //发送通信ACK
  93          void iccard_communicationACK(Byte nValue)
  94          {
  95              gICcardSendBuf[0] = 0x06;
  96              gICcardSendBuf[1] = nValue;
  97              sio_send(gICcardSendBuf, 2);
  98          }
  99          
 100          #define ICCARD_STATUSRELAY_TIMEOUT 1
 101          //约定50ms执行一次
 102          void iccard_process()
 103          {
 104              Byte nRecLen, nRecTrueLen;
 105              Byte* ptr;
 106              Byte recBuf[255];
 107              nRecLen = ;
 108              nRecTrueLen = iccard_dlepack(ptr. recBuf, nRecLen);
 109              switch (gICcardStatus.curstatus)
 110              {
 111              case ICCARD_STATUS_IDLE:
 112                  if (nRecTrueLen > 2)
 113                  {
 114                      iccard_communicationACK(recBuf[1]);
 115                      if (recBuf[1] < 0x80)
C51 COMPILER V7.09   ICCARD                                                                08/22/2008 14:26:52 PAGE 3   

 116                      {
 117                          //命令报
 118                          gICcardStatus.curCommand = recBuf[2];
 119                          gICcardStatus.curstatus = ICCARD_STATUS_RELAY;
 120                          //对刷卡数据即克上传
 121                          if (ICCARD_CMD_CHECKWORK == recBuf[2])
 122                          {
 123                              if (22 == nRecTrueLen)
 124                              {
 125                                  set_driver_id(recBuf+3);    
 126                                  make_assess_message(recBuf[22]+1);
 127                                  gICcardStatus.curstatus = ICCARD_STATUS_WAIT_WORKRESPONSE;
 128                                  gICcardStatus.curTimeout = ;
 129                              }
 130                              
 131                          }
 132                          else if (ICCARD_CMD_CARDDATA == recBuf[2])
 133                          {
 134                          }
 135                      }
 136                  }
 137                  break;
 138              case ICCARD_STATUS_WAITACK:
 139                  break;
 140              case ICCARD_STATUS_WAITRESP:
 141                  break;
 142              case ICCARD_STATUS_RELAY:
 143                  //针对不同的命令采用不同的方式回送应答
 144                  //对于上下班以及刷卡数据,只有在收到中心应答以后才回送数据报
 145                  //对于对时请求,即可发送
 146                  if ()
 147                  {
 148                  }
 149                  break;
 150              case ICCARD_STATUS_WAITACK2:
 151                  break;
 152              case ICCARD_STATUS_WAIT_WORKRESPONSE:
 153                  gICcardStatus.curTimeout--;
 154                  if (0 == gICcardStatus.curTimeout)
 155                      gICcardStatus.curstatus = ICCARD_STATUS_IDLE;
 156                  break;
 157              }
 158          }*/
 159          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   ----    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      3    ----
   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 + -