Exemplo n.º 1
0
        //输入为初始的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);
        }
Exemplo n.º 2
0
        //末尾增加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);
        }