Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

81 строка
3.0 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Extensions;
  3. using JT808.Protocol.Formatters;
  4. using JT808.Protocol.Interfaces;
  5. using JT808.Protocol.MessagePack;
  6. using System.Text.Json;
  7. namespace JT808.Protocol.MessageBody
  8. {
  9. /// <summary>
  10. /// 平台通用应答
  11. /// </summary>
  12. public class JT808_0x8001 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8001>, IJT808Analyze
  13. {
  14. /// <summary>
  15. /// 0x8001
  16. /// </summary>
  17. public override ushort MsgId { get; } = 0x8001;
  18. /// <summary>
  19. /// 平台通用应答
  20. /// </summary>
  21. public override string Description => "平台通用应答";
  22. /// <summary>
  23. /// 应答消息流水号
  24. /// </summary>
  25. public ushort MsgNum { get; set; }
  26. /// <summary>
  27. /// 应答消息Id
  28. /// <see cref="JT808.Protocol.Enums.JT808MsgId"/>
  29. /// </summary>
  30. public ushort AckMsgId { get; set; }
  31. /// <summary>
  32. /// 返回结果
  33. /// <see cref="JT808.Protocol.Enums.JT808PlatformResult"/>
  34. /// </summary>
  35. public JT808PlatformResult JT808PlatformResult { get; set; }
  36. /// <summary>
  37. ///
  38. /// </summary>
  39. /// <param name="reader"></param>
  40. /// <param name="writer"></param>
  41. /// <param name="config"></param>
  42. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  43. {
  44. JT808_0x8001 value = new JT808_0x8001();
  45. value.MsgNum = reader.ReadUInt16();
  46. writer.WriteNumber($"[{value.MsgNum.ReadNumber()}]应答消息流水号", value.MsgNum);
  47. value.AckMsgId = reader.ReadUInt16();
  48. writer.WriteNumber($"[{value.AckMsgId.ReadNumber()}]应答消息Id", value.AckMsgId);
  49. value.JT808PlatformResult = (JT808PlatformResult)reader.ReadByte();
  50. writer.WriteNumber($"[{((byte)value.JT808PlatformResult).ReadNumber()}]结果-{value.JT808PlatformResult.ToString()}", (byte)value.JT808PlatformResult);
  51. }
  52. /// <summary>
  53. ///
  54. /// </summary>
  55. /// <param name="reader"></param>
  56. /// <param name="config"></param>
  57. /// <returns></returns>
  58. public JT808_0x8001 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  59. {
  60. JT808_0x8001 value = new JT808_0x8001();
  61. value.MsgNum = reader.ReadUInt16();
  62. value.AckMsgId = reader.ReadUInt16();
  63. value.JT808PlatformResult = (JT808PlatformResult)reader.ReadByte();
  64. return value;
  65. }
  66. /// <summary>
  67. ///
  68. /// </summary>
  69. /// <param name="writer"></param>
  70. /// <param name="value"></param>
  71. /// <param name="config"></param>
  72. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8001 value, IJT808Config config)
  73. {
  74. writer.WriteUInt16(value.MsgNum);
  75. writer.WriteUInt16(value.AckMsgId);
  76. writer.WriteByte((byte)value.JT808PlatformResult);
  77. }
  78. }
  79. }