123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using Edge.Core.Parser.BinaryParser;
- using Edge.Core.Parser.BinaryParser.MessageEntity;
- using Edge.Core.Parser.BinaryParser.Util;
- using ShengJu_CUT100_DES.MessageEntity;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ShengJu_CUT100_DES
- {
- public class Parser : ParserBase
- {
- public Parser() : base(new MessageTemplateLookup())
- {
- }
- public override byte[] Serialize(MessageTemplateBase message)
- {
- //add a temp value for make base.Serialize go through and then fill back the real length.
- ((MessageBase)message).Length = 4;
- var bytesWithoutCheck = base.Serialize(message);
- bytesWithoutCheck = new byte[] {
- // real length
- (byte)(bytesWithoutCheck.Length + 1) }
- .Concat(bytesWithoutCheck.Skip(1)).ToArray();
- return bytesWithoutCheck.Concat(new byte[] { CacualteCHECK(bytesWithoutCheck) }).ToArray();
- }
- public static byte CacualteCHECK(byte[] rawMessageWithoutCHECK)
- {
- int sum = 0;
- for (int i = 0; i < rawMessageWithoutCHECK.Length; i++)
- {
- sum += rawMessageWithoutCHECK[i];
- }
- return (byte)~BitConverter.GetBytes(sum)[0];
- }
- }
- }
|