using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Xylem.Common.Hardware.WaterMeter; using Xylem.Common.Hardware.WaterMeter.Genesis; namespace Ui.TestConsole { class Program { static void Main(string[] args) { //var firstLevelByteTx = new byte[] { // 0x5B, // 0x0C, // 0x00, // 0x0A, // 0x00, // 0xFA, // 0x1C, // 0x00, // 0x00, // 0x32, // 0x30, // 0x34, // 0x37, // // 5B 0C00 0A00 FA1C 0000 3230 3437 //}; Byte[] GenesisDevicePcbID = { 0x5b,0x0c,0x00,0x09,0x00 ,0x00,0x00 // ,0x6e,0x35 // obs //,0xab,0xdd //rfid ,0x0c,0x04,0x00, 0x00, 0x00, 0x00 }; var firstLevelByteTx = GenesisDevicePcbID; var HeaderLength = 4; var StartByteLength = 1; //var RegisterLength = 2; var CrcLenght = 0; //remove StartByte CRC placeholder from CRC calculation var crcData = new byte[(firstLevelByteTx.Length - (StartByteLength + CrcLenght))]; // Buffer.BlockCopy(firstLevelByteTx, StartByteLength, crcData, 0, HeaderLength); var crcCopyCounter = 0; for (; crcCopyCounter < HeaderLength; crcCopyCounter++) { crcData[crcCopyCounter] = firstLevelByteTx[crcCopyCounter + StartByteLength]; } for (; crcCopyCounter < crcData.Length; crcCopyCounter++) { crcData[crcCopyCounter] = firstLevelByteTx[crcCopyCounter + StartByteLength + CrcLenght]; } var calculatedCrc = Xylem.Common.Utils.Crc16Ccitt.CalculateMsb1021(crcData); } } }