Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

88 righe
3.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.Text.Json;
  7. namespace JT808.Protocol.MessageBody
  8. {
  9. /// <summary>
  10. /// 多媒体事件信息上传
  11. /// 0x0800
  12. /// </summary>
  13. public class JT808_0x0800 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0800>, IJT808Analyze
  14. {
  15. public override ushort MsgId { get; } = 0x0800;
  16. public override string Description => "多媒体事件信息上传";
  17. /// <summary>
  18. /// 多媒体数据 ID
  19. /// </summary>
  20. public uint MultimediaId { get; set; }
  21. /// <summary>
  22. /// 多媒体类型
  23. /// 0:图像;1:音频;2:视频;
  24. /// <see cref="JT808.Protocol.Enums.JT808MultimediaType"/>
  25. /// </summary>
  26. public byte MultimediaType { get; set; }
  27. /// <summary>
  28. /// 多媒体格式编码
  29. /// 0:JPEG;1:TIF;2:MP3;3:WAV;4:WMV;其他保留
  30. /// <see cref="JT808.Protocol.Enums.JT808MultimediaCodingFormat"/>
  31. /// </summary>
  32. public byte MultimediaCodingFormat { get; set; }
  33. /// <summary>
  34. /// 事件项编码
  35. /// 0:平台下发指令;
  36. /// 1:定时动作;
  37. /// 2:抢劫报警触发;
  38. /// 3:碰撞侧翻报警触发;
  39. /// 4:门开拍照;
  40. /// 5:门关拍照;
  41. /// 6:车门由开变关,时速从<20 公里到超过 20 公里;
  42. /// 7:定距拍照;
  43. /// 其他保留
  44. /// </summary>
  45. public byte EventItemCoding { get; set; }
  46. /// <summary>
  47. /// 通道 ID
  48. /// </summary>
  49. public byte ChannelId { get; set; }
  50. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  51. {
  52. JT808_0x0800 value = new JT808_0x0800();
  53. value.MultimediaId = reader.ReadUInt32();
  54. writer.WriteNumber($"[{value.MultimediaId.ReadNumber()}]多媒体ID", value.MultimediaId);
  55. value.MultimediaType = reader.ReadByte();
  56. writer.WriteNumber($"[{value.MultimediaType.ReadNumber()}]多媒体类型-{((JT808MultimediaType)value.MultimediaType).ToString()}", value.MultimediaType);
  57. value.MultimediaCodingFormat = reader.ReadByte();
  58. writer.WriteNumber($"[{value.MultimediaCodingFormat.ReadNumber()}]多媒体格式编码-{((JT808MultimediaCodingFormat)value.MultimediaCodingFormat).ToString()}", value.MultimediaCodingFormat);
  59. value.EventItemCoding = reader.ReadByte();
  60. writer.WriteNumber($"[{value.EventItemCoding.ReadNumber()}]事件项编码-{((JT808EventItemCoding)value.EventItemCoding).ToString()}", value.MultimediaCodingFormat);
  61. value.ChannelId = reader.ReadByte();
  62. writer.WriteNumber($"[{value.ChannelId.ReadNumber()}]通道ID", value.ChannelId);
  63. }
  64. public JT808_0x0800 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  65. {
  66. JT808_0x0800 value = new JT808_0x0800();
  67. value.MultimediaId = reader.ReadUInt32();
  68. value.MultimediaType = reader.ReadByte();
  69. value.MultimediaCodingFormat = reader.ReadByte();
  70. value.EventItemCoding = reader.ReadByte();
  71. value.ChannelId = reader.ReadByte();
  72. return value;
  73. }
  74. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0800 value, IJT808Config config)
  75. {
  76. writer.WriteUInt32(value.MultimediaId);
  77. writer.WriteByte(value.MultimediaType);
  78. writer.WriteByte(value.MultimediaCodingFormat);
  79. writer.WriteByte(value.EventItemCoding);
  80. writer.WriteByte(value.ChannelId);
  81. }
  82. }
  83. }