public uint GetCRC(Byte[] crc_array)
{
uint i, j;
uint modbus_crc;
modbus_crc = 0xffff;
for (i = 0; i < crc_array.Length - 2; i++)
{
modbus_crc = (modbus_crc & 0xFF00) | ((modbus_crc & 0x00FF) ^ crc_array[i]);
for (j = 1; j <= 8; j++)
{
if ((modbus_crc & 0x01) == 1)
{
modbus_crc = (modbus_crc >> 1);
modbus_crc ^= 0XA001;
}
else
{
modbus_crc = (modbus_crc >> 1);
}
}
}
return modbus_crc;
}
本文介绍了一个用于计算Modbus CRC16校验值的C#方法。该方法接收一个字节数组作为输入,并返回计算得到的CRC16值。通过逐字节更新CRC寄存器并应用多项式0xA001来实现CRC计算。
883

被折叠的 条评论
为什么被折叠?



