zoukankan      html  css  js  c++  java
  • MODBUS CRC16

     1 //////////////////////////////////////////////////////////////////////////
     2 // CRC MODBUS 效验
     3 // 输入参数: pDataIn: 数据地址
     4 //           iLenIn: 数据长度           
     5 // 输出参数: pCRCOut: 2字节校验值 
     6 void CCRCDlg::CheckCRCModBus(const CHAR* pDataIn, int iLenIn, WORD* pCRCOut)
     7 {
     8     WORD wHi = 0;
     9     WORD wLo = 0;
    10     WORD wCRC;
    11     wCRC = 0xFFFF;
    12 
    13     for (int i = 0; i < iLenIn; i++)
    14     {
    15         wCRC = CalcCRCModBus(*pDataIn, wCRC);
    16         pDataIn++;
    17     }
    18 
    19     wHi = wCRC / 256;
    20     wLo = wCRC % 256;    
    21     wCRC = (wHi << 8) | wLo;
    22 
    23     *pCRCOut = wCRC;
    24 }
    25 
    26 WORD CCRCDlg::CalcCRCModBus(CHAR cDataIn, WORD wCRCIn)
    27 {
    28     WORD wCheck = 0;
    29     wCRCIn = wCRCIn ^ cDataIn;
    30 
    31     for(int i = 0; i < 8; i++)
    32     {
    33         wCheck = wCRCIn & 1;
    34         wCRCIn = wCRCIn >> 1;
    35         wCRCIn = wCRCIn & 0x7fff;
    36 
    37         if(wCheck == 1)
    38         {
    39             wCRCIn = wCRCIn ^ 0xa001;
    40         }
    41         wCRCIn = wCRCIn & 0xffff;
    42     }
    43 
    44     return wCRCIn;
    45 }

    转自http://blog.csdn.net/lluct/article/details/2617967

  • 相关阅读:
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    lambda表达式
    VIM--保存和退出等命令
  • 原文地址:https://www.cnblogs.com/hujianhua/p/2549383.html
Copyright © 2011-2022 走看看