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;
}