//输入为初始的9个字节的头加上指定的一串byte,输出为9个字节的头加上输入的byte数组 public static byte[] createBytes(byte[] header, byte[] data) { byte[] setOut = new byte[data.Length + 9]; Array.Copy(data, 0, setOut, 9, data.Length); setOut[0] = 0XAA; setOut[1] = 0X1D; setOut[2] = header[2]; setOut[3] = header[3]; setOut[4] = 0X03; setOut[5] = 0X00; setOut[6] = System.BitConverter.GetBytes(data.Length)[0]; setOut[7] = 0X00; setOut[8] = 0X00; String crcIn = ""; for (int i = 0; i < setOut.Length; i++) { crcIn += setOut[i].ToString("X2"); } ushort crcOut = CodeUtils.QuickCRC16(crcIn, 0, crcIn.Length); byte[] crcOutByte = BitConverter.GetBytes(crcOut); setOut[7] = crcOutByte[1]; setOut[8] = crcOutByte[0]; return(setOut); }
//末尾增加CRC校验 CRC校验不包含帧尾 public static byte[] yl_addCrc(Byte[] src) { byte[] result = new byte[src.Length];//初始化数组 //进行效验的应该是长度减3 Array.Copy(src, 0, result, 0, src.Length); String crcIn = ""; for (int i = 0; i < src.Length - 3; i++) { crcIn += src[i].ToString("X2"); } ushort crcOut = CodeUtils.QuickCRC16(crcIn, 0, crcIn.Length); byte[] crcOutByte = BitConverter.GetBytes(crcOut); result[13] = crcOutByte[1]; result[14] = crcOutByte[0]; return(result); }