AckMessageIn.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Edge.Core.Parser.BinaryParser.Attributes;
  2. using System.Collections.Generic;
  3. namespace PetroChinaOnlineWatchPlugin.MessageEntity.Incoming
  4. {
  5. public class IfsfMessageAckIn
  6. {
  7. [Format(1, EncodingType.BIN, -9890)]
  8. public byte DataIdentifier { get; set; }
  9. [Format(1, EncodingType.BIN, -9880)]
  10. [Range(0, 7, "Data ack must range in 0 to 7")]
  11. public byte DataAck { get; set; }
  12. public override string ToString()
  13. {
  14. return $"{DataIdentifier} {DataAck}";
  15. }
  16. }
  17. public class AckMessageMessageIn : MessageBase
  18. {
  19. [Format(2, EncodingType.BIN, -9930)]
  20. public int MessageLength { get; set; }
  21. [Format(1, EncodingType.BIN, -9920)]
  22. public int DatabaseAddressLength { get; set; }
  23. [EnumerableFormat("DatabaseAddressLength", -9910)]
  24. public List<byte> DatabaseAddress { get; set; }
  25. [Format(1, EncodingType.BIN, -9900)]
  26. [Range(0, 9, "Message ack must range in 0 to 9")]
  27. public byte MessageAck { get; set; }
  28. public int AckListLength { get { return MessageLength - 1 - DatabaseAddress.Count - 1; } }
  29. [EnumerableFormat("AckListLength", -9890)]
  30. public List<IfsfMessageAckIn> AckList { get; set; }
  31. public override string ToString()
  32. {
  33. string dbAddress = string.Empty;
  34. foreach (byte ad in DatabaseAddress)
  35. { dbAddress += " " + ad.ToString(); }
  36. string akList = string.Empty;
  37. foreach (var ak in AckList)
  38. { akList += " " + ak.ToString(); }
  39. return $"{MessageLength} {DatabaseAddressLength} {dbAddress} {MessageAck} {akList}";
  40. }
  41. }
  42. }