/// <summary> /// 检查 /// </summary> /// <param name="bean"></param> /// <returns></returns> public static ResultBean CheckEntity(TreeEntity bean) { ResultBean result = new ResultBean(); for (int i = 0; i < 4; i++) { if (bean.StartBit[i] != startBit[i]) { result.Code++; result.Msg += "起始位" + i + "不正确|"; } } ushort crc = CRCUtil.CalculateCrc(bean.Data, bean.Data.Length); //src[6] = (byte)(crc & 0xff); //src[7] = (byte) (crc >> 8); byte crcL = ((byte)(crc & 0xff)); byte crcH = ((byte)(crc >> 8)); if (bean.Crc[0] != crcL || bean.Crc[1] != crcH) { result.Code++; result.Msg += "接收的CRC为" + bean.Crc[0] + "" + bean.Crc[1] + "计算的CRC为" + crcL + "" + crcH + " 对比不正确|"; } result.Result = result.Code == 0; if (result.Result) { result.Msg = "正确"; } result.Obj = bean; bean.CheckCode = result.Code; bean.CheckMsg = result.Msg; return(result); }
/// <summary> /// 回复 /// </summary> /// <param name="bean"></param> /// <param name="order"></param> /// <returns></returns> public static byte[] Respond(TreeEntity bean, int order) { int length = 17; byte[] respond = new byte[length]; for (int i = 0; i < 4; i++)//起始位和结尾 { respond[i] = startBit[i]; if (i < 2) { respond[length - i - 1] = endBit[1 - i]; } } respond[4] = (byte)(order & 0xFF); respond[5] = (byte)(order >> 8 & 0xFF); //序列号 respond[6] = 0x09; //数据类型 respond[8] = 0x00; respond[7] = 0x04;//数据包长度 respond[9] = respond[4]; respond[10] = respond[5];//数据包,CJC =序列号 ushort crc = CRCUtil.CalculateCrc(Copy(respond, 9, 4), 4); //src[6] = (byte)(crc & 0xff); //src[7] = (byte) (crc >> 8); byte crcL = ((byte)(crc & 0xff)); byte crcH = ((byte)(crc >> 8)); respond[13] = crcL; respond[14] = crcH; //CRC return(respond); }