Вот на C# код для расчета CRC Modbus, видно что хоть и на C или на чем там у вас, отличается
Код:public static ushort CRC16_Modbus(byte[] msg) { const ushort polinom = 0xa001; ushort code = 0xffff; for (int i = 0, size = msg.Length; i < size; ++i) { code ^= (ushort)(msg[i] << 8); for (uint j = 0; j < 8; ++j) { code >>= 1; if ((code & 0x01) != 0) code ^= polinom; } } return code; }