public static Byte[] UpdateCRCValue(Byte[] dados, Byte[] dadosTemp, int CRCPosition1, int CRCPosition2) { ushort crc = CRC16CCITT.Calcular(dadosTemp); Byte[] dadosCRC = BitConverter.GetBytes(crc); dados[CRCPosition1] = dadosCRC[0]; dados[CRCPosition2] = dadosCRC[1]; return(dados); }
// TODO: Verificar problemas nesse CRC public static ushort CalcularCRC(byte[] dados, int crcPosition) { Byte[] dadosCRC = new byte[dados.Length - sizeof(UInt16)]; Array.Copy(dados, 0, dadosCRC, 0, crcPosition); if (crcPosition + sizeof(UInt16) < dados.Length) { Array.Copy(dados, crcPosition + sizeof(UInt16), dadosCRC, crcPosition, dados.Length - (crcPosition + sizeof(UInt16))); } return(CRC16CCITT.Calcular(dadosCRC)); }