選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

63 行
2.2 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.Buffers.Binary;
  8. using System.Collections.Generic;
  9. using System.Text;
  10. using System.Text.Json;
  11. namespace JT808.Protocol.MessageBody.CarDVR
  12. {
  13. /// <summary>
  14. /// 采集累计行驶里程
  15. /// 返回:实时时间、安装时的初始里程及安装后的累计行驶里程
  16. /// </summary>
  17. public class JT808_CarDVR_Up_0x03 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x03>, IJT808Analyze
  18. {
  19. public override byte CommandId => JT808CarDVRCommandID.采集累计行驶里程.ToByteValue();
  20. /// <summary>
  21. /// 实时时间
  22. /// </summary>
  23. public DateTime RealTime { get; set; }
  24. /// <summary>
  25. /// 初次安装时间
  26. /// </summary>
  27. public DateTime FirstInstallTime { get; set; }
  28. /// <summary>
  29. /// 初始里程
  30. /// </summary>
  31. public string FirstMileage { get; set; }
  32. /// <summary>
  33. /// 累计里程
  34. /// </summary>
  35. public string TotalMilage { get; set; }
  36. public override string Description => "实时时间、安装时的初始里程及安装后的累计行驶里程";
  37. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  38. {
  39. }
  40. public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x03 value, IJT808Config config)
  41. {
  42. writer.WriteDateTime6(value.RealTime);
  43. writer.WriteDateTime6(value.FirstInstallTime);
  44. writer.WriteBCD(value.FirstMileage, 8);
  45. writer.WriteBCD(value.TotalMilage, 8);
  46. }
  47. public JT808_CarDVR_Up_0x03 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  48. {
  49. JT808_CarDVR_Up_0x03 value = new JT808_CarDVR_Up_0x03();
  50. value.RealTime = reader.ReadDateTime6();
  51. value.FirstInstallTime = reader.ReadDateTime6();
  52. value.FirstMileage = reader.ReadBCD(8);
  53. value.TotalMilage = reader.ReadBCD(8);
  54. return value;
  55. }
  56. }
  57. }