Пример #1
0
        //增加Crc16校验
        public string Full_Crc(string cmd)
        {
            Crc16  crc    = new Crc16();
            string result = "";

            byte[] bytes = Common.HexStringToByteArray(cmd);
            byte[] crc16 = crc.crc16_bytes(bytes, bytes.Count());
            string s     = Common.ByteArrayToHexString(crc16, 0, crc16.Count());

            result = cmd + s;
            result = result.ToUpper().Replace(" ", "");
            bytes  = Common.HexStringToByteArray(result);
            result = Common.ByteArrayToHexString(bytes, 0, bytes.Count());
            return(result);
        }
Пример #2
0
        public bool isOK     = false;   //是否解析成功

        public cGetData(byte[] data)
        {
            uint  tmpUINT = 0;
            Crc16 oCRC16  = new Crc16();

            byte[] crcHL = oCRC16.crc16_bytes(data, data.Length - 2);

            if (crcHL[0] == data[data.Length - 2] && crcHL[1] == data[data.Length - 1])
            {
                DeviceID  = data[8];
                DeviceID += (uint)(data[7] << 8);
                DeviceID += (uint)(data[6] << 16);
                DeviceID += (uint)(data[5] << 24);

                tmpUINT  = data[10];
                tmpUINT += (uint)(data[9] << 8);

                TempVal = ((float)tmpUINT) / 10;

                tmpUINT  = data[12];
                tmpUINT += (uint)(data[11] << 8);

                RHVal = ((float)tmpUINT) / 10;

                if (data[2] > 7)
                {
                    BATVal = data[14];
                }
                if (data[2] > 9)
                {
                    SIGVal = data[16];
                }

                isOK = true;
            }
            else
            {
                isOK = false;
            }
        }