1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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<byte> 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;
- }
- }
- }
|