using Edge.Core.Parser.BinaryParser; using Edge.Core.Parser.BinaryParser.MessageEntity; using Edge.Core.Parser.BinaryParser.Util; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Wayne_VaporRecoveryDataCollectorBoard { public class Parser : ParserBase { const byte MsgStart = 0x68; const byte MsgTail = 0x16; public Parser() : base(new MessageTemplateLookup()) { } public override byte[] Serialize(MessageTemplateBase message) { var pure = base.Serialize(message); pure = pure.Take(pure.Length - 1).ToArray(); var validationByte = pure.Sum(s => s).GetBinBytes(4).Last(); return (new byte[1] { MsgStart } .Concat(pure) .Concat(new byte[1] { validationByte }) .Concat(new byte[1] { MsgTail })).ToArray(); } public override MessageTemplateBase Deserialize(byte[] rawData) { //skip MsgStart and MsgTail var reorg = rawData.Skip(1).Take(rawData.Length - 2); return base.Deserialize(reorg.ToArray()); } } }