您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

54 行
2.3 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;
  7. using System.Collections.Generic;
  8. using System.Text;
  9. using System.Text.Json;
  10. namespace JT808.Protocol.MessageBody
  11. {
  12. public class JT808_0x8700 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8700>, IJT808_2019_Version, IJT808Analyze
  13. {
  14. public override ushort MsgId => 0x8700;
  15. public override string Description => "行驶记录数据采集命令";
  16. /// <summary>
  17. ///
  18. /// </summary>
  19. public byte CommandId { get; set; }
  20. public JT808CarDVRDownPackage JT808CarDVRDownPackage { get; set; }
  21. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  22. {
  23. JT808_0x8700 value = new JT808_0x8700();
  24. writer.WriteStartObject("行驶记录数据采集命令");
  25. value.CommandId = reader.ReadByte();
  26. writer.WriteString($"[{value.CommandId.ReadNumber()}]命令字", ((JT808CarDVRCommandID)value.CommandId).ToString());
  27. writer.WriteStartObject(((JT808CarDVRCommandID)value.CommandId).ToString());
  28. config.IJT808_CarDVR_Down_Package.Analyze(ref reader, writer, config);
  29. writer.WriteEndObject();
  30. writer.WriteEndObject();
  31. }
  32. public JT808_0x8700 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  33. {
  34. JT808_0x8700 value = new JT808_0x8700();
  35. value.CommandId = reader.ReadByte();
  36. object obj = config.GetMessagePackFormatterByType(config.IJT808_CarDVR_Down_Package.GetType());
  37. value.JT808CarDVRDownPackage = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(obj, ref reader, config);
  38. return value;
  39. }
  40. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8700 value, IJT808Config config)
  41. {
  42. writer.WriteByte(value.CommandId);
  43. object obj = config.GetMessagePackFormatterByType(config.IJT808_CarDVR_Down_Package.GetType());
  44. JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, value.JT808CarDVRDownPackage, config);
  45. }
  46. }
  47. }