namespace ErvProtocol { // CRC-16/MODBUS (poly 0xA001 reflected, init 0xFFFF) // PC_ERV_Protocol.md 1장 - CMD~PAYLOAD 구간, 결과 리틀엔디안 public static class Crc16 { public static ushort Modbus(byte[] data, int start, int length) { ushort crc = 0xFFFF; for (int i = 0; i < length; i++) { crc ^= data[start + i]; for (int b = 0; b < 8; b++) crc = (crc & 0x0001) != 0 ? (ushort)((crc >> 1) ^ 0xA001) : (ushort)(crc >> 1); } return crc; } } }