Parser.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Edge.Core.Parser.BinaryParser;
  2. using Edge.Core.Parser.BinaryParser.MessageEntity;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace FR_Pump_HaoSheng
  9. {
  10. public class Parser : ParserBase
  11. {
  12. public Parser() : base(new MessageTemplateLookup())
  13. {
  14. }
  15. public override byte[] Serialize(MessageTemplateBase message)
  16. {
  17. //F5 01 An dd dd ... dd dd CmdByte XRL
  18. var bytes = base.Serialize(message).ToList();
  19. // fill length
  20. bytes.RemoveAt(2);
  21. bytes.Insert(2, (byte)(0xA0 + bytes.Count - 3 + 1));
  22. // get special XRL
  23. var xrl = GetXRL(bytes.Take(bytes.Count - 1).ToList());
  24. return bytes.Take(bytes.Count - 1).Concat(new byte[] { xrl }).ToArray();
  25. }
  26. //public override MessageTemplateBase Deserialize(byte[] rawData)
  27. //{
  28. // if (rawData.Length > 4)
  29. // {
  30. // // exclude last 4 byte which are (2 bytes CRC + 1 byte EOT + 1byte 0xFA)
  31. // return base.Deserialize(rawData.Take(rawData.Length - 4).ToArray());
  32. // }
  33. // else
  34. // {
  35. // // exclude last 1 byte of 0xFA
  36. // return base.Deserialize(rawData.Take(rawData.Length - 1).ToArray());
  37. // }
  38. //}
  39. //private List<byte> ProcessXRLInMsgBody(List<byte> bytesWithoutXRL)
  40. //{
  41. // var bytesUsedToComputeXRL = bytesWithoutXRL.GetRange(2, bytesWithoutXRL.Count - 3).ToArray();
  42. // byte XRL = 0;
  43. // foreach (var b in bytesUsedToComputeXRL)
  44. // XRL = (byte)(XRL ^ b);
  45. // bytesWithoutXRL[bytesWithoutXRL.Count - 1] = XRL;
  46. // return bytesWithoutXRL;
  47. //}
  48. public static byte GetXRL(List<byte> bytes)
  49. {
  50. byte XRL = 0;
  51. foreach (var b in bytes)
  52. XRL = (byte)(XRL ^ b);
  53. var final = XRL & 0x7F;
  54. return (byte)final;
  55. }
  56. }
  57. }