Преглед изворни кода

增加8800、8801、8802、8803、8804、8805、8900、8A00分析器

tags/v2.2.6
smallchi(Koike) пре 5 година
родитељ
комит
29402c14fa
8 измењених фајлова са 158 додато и 13 уклоњено
  1. +26
    -2
      src/JT808.Protocol/MessageBody/JT808_0x8800.cs
  2. +31
    -2
      src/JT808.Protocol/MessageBody/JT808_0x8801.cs
  3. +22
    -2
      src/JT808.Protocol/MessageBody/JT808_0x8802.cs
  4. +24
    -2
      src/JT808.Protocol/MessageBody/JT808_0x8803.cs
  5. +17
    -1
      src/JT808.Protocol/MessageBody/JT808_0x8804.cs
  6. +14
    -2
      src/JT808.Protocol/MessageBody/JT808_0x8805.cs
  7. +11
    -1
      src/JT808.Protocol/MessageBody/JT808_0x8900.cs
  8. +13
    -1
      src/JT808.Protocol/MessageBody/JT808_0x8A00.cs

+ 26
- 2
src/JT808.Protocol/MessageBody/JT808_0x8800.cs Прегледај датотеку

@@ -1,5 +1,9 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
@@ -7,7 +11,7 @@ namespace JT808.Protocol.MessageBody
/// 多媒体数据上传应答
/// 0x8800
/// </summary>
public class JT808_0x8800 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8800>
public class JT808_0x8800 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8800>, IJT808Analyze
{
public override ushort MsgId { get; } = 0x8800;
public override string Description => "多媒体数据上传应答";
@@ -24,6 +28,7 @@ namespace JT808.Protocol.MessageBody
/// 重传包序号顺序排列,如“包 ID1 包 ID2......包 IDn”。
/// </summary>
public byte[] RetransmitPackageIds { get; set; }

public JT808_0x8800 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8800 jT808_0X8800 = new JT808_0x8800();
@@ -39,5 +44,24 @@ namespace JT808.Protocol.MessageBody
writer.WriteByte((byte)(value.RetransmitPackageIds.Length / 2));
writer.WriteArray(value.RetransmitPackageIds);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8800 value = new JT808_0x8800();
value.MultimediaId = reader.ReadUInt32();
value.RetransmitPackageCount = reader.ReadByte();
value.RetransmitPackageIds = reader.ReadArray(value.RetransmitPackageCount * 2).ToArray();

writer.WriteNumber($"[{ value.MultimediaId.ReadNumber()}]多媒体ID", value.MultimediaId);
writer.WriteNumber($"[{ value.RetransmitPackageCount.ReadNumber()}]重传包总数", value.RetransmitPackageCount);
writer.WriteString($"重传包", value.RetransmitPackageIds.ToHexString());
writer.WriteStartArray($"重传包ID列表");
ReadOnlySpan<byte> tmp = value.RetransmitPackageIds;
for(int i=0; i< value.RetransmitPackageCount; i++)
{
writer.WriteString($"ID{i+1}", tmp.Slice(i * 2, 2).ToArray().ToHexString());
}
writer.WriteEndArray();
}
}
}

+ 31
- 2
src/JT808.Protocol/MessageBody/JT808_0x8801.cs Прегледај датотеку

@@ -1,6 +1,8 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
@@ -8,7 +10,7 @@ namespace JT808.Protocol.MessageBody
/// 摄像头立即拍摄命令
/// 0x8801
/// </summary>
public class JT808_0x8801 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8801>, IJT808_2019_Version
public class JT808_0x8801 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8801>, IJT808Analyze, IJT808_2019_Version
{
public override ushort MsgId { get; } = 0x8801;
public override string Description => "摄像头立即拍摄命令";
@@ -68,6 +70,7 @@ namespace JT808.Protocol.MessageBody
/// 0-255
/// </summary>
public byte Chroma { get; set; }

public JT808_0x8801 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8801 jT808_0X8801 = new JT808_0x8801();
@@ -97,5 +100,31 @@ namespace JT808.Protocol.MessageBody
writer.WriteByte(value.Saturability);
writer.WriteByte(value.Chroma);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8801 value = new JT808_0x8801();
value.ChannelId = reader.ReadByte();
value.ShootingCommand = reader.ReadUInt16();
value.VideoTime = reader.ReadUInt16();
value.SaveFlag = reader.ReadByte();
value.Resolution = reader.ReadByte();
value.VideoQuality = reader.ReadByte();
value.Lighting = reader.ReadByte();
value.Contrast = reader.ReadByte();
value.Saturability = reader.ReadByte();
value.Chroma = reader.ReadByte();

writer.WriteNumber($"[{ value.ChannelId.ReadNumber()}]通道ID", value.ChannelId.);
writer.WriteNumber($"[{ value.ShootingCommand.ReadNumber()}]拍摄命令", value.ShootingCommand);
writer.WriteNumber($"[{ value.VideoTime.ReadNumber()}]拍照间隔_录像时间", value.VideoTime);
writer.WriteNumber($"[{ value.SaveFlag.ReadNumber()}]保存标志", value.SaveFlag);
writer.WriteNumber($"[{ value.Resolution.ReadNumber()}]分辨率", value.Resolution);
writer.WriteNumber($"[{ value.VideoQuality.ReadNumber()}]图像_视频质量", value.VideoQuality);
writer.WriteNumber($"[{ value.Lighting.ReadNumber()}]亮度", value.Lighting);
writer.WriteNumber($"[{ value.Contrast.ReadNumber()}]对比度", value.Contrast);
writer.WriteNumber($"[{ value.Saturability.ReadNumber()}]饱和度", value.Saturability);
writer.WriteNumber($"[{ value.Chroma.ReadNumber()}]色度", value.Chroma);
}
}
}

+ 22
- 2
src/JT808.Protocol/MessageBody/JT808_0x8802.cs Прегледај датотеку

@@ -1,6 +1,9 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
@@ -8,7 +11,7 @@ namespace JT808.Protocol.MessageBody
/// 存储多媒体数据检索
/// 0x8802
/// </summary>
public class JT808_0x8802 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8802>
public class JT808_0x8802 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8802>, IJT808Analyze
{
public override ushort MsgId { get; } = 0x8802;
public override string Description => "存储多媒体数据检索";
@@ -37,6 +40,7 @@ namespace JT808.Protocol.MessageBody
/// YY-MM-DD-hh-mm-ss
/// </summary>
public DateTime EndTime { get; set; }

public JT808_0x8802 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8802 jT808_0X8802 = new JT808_0x8802();
@@ -56,5 +60,21 @@ namespace JT808.Protocol.MessageBody
writer.WriteDateTime6(value.StartTime);
writer.WriteDateTime6(value.EndTime);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8802 value = new JT808_0x8802();
value.MultimediaType = reader.ReadByte();
value.ChannelId = reader.ReadByte();
value.EventItemCoding = reader.ReadByte();
value.StartTime = reader.ReadDateTime6();
value.EndTime = reader.ReadDateTime6();

writer.WriteNumber($"[{ value.MultimediaType.ReadNumber()}]多媒体类型", value.MultimediaType.);
writer.WriteNumber($"[{ value.ChannelId.ReadNumber()}]通道ID", value.ChannelId.);
writer.WriteNumber($"[{ value.EventItemCoding.ReadNumber()}]事件项编码", value.EventItemCoding.);
writer.WriteString($"[{ value.StartTime.ToString("yyMMddHHmmss")}]起始时间", value.StartTime.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteString($"[{ value.EndTime.ToString("yyMMddHHmmss")}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
}
}
}

+ 24
- 2
src/JT808.Protocol/MessageBody/JT808_0x8803.cs Прегледај датотеку

@@ -1,6 +1,9 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
@@ -8,7 +11,7 @@ namespace JT808.Protocol.MessageBody
/// 存储多媒体数据上传命令
/// 0x8803
/// </summary>
public class JT808_0x8803 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8803>
public class JT808_0x8803 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8803>, IJT808Analyze
{
public override ushort MsgId { get; } = 0x8803;
public override string Description => "存储多媒体数据上传命令";
@@ -43,6 +46,7 @@ namespace JT808.Protocol.MessageBody
/// <see cref="JT808.Protocol.Enums.JT808MultimediaDeleted"/>
/// </summary>
public byte MultimediaDeleted { get; set; }

public JT808_0x8803 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8803 jT808_0X8803 = new JT808_0x8803();
@@ -64,5 +68,23 @@ namespace JT808.Protocol.MessageBody
writer.WriteDateTime6(value.EndTime);
writer.WriteByte(value.MultimediaDeleted);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8803 jT808_0X8803 = new JT808_0x8803();
jT808_0X8803.MultimediaType = reader.ReadByte();
jT808_0X8803.ChannelId = reader.ReadByte();
jT808_0X8803.EventItemCoding = reader.ReadByte();
jT808_0X8803.StartTime = reader.ReadDateTime6();
jT808_0X8803.EndTime = reader.ReadDateTime6();
jT808_0X8803.MultimediaDeleted = reader.ReadByte();

writer.WriteNumber($"[{ jT808_0X8803.MultimediaType.ReadNumber()}]多媒体类型", jT808_0X8803.MultimediaType.);
writer.WriteNumber($"[{ jT808_0X8803.ChannelId.ReadNumber()}]通道ID", jT808_0X8803.ChannelId.);
writer.WriteNumber($"[{ jT808_0X8803.EventItemCoding.ReadNumber()}]事件项编码", jT808_0X8803.EventItemCoding.);
writer.WriteString($"[{ jT808_0X8803.StartTime.ToString("yyMMddHHmmss")}]起始时间", jT808_0X8803.StartTime.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteString($"[{ jT808_0X8803.EndTime.ToString("yyMMddHHmmss")}]结束时间", jT808_0X8803.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{ jT808_0X8803.MultimediaDeleted.ReadNumber()}]删除标志", jT808_0X8803.MultimediaDeleted.);
}
}
}

+ 17
- 1
src/JT808.Protocol/MessageBody/JT808_0x8804.cs Прегледај датотеку

@@ -1,13 +1,16 @@
using JT808.Protocol.Enums;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
/// <summary>
/// 录音开始命令
/// </summary>
public class JT808_0x8804 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8804>
public class JT808_0x8804 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8804>, IJT808Analyze
{
public override ushort MsgId { get; } = 0x8804;
public override string Description => "录音开始命令";
@@ -47,5 +50,18 @@ namespace JT808.Protocol.MessageBody
writer.WriteByte((byte)value.RecordSave);
writer.WriteByte(value.AudioSampleRate);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8804 jT808_0X8804 = new JT808_0x8804();
jT808_0X8804.RecordCmd = (JT808RecordCmd)reader.ReadByte();
jT808_0X8804.RecordTime = reader.ReadUInt16();
jT808_0X8804.RecordSave = (JT808RecordSave)reader.ReadByte();
jT808_0X8804.AudioSampleRate = reader.ReadByte();
writer.WriteNumber($"[{ ((byte)(jT808_0X8804.RecordCmd)).ReadNumber()}]录音命令", (byte)jT808_0X8804.RecordCmd);
writer.WriteNumber($"[{jT808_0X8804.RecordTime.ReadNumber()}]单位为秒(s)", jT808_0X8804.RecordTime);
writer.WriteNumber($"[{((byte)jT808_0X8804.RecordSave).ReadNumber()}]保存标志", (byte)jT808_0X8804.RecordSave);
writer.WriteNumber($"[{jT808_0X8804.AudioSampleRate.ReadNumber()}]音频采样率", jT808_0X8804.AudioSampleRate);
}
}
}

+ 14
- 2
src/JT808.Protocol/MessageBody/JT808_0x8805.cs Прегледај датотеку

@@ -1,13 +1,15 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
/// <summary>
/// 单条存储多媒体数据检索上传命令
/// </summary>
public class JT808_0x8805 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8805>,IJT808_2019_Version
public class JT808_0x8805 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8805>, IJT808Analyze, IJT808_2019_Version
{
public override ushort MsgId { get; } = 0x8805;
public override string Description => "单条存储多媒体数据检索上传命令";
@@ -20,6 +22,7 @@ namespace JT808.Protocol.MessageBody
/// <see cref="JT808.Protocol.Enums.JT808MultimediaDeleted"/>
/// </summary>
public byte MultimediaDeleted { get; set; }

public JT808_0x8805 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8805 jT808_0X8805 = new JT808_0x8805();
@@ -33,5 +36,14 @@ namespace JT808.Protocol.MessageBody
writer.WriteUInt32(value.MultimediaId);
writer.WriteByte(value.MultimediaDeleted);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8805 jT808_0X8805 = new JT808_0x8805();
jT808_0X8805.MultimediaId = reader.ReadUInt32();
jT808_0X8805.MultimediaDeleted = reader.ReadByte();
writer.WriteNumber($"[{jT808_0X8805.MultimediaId.ReadNumber()}]多媒体ID", jT808_0X8805.MultimediaId);
writer.WriteNumber($"[{jT808_0X8805.MultimediaId.ReadNumber()}]删除标志", jT808_0X8805.MultimediaDeleted);
}
}
}

+ 11
- 1
src/JT808.Protocol/MessageBody/JT808_0x8900.cs Прегледај датотеку

@@ -2,13 +2,14 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
/// <summary>
/// 数据下行透传
/// </summary>
public class JT808_0x8900 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8900>, IJT808_2019_Version
public class JT808_0x8900 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8900>, IJT808Analyze, IJT808_2019_Version
{
public override ushort MsgId { get; } = 0x8900;
public override string Description => "数据下行透传";
@@ -41,5 +42,14 @@ namespace JT808.Protocol.MessageBody
writer.WriteByte(value.PassthroughType);
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(value.JT808_0X8900_BodyBase, ref writer, value.JT808_0X8900_BodyBase, config);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8900 jT808_0X8900 = new JT808_0x8900();
jT808_0X8900.PassthroughType = reader.ReadByte();
jT808_0X8900.PassthroughData = reader.ReadContent().ToArray();
writer.WriteNumber($"[{jT808_0X8900.PassthroughType.ReadNumber()}]透传消息类型", jT808_0X8900.PassthroughType);
writer.WriteString($"透传消息内容", jT808_0X8900.PassthroughData.ToHexString());
}
}
}

+ 13
- 1
src/JT808.Protocol/MessageBody/JT808_0x8A00.cs Прегледај датотеку

@@ -1,6 +1,9 @@
using JT808.Protocol.Exceptions;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System.Text.Json;

namespace JT808.Protocol.MessageBody
{
@@ -8,7 +11,7 @@ namespace JT808.Protocol.MessageBody
/// 平台RSA公钥
/// 0x8A00
/// </summary>
public class JT808_0x8A00 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8A00>
public class JT808_0x8A00 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8A00>, IJT808Analyze
{
public override ushort MsgId { get; } = 0x8A00;
public override string Description => "平台RSA公钥";
@@ -40,5 +43,14 @@ namespace JT808.Protocol.MessageBody
}
writer.WriteArray(value.N);
}

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8A00 jT808_0X8A00 = new JT808_0x8A00();
jT808_0X8A00.E = reader.ReadUInt32();
jT808_0X8A00.N = reader.ReadArray(128).ToArray();
writer.WriteNumber($"[{jT808_0X8A00.E.ReadNumber()}]RSA公钥e", jT808_0X8A00.E);
writer.WriteString($"RSA公钥n", jT808_0X8A00.N.ToHexString());
}
}
}

Loading…
Откажи
Сачувај