using Parser.BinaryParser; using Parser.BinaryParser.MessageEntity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HengShan_Pump_NonIC { public class Parser : ParserBase { public Parser() : base(new MessageTemplateLookup()) { } public override byte[] Serialize(MessageTemplateBase message) { var bytesWithXRL = base.Serialize(message).ToList(); if (message.GetType().GetProperty("XRL") != null) { ProcessXRLInMsgBody(ref bytesWithXRL); } return bytesWithXRL.ToArray(); } private void ProcessXRLInMsgBody(ref List bytesWithXRL) { var bytesUsedToComputeXRL = bytesWithXRL.GetRange(2, bytesWithXRL.Count - 3).ToArray(); byte XRL = 0; foreach (var b in bytesUsedToComputeXRL) { XRL = (byte)(XRL ^ b); } if (XRL == 0xFF) XRL = 0xEE; bytesWithXRL[bytesWithXRL.Count - 1] = XRL; } } }