//增加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); }
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; } }