You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.8 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_0x04 : JT808CarDVRUpBodies, IJT808MessagePackFormatter<JT808_CarDVR_Up_0x04>, IJT808Analyze
  18. {
  19. /// <summary>
  20. /// 0x04
  21. /// </summary>
  22. public override byte CommandId => JT808CarDVRCommandID.采集记录仪脉冲系数.ToByteValue();
  23. /// <summary>
  24. /// 当前时间
  25. /// </summary>
  26. public DateTime RealTime { get; set; }
  27. /// <summary>
  28. /// 脉冲系数
  29. /// </summary>
  30. public ushort PulseCoefficient { get; set; }
  31. /// <summary>
  32. /// 实时时间及设定的脉冲系数
  33. /// </summary>
  34. public override string Description => "实时时间及设定的脉冲系数";
  35. /// <summary>
  36. ///
  37. /// </summary>
  38. /// <param name="reader"></param>
  39. /// <param name="writer"></param>
  40. /// <param name="config"></param>
  41. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  42. {
  43. JT808_CarDVR_Up_0x04 value = new JT808_CarDVR_Up_0x04();
  44. var hex = reader.ReadVirtualArray(6);
  45. value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
  46. writer.WriteString($"[{hex.ToArray().ToHexString()}]当前时间", value.RealTime);
  47. value.PulseCoefficient = reader.ReadUInt16();
  48. writer.WriteNumber($"[{value.PulseCoefficient.ReadNumber()}]脉冲系数",value.PulseCoefficient);
  49. }
  50. /// <summary>
  51. ///
  52. /// </summary>
  53. /// <param name="writer"></param>
  54. /// <param name="value"></param>
  55. /// <param name="config"></param>
  56. public void Serialize(ref JT808MessagePackWriter writer, JT808_CarDVR_Up_0x04 value, IJT808Config config)
  57. {
  58. writer.WriteDateTime_yyMMddHHmmss(value.RealTime);
  59. writer.WriteUInt16(value.PulseCoefficient);
  60. }
  61. /// <summary>
  62. ///
  63. /// </summary>
  64. /// <param name="reader"></param>
  65. /// <param name="config"></param>
  66. /// <returns></returns>
  67. public JT808_CarDVR_Up_0x04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  68. {
  69. JT808_CarDVR_Up_0x04 value = new JT808_CarDVR_Up_0x04();
  70. value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
  71. value.PulseCoefficient = reader.ReadUInt16();
  72. return value;
  73. }
  74. }
  75. }