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.

83 lines
3.6 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.Text.Json;
  8. namespace JT808.Protocol.MessageBody
  9. {
  10. /// <summary>
  11. /// 存储多媒体数据检索
  12. /// 0x8802
  13. /// </summary>
  14. public class JT808_0x8802 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8802>, IJT808Analyze
  15. {
  16. public override ushort MsgId { get; } = 0x8802;
  17. public override string Description => "存储多媒体数据检索";
  18. /// <summary>
  19. /// 多媒体类型
  20. /// <see cref="JT808.Protocol.Enums.JT808MultimediaType"/>
  21. /// </summary>
  22. public byte MultimediaType { get; set; }
  23. /// <summary>
  24. /// 通道 ID
  25. /// </summary>
  26. public byte ChannelId { get; set; }
  27. /// <summary>
  28. /// 事件项编码
  29. /// <see cref="JT808.Protocol.Enums.JT808EventItemCoding"/>
  30. /// 0:平台下发指令;1:定时动作;2:抢劫报警触发;3:碰撞侧翻报警触发;其他保留
  31. /// </summary>
  32. public byte EventItemCoding { get; set; }
  33. /// <summary>
  34. /// 起始时间
  35. /// YY-MM-DD-hh-mm-ss
  36. /// </summary>
  37. public DateTime StartTime { get; set; }
  38. /// <summary>
  39. /// 结束时间
  40. /// YY-MM-DD-hh-mm-ss
  41. /// </summary>
  42. public DateTime EndTime { get; set; }
  43. public JT808_0x8802 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  44. {
  45. JT808_0x8802 jT808_0X8802 = new JT808_0x8802();
  46. jT808_0X8802.MultimediaType = reader.ReadByte();
  47. jT808_0X8802.ChannelId = reader.ReadByte();
  48. jT808_0X8802.EventItemCoding = reader.ReadByte();
  49. jT808_0X8802.StartTime = reader.ReadDateTime6();
  50. jT808_0X8802.EndTime = reader.ReadDateTime6();
  51. return jT808_0X8802;
  52. }
  53. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8802 value, IJT808Config config)
  54. {
  55. writer.WriteByte(value.MultimediaType);
  56. writer.WriteByte(value.ChannelId);
  57. writer.WriteByte(value.EventItemCoding);
  58. writer.WriteDateTime6(value.StartTime);
  59. writer.WriteDateTime6(value.EndTime);
  60. }
  61. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  62. {
  63. JT808_0x8802 value = new JT808_0x8802();
  64. value.MultimediaType = reader.ReadByte();
  65. value.ChannelId = reader.ReadByte();
  66. value.EventItemCoding = reader.ReadByte();
  67. value.StartTime = reader.ReadDateTime6();
  68. value.EndTime = reader.ReadDateTime6();
  69. JT808MultimediaType multimediaType = (JT808MultimediaType)value.MultimediaType;
  70. JT808EventItemCoding eventItemCoding = (JT808EventItemCoding)value.EventItemCoding;
  71. writer.WriteNumber($"[{ value.MultimediaType.ReadNumber()}]多媒体类型-{multimediaType.ToString()}", value.MultimediaType);
  72. writer.WriteNumber($"[{ value.ChannelId.ReadNumber()}]通道ID", value.ChannelId);
  73. writer.WriteNumber($"[{ value.EventItemCoding.ReadNumber()}]事件项编码-{eventItemCoding.ToString()}", value.EventItemCoding);
  74. writer.WriteString($"[{ value.StartTime.ToString("yyMMddHHmmss")}]起始时间", value.StartTime.ToString("yyyy-MM-dd HH:mm:ss"));
  75. writer.WriteString($"[{ value.EndTime.ToString("yyMMddHHmmss")}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
  76. }
  77. }
  78. }