如何使用Delphi编写Modbus RTU CRC16的校验码

2025-06-23 00:57:22
推荐回答(1个)
回答1:

****************************参考C语言-MDBUS CRC16****************************
//****************************************************************
//函 数 名: Crc16
//函数功能: CRC16 校验
//输入参数: *pDatas, ucLen
//输出参数: void
//返 回 值: void
//参考文档: void
//创 件 人:
//创建日期: 2013/10/09
//修改历史: 
//****************************************************************
UINT16 Crc16(UCHAR *pDatas, UCHAR ucLen)
{
 UINT16 ui16Crc = 0XFFFF;
 UCHAR i;
 
 while (ucLen--)
 {
  ui16Crc ^= *pDatas++;
  for (i = 0; i < 8; i++)
  {
   if (ui16Crc & 0x0001)
   {
    ui16Crc >>= 0x01;
    ui16Crc ^= 0xa001;              //多项式
   }   
   else
   {
    ui16Crc >>= 0x01;
   }
  }
 }
 return (ui16Crc);
}