using System.Collections.Generic;
public static void Main()
List<byte> uartBytes = new List<byte>()
Console.WriteLine(CalculateChecksum(uartBytes, false).ToString());
public static byte CalculateChecksum(List<byte> data, bool isMaster)
for (int i = 0; i < data.Count; i++)
crc ^= (byte)(data[i] & 0xC0);
for (int i = 0; i < data.Count; i++)
crc ^= (byte)(data[i] & 0xC0);
byte bit1 = (byte)(crc & 1);
byte bit2 = (byte)((crc & 2) >> 1);
byte bit3 = (byte)((crc & 4) >> 2);
byte bit4 = (byte)((crc & 8) >> 3);
byte bit5 = (byte)((crc & 16) >> 4);
byte bit6 = (byte)((crc & 32) >> 5);
byte bit7 = (byte)((crc & 64) >> 6);
byte bit8 = (byte)((crc & 128) >> 7);
compressedCrc |= (byte)(bit1 ^ bit2);
compressedCrc |= (byte)((bit3 ^ bit4) << 1);
compressedCrc |= (byte)((bit5 ^ bit6) << 2);
compressedCrc |= (byte)((bit7 ^ bit8) << 3);
compressedCrc |= (byte)((bit1 ^ bit3 ^ bit5 ^ bit7) << 4);
compressedCrc |= (byte)((bit2 ^ bit4 ^ bit6 ^ bit8) << 5);