Browse Source

增加分析器及测试

tags/v1.0.1
smallchi(Koike) 5 years ago
parent
commit
6f48563430
22 changed files with 386 additions and 117 deletions
  1. +7
    -2
      src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1210_Test.cs
  2. +6
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1211_Test.cs
  3. +5
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF366_Test.cs
  4. +5
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF367_Test.cs
  5. +5
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8900_Test.cs
  6. +6
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9208_Test.cs
  7. +5
    -0
      src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9212_Test.cs
  8. +2
    -2
      src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml
  9. +8
    -9
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs
  10. +8
    -9
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs
  11. +8
    -9
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs
  12. +8
    -9
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs
  13. +1
    -1
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs
  14. +62
    -15
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs
  15. +23
    -7
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs
  16. +23
    -7
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs
  17. +50
    -16
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs
  18. +22
    -7
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs
  19. +22
    -1
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs
  20. +22
    -1
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs
  21. +43
    -10
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs
  22. +45
    -12
      src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs

+ 7
- 2
src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1210_Test.cs View File

@@ -43,7 +43,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
FileSize=10
}
},
TerminalID = "4444444",
MakerID = "4444444",
InfoType = 0
};
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
@@ -68,9 +68,14 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
Assert.Equal(9, jT808UploadLocationRequest.AttachInfos[1].FileNameLength);
Assert.Equal(10u, jT808UploadLocationRequest.AttachInfos[1].FileSize);

Assert.Equal("4444444", jT808UploadLocationRequest.TerminalID);
Assert.Equal("4444444", jT808UploadLocationRequest.MakerID);
Assert.Equal(0, jT808UploadLocationRequest.InfoType);

}
[Fact]
public void Json()
{
var json = JT808Serializer.Analyze<JT808_0x1210>("3434343434343434343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100020866696C656E616D65000000090966696C656E616D65310000000A".ToHexBytes());
}
}
}

+ 6
- 0
src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x1211_Test.cs View File

@@ -40,5 +40,11 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
Assert.Equal(2, jT808UploadLocationRequest.FileType);
Assert.Equal("FileName".Length, jT808UploadLocationRequest.FileNameLength);
}

[Fact]
public void Json()
{
var json = JT808Serializer.Analyze<JT808_0x1211>("0846696C654E616D650200000001".ToHexBytes());
}
}
}

+ 5
- 0
src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF366_Test.cs View File

@@ -60,5 +60,10 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
Assert.Equal("999999999999", jT808_0x8103_0xF366.TyreSpecificationType);
Assert.Equal(10, jT808_0x8103_0xF366.VoltageThreshold);
}
[Fact]
public void Json()
{
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F366243939393939393939393939390008000400060005000300020001000A0007010203040506".ToHexBytes());
}
}
}

+ 5
- 0
src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8103_0xF367_Test.cs View File

@@ -42,5 +42,10 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
Assert.Equal(1, jT808_0x8103_0xF367.LateralRearApproachAlarmTimeThreshold);
Assert.Equal(2, jT808_0x8103_0xF367.RearApproachAlarmTimeThreshold);
}
[Fact]
public void Json()
{
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F367020201".ToHexBytes());
}
}
}

+ 5
- 0
src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x8900_Test.cs View File

@@ -37,5 +37,10 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
Assert.Equal(2, jT808UploadLocationRequest.USBCount);
Assert.Equal(new List<byte> { 1, 2 }.ToArray().ToHexString(), jT808UploadLocationRequest.MultipleUSB.ToArray().ToHexString());
}
[Fact]
public void Json()
{
var json = JT808Serializer.Analyze<JT808_0x8900_0xF7>("020102".ToHexBytes());
}
}
}

+ 6
- 0
src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9208_Test.cs View File

@@ -54,5 +54,11 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
Assert.Equal(5000, jT808UploadLocationRequest.AttachmentServerIPTcpPort);
Assert.Equal(5001, jT808UploadLocationRequest.AttachmentServerIPUdpPort);
}

[Fact]
public void Json()
{
var json = JT808Serializer.Analyze<JT808_0x9208>("0B3139322E3136382E312E311388138934343434343434191210183100030201313131313131313131313131313131313131313131313131313131313131313100000000000000000000000000000000".ToHexBytes());
}
}
}

+ 5
- 0
src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x9212_Test.cs View File

@@ -57,5 +57,10 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
Assert.Equal(30u, jT808UploadLocationRequest.DataPackages[1].Length);
Assert.Equal(40u, jT808UploadLocationRequest.DataPackages[1].Offset);
}
[Fact]
public void Json()
{
var json = JT808Serializer.Analyze<JT808_0x9212>("0846696C654E616D65010202000000140000000A000000280000001E".ToHexBytes());
}
}
}

+ 2
- 2
src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.xml View File

@@ -389,9 +389,9 @@
报警附件信息消息
</summary>
</member>
<member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x1210.TerminalID">
<member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x1210.MakerID">
<summary>
终端ID
制造商Id
7 个字节,由大写字母和数字组成,此终端ID 由制造商自行定义,位数不足时,后补“0x00”
</summary>
</member>


+ 8
- 9
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs View File

@@ -246,15 +246,14 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString());
writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString());
writer.WriteEndObject();
value.AlarmIdentification = new AlarmIdentificationProperty
{
TerminalID = reader.ReadString(7),
Time = reader.ReadDateTime6(),
SN = reader.ReadByte(),
AttachCount = reader.ReadByte(),
Retain = reader.ReadByte()
};
writer.WriteString($"[{value.AlarmIdentification.TerminalID}]终端ID", value.AlarmIdentification.TerminalID);
value.AlarmIdentification = new AlarmIdentificationProperty();
string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString();
value.AlarmIdentification.TerminalID = reader.ReadString(7);
value.AlarmIdentification.Time = reader.ReadDateTime6();
value.AlarmIdentification.SN = reader.ReadByte();
value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);


+ 8
- 9
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs View File

@@ -202,15 +202,14 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString());
writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString());
writer.WriteEndObject();
value.AlarmIdentification = new AlarmIdentificationProperty
{
TerminalID = reader.ReadString(7),
Time = reader.ReadDateTime6(),
SN = reader.ReadByte(),
AttachCount = reader.ReadByte(),
Retain = reader.ReadByte()
};
writer.WriteString($"[{value.AlarmIdentification.TerminalID}]终端ID", value.AlarmIdentification.TerminalID);
value.AlarmIdentification = new AlarmIdentificationProperty();
string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString();
value.AlarmIdentification.TerminalID = reader.ReadString(7);
value.AlarmIdentification.Time = reader.ReadDateTime6();
value.AlarmIdentification.SN = reader.ReadByte();
value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);


+ 8
- 9
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x66.cs View File

@@ -119,15 +119,14 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString());
writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString());
writer.WriteEndObject();
value.AlarmIdentification = new AlarmIdentificationProperty
{
TerminalID = reader.ReadString(7),
Time = reader.ReadDateTime6(),
SN = reader.ReadByte(),
AttachCount = reader.ReadByte(),
Retain = reader.ReadByte()
};
writer.WriteString($"[{value.AlarmIdentification.TerminalID}]终端ID", value.AlarmIdentification.TerminalID);
value.AlarmIdentification = new AlarmIdentificationProperty();
string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString();
value.AlarmIdentification.TerminalID = reader.ReadString(7);
value.AlarmIdentification.Time = reader.ReadDateTime6();
value.AlarmIdentification.SN = reader.ReadByte();
value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);


+ 8
- 9
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x67.cs View File

@@ -190,15 +190,14 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
writer.WriteString($"[{vehicleStateBits[1]}]Bit14自定义", vehicleStateBits[1].ToString());
writer.WriteString($"[{vehicleStateBits[0]}]Bit15自定义", vehicleStateBits[0].ToString());
writer.WriteEndObject();
value.AlarmIdentification = new AlarmIdentificationProperty
{
TerminalID = reader.ReadString(7),
Time = reader.ReadDateTime6(),
SN = reader.ReadByte(),
AttachCount = reader.ReadByte(),
Retain = reader.ReadByte()
};
writer.WriteString($"[{value.AlarmIdentification.TerminalID}]终端ID", value.AlarmIdentification.TerminalID);
value.AlarmIdentification = new AlarmIdentificationProperty();
string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString();
value.AlarmIdentification.TerminalID = reader.ReadString(7);
value.AlarmIdentification.Time = reader.ReadDateTime6();
value.AlarmIdentification.SN = reader.ReadByte();
value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);


+ 1
- 1
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0900_0xF8.cs View File

@@ -71,7 +71,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
writer.WriteNumber($"[{item.CustomerCodeLength.ReadNumber()}]客户代码长度", item.CustomerCodeLength);
string customerCodeHex = reader.ReadVirtualArray(item.CustomerCodeLength).ToArray().ToHexString();
item.CustomerCode = reader.ReadString(item.CustomerCodeLength);
writer.WriteString($"[{customerCodeHex}]设备ID", item.CustomerCode);
writer.WriteString($"[{customerCodeHex}]客户代码", item.CustomerCode);

writer.WriteEndObject();
}


+ 62
- 15
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1210.cs View File

@@ -1,22 +1,24 @@
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.Json;

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 报警附件信息消息
/// </summary>
public class JT808_0x1210:JT808Bodies, IJT808MessagePackFormatter<JT808_0x1210>
public class JT808_0x1210: JT808Bodies, IJT808MessagePackFormatter<JT808_0x1210>, IJT808Analyze
{
/// <summary>
/// 终端ID
/// 制造商Id
/// 7 个字节,由大写字母和数字组成,此终端ID 由制造商自行定义,位数不足时,后补“0x00”
/// </summary>
public string TerminalID { get; set; }
public string MakerID { get; set; }
/// <summary>
/// 报警标识号
/// </summary>
@@ -45,11 +47,56 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody

public override string Description => "报警附件信息消息";

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x1210 value = new JT808_0x1210();
string makerIdHex=reader.ReadVirtualArray(7).ToArray().ToHexString();
value.MakerID = reader.ReadString(7);
writer.WriteString($"[{makerIdHex}]制造商Id", value.MakerID);
value.AlarmIdentification = new AlarmIdentificationProperty();
string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString();
value.AlarmIdentification.TerminalID = reader.ReadString(7);
value.AlarmIdentification.Time = reader.ReadDateTime6();
value.AlarmIdentification.SN = reader.ReadByte();
value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);
writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain);
string alarmIdHex = reader.ReadVirtualArray(32).ToArray().ToHexString();
value.AlarmId = reader.ReadString(32);
writer.WriteString($"[{alarmIdHex}]平台给报警分配的唯一编号", value.AlarmId);
value.InfoType = reader.ReadByte();
writer.WriteNumber($"[{value.InfoType.ReadNumber()}]信息类型", value.InfoType);
value.AttachCount = reader.ReadByte();
writer.WriteNumber($"[{value.AttachCount.ReadNumber()}]附件数量", value.AttachCount);
if (value.AttachCount > 0)
{
writer.WriteStartArray("附件信息列表");
for (int i = 0; i < value.AttachCount; i++)
{
writer.WriteStartObject();
AttachProperty attachProperty = new AttachProperty();
attachProperty.FileNameLength = reader.ReadByte();
writer.WriteNumber($"[{attachProperty.FileNameLength.ReadNumber()}]文件名称长度", attachProperty.FileNameLength);
string fileNameHex = reader.ReadVirtualArray(attachProperty.FileNameLength).ToArray().ToHexString();
attachProperty.FileName = reader.ReadString(attachProperty.FileNameLength);
writer.WriteString($"[{fileNameHex}]文件名称", attachProperty.FileName);
attachProperty.FileSize = reader.ReadUInt32();
writer.WriteNumber($"[{ attachProperty.FileSize.ReadNumber()}]文件大小", attachProperty.FileSize);
writer.WriteEndObject();
}
writer.WriteEndArray();
}
}

public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x1210 jT808_0X1210 = new JT808_0x1210();
jT808_0X1210.TerminalID = reader.ReadString(7);
jT808_0X1210.AlarmIdentification = new AlarmIdentificationProperty
JT808_0x1210 value = new JT808_0x1210();
value.MakerID = reader.ReadString(7);
value.AlarmIdentification = new AlarmIdentificationProperty
{
TerminalID = reader.ReadString(7),
Time = reader.ReadDateTime6(),
@@ -57,27 +104,27 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
AttachCount = reader.ReadByte(),
Retain = reader.ReadByte()
};
jT808_0X1210.AlarmId = reader.ReadString(32);
jT808_0X1210.InfoType = reader.ReadByte();
jT808_0X1210.AttachCount = reader.ReadByte();
if (jT808_0X1210.AttachCount > 0)
value.AlarmId = reader.ReadString(32);
value.InfoType = reader.ReadByte();
value.AttachCount = reader.ReadByte();
if (value.AttachCount > 0)
{
jT808_0X1210.AttachInfos = new List<AttachProperty>();
for (int i = 0; i < jT808_0X1210.AttachCount; i++)
value.AttachInfos = new List<AttachProperty>();
for (int i = 0; i < value.AttachCount; i++)
{
AttachProperty attachProperty = new AttachProperty();
attachProperty.FileNameLength = reader.ReadByte();
attachProperty.FileName = reader.ReadString(attachProperty.FileNameLength);
attachProperty.FileSize = reader.ReadUInt32();
jT808_0X1210.AttachInfos.Add(attachProperty);
value.AttachInfos.Add(attachProperty);
}
}
return jT808_0X1210;
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1210 value, IJT808Config config)
{
writer.WriteString(value.TerminalID.PadRight(7, '0'));
writer.WriteString(value.MakerID.PadRight(7, '0'));
if (value.AlarmIdentification == null)
{
throw new NullReferenceException($"{nameof(AlarmIdentificationProperty)}不为空");


+ 23
- 7
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1211.cs View File

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

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 文件信息上传
/// </summary>
public class JT808_0x1211 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1211>
public class JT808_0x1211 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1211>, IJT808Analyze
{
public override string Description => "文件信息上传";
/// <summary>
@@ -29,14 +31,28 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody

public override ushort MsgId => 0x1211;

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x1211 value = new JT808_0x1211();
value.FileNameLength = reader.ReadByte();
writer.WriteNumber($"[{value.FileNameLength.ReadNumber()}]文件名称长度", value.FileNameLength);
string fileNameHex = reader.ReadVirtualArray(value.FileNameLength).ToArray().ToHexString();
value.FileName = reader.ReadString(value.FileNameLength);
writer.WriteString($"[{fileNameHex}]文件名称", value.FileName);
value.FileType = reader.ReadByte();
writer.WriteNumber($"[{value.FileType.ReadNumber()}]文件类型", value.FileType);
value.FileSize = reader.ReadUInt32();
writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize);
}

public JT808_0x1211 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x1211 jT808_0X1211 = new JT808_0x1211();
jT808_0X1211.FileNameLength = reader.ReadByte();
jT808_0X1211.FileName = reader.ReadString(jT808_0X1211.FileNameLength);
jT808_0X1211.FileType = reader.ReadByte();
jT808_0X1211.FileSize = reader.ReadUInt32();
return jT808_0X1211;
JT808_0x1211 value = new JT808_0x1211();
value.FileNameLength = reader.ReadByte();
value.FileName = reader.ReadString(value.FileNameLength);
value.FileType = reader.ReadByte();
value.FileSize = reader.ReadUInt32();
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1211 value, IJT808Config config)


+ 23
- 7
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x1212.cs View File

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

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 文件上传完成消息
/// </summary>
public class JT808_0x1212 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1212>
public class JT808_0x1212 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x1212>, IJT808Analyze
{
public override string Description => "文件上传完成消息";
/// <summary>
@@ -28,14 +30,28 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
public uint FileSize { get; set; }
public override ushort MsgId => 0x1212;

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x1212 value = new JT808_0x1212();
value.FileNameLength = reader.ReadByte();
writer.WriteNumber($"[{value.FileNameLength.ReadNumber()}]文件名称长度", value.FileNameLength);
string fileNameHex = reader.ReadVirtualArray(value.FileNameLength).ToArray().ToHexString();
value.FileName = reader.ReadString(value.FileNameLength);
writer.WriteString($"[{fileNameHex}]文件名称", value.FileName);
value.FileType = reader.ReadByte();
writer.WriteNumber($"[{value.FileType.ReadNumber()}]文件类型", value.FileType);
value.FileSize = reader.ReadUInt32();
writer.WriteNumber($"[{value.FileSize.ReadNumber()}]文件大小", value.FileSize);
}

public JT808_0x1212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x1212 jT808_0X1212 = new JT808_0x1212();
jT808_0X1212.FileNameLength = reader.ReadByte();
jT808_0X1212.FileName = reader.ReadString(jT808_0X1212.FileNameLength);
jT808_0X1212.FileType = reader.ReadByte();
jT808_0X1212.FileSize = reader.ReadUInt32();
return jT808_0X1212;
JT808_0x1212 value = new JT808_0x1212();
value.FileNameLength = reader.ReadByte();
value.FileName = reader.ReadString(value.FileNameLength);
value.FileType = reader.ReadByte();
value.FileSize = reader.ReadUInt32();
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x1212 value, IJT808Config config)


+ 50
- 16
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF366.cs View File

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

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 胎压监测系统参数
/// </summary>
public class JT808_0x8103_0xF366 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF366>
public class JT808_0x8103_0xF366 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF366>, IJT808Analyze
{
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF366;
public override byte ParamLength { get; set; } = 46;
@@ -56,23 +58,55 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public byte[] Retain { get; set; } = new byte[6];

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366();
value.ParamId = reader.ReadUInt32();
value.ParamLength = reader.ReadByte();
writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId);
writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
string tyreSpecificationTypeHex = reader.ReadVirtualArray(12).ToArray().ToHexString();
value.TyreSpecificationType = reader.ReadString(12);
writer.WriteString($"[{tyreSpecificationTypeHex}]轮胎规格型号", value.TyreSpecificationType);
value.TyrePressureUnit = reader.ReadUInt16();
writer.WriteNumber($"[{value.TyrePressureUnit.ReadNumber()}]胎压单位", value.TyrePressureUnit);
value.NormalFetalPressure = reader.ReadUInt16();
writer.WriteNumber($"[{value.NormalFetalPressure.ReadNumber()}]正常胎压值", value.NormalFetalPressure);
value.ThresholdUnbalancedTirePressure = reader.ReadUInt16();
writer.WriteNumber($"[{value.ThresholdUnbalancedTirePressure.ReadNumber()}]胎压不平衡门限", value.ThresholdUnbalancedTirePressure);
value.SlowLeakageThreshold = reader.ReadUInt16();
writer.WriteNumber($"[{value.SlowLeakageThreshold.ReadNumber()}]慢漏气门限", value.SlowLeakageThreshold);
value.LowVoltageThreshold = reader.ReadUInt16();
writer.WriteNumber($"[{value.LowVoltageThreshold.ReadNumber()}]低压阈值", value.LowVoltageThreshold);
value.HighVoltageThreshold = reader.ReadUInt16();
writer.WriteNumber($"[{value.HighVoltageThreshold.ReadNumber()}]高压阈值", value.HighVoltageThreshold);
value.HighTemperatureThreshold = reader.ReadUInt16();
writer.WriteNumber($"[{value.HighTemperatureThreshold.ReadNumber()}]高温阈值", value.HighTemperatureThreshold);
value.VoltageThreshold = reader.ReadUInt16();
writer.WriteNumber($"[{value.VoltageThreshold.ReadNumber()}]电压阈值", value.VoltageThreshold);
value.TimedReportingInterval = reader.ReadUInt16();
writer.WriteNumber($"[{value.TimedReportingInterval.ReadNumber()}]定时上报时间间隔", value.TimedReportingInterval);
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
writer.WriteString("保留项", value.Retain.ToHexString());
}

public JT808_0x8103_0xF366 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8103_0xF366 jT808_0X8103_0XF366 = new JT808_0x8103_0xF366();
jT808_0X8103_0XF366.ParamId = reader.ReadUInt32();
jT808_0X8103_0XF366.ParamLength = reader.ReadByte();
jT808_0X8103_0XF366.TyreSpecificationType = reader.ReadString(12);
jT808_0X8103_0XF366.TyrePressureUnit = reader.ReadUInt16();
jT808_0X8103_0XF366.NormalFetalPressure = reader.ReadUInt16();
jT808_0X8103_0XF366.ThresholdUnbalancedTirePressure = reader.ReadUInt16();
jT808_0X8103_0XF366.SlowLeakageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.LowVoltageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.HighVoltageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.HighTemperatureThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.VoltageThreshold = reader.ReadUInt16();
jT808_0X8103_0XF366.TimedReportingInterval = reader.ReadUInt16();
jT808_0X8103_0XF366.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
return jT808_0X8103_0XF366;
JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366();
value.ParamId = reader.ReadUInt32();
value.ParamLength = reader.ReadByte();
value.TyreSpecificationType = reader.ReadString(12);
value.TyrePressureUnit = reader.ReadUInt16();
value.NormalFetalPressure = reader.ReadUInt16();
value.ThresholdUnbalancedTirePressure = reader.ReadUInt16();
value.SlowLeakageThreshold = reader.ReadUInt16();
value.LowVoltageThreshold = reader.ReadUInt16();
value.HighVoltageThreshold = reader.ReadUInt16();
value.HighTemperatureThreshold = reader.ReadUInt16();
value.VoltageThreshold = reader.ReadUInt16();
value.TimedReportingInterval = reader.ReadUInt16();
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF366 value, IJT808Config config)


+ 22
- 7
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8103_0xF367.cs View File

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

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 盲区监测系统参数
/// </summary>
public class JT808_0x8103_0xF367 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF367>
public class JT808_0x8103_0xF367 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF367>, IJT808Analyze
{
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF367;
public override byte ParamLength { get; set; } = 2;
@@ -20,14 +22,27 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public byte LateralRearApproachAlarmTimeThreshold { get; set; }

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367();
value.ParamId = reader.ReadUInt32();
value.ParamLength = reader.ReadByte();
writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
value.RearApproachAlarmTimeThreshold = reader.ReadByte();
writer.WriteNumber($"[{value.RearApproachAlarmTimeThreshold.ReadNumber()}]后方接近报警时间阈值", value.RearApproachAlarmTimeThreshold);
value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte();
writer.WriteNumber($"[{value.LateralRearApproachAlarmTimeThreshold.ReadNumber()}]侧后方接近报警时间阈值", value.LateralRearApproachAlarmTimeThreshold);
}

public JT808_0x8103_0xF367 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8103_0xF367 jT808_0X8103_0XF367 = new JT808_0x8103_0xF367();
jT808_0X8103_0XF367.ParamId = reader.ReadUInt32();
jT808_0X8103_0XF367.ParamLength = reader.ReadByte();
jT808_0X8103_0XF367.RearApproachAlarmTimeThreshold = reader.ReadByte();
jT808_0X8103_0XF367.LateralRearApproachAlarmTimeThreshold = reader.ReadByte();
return jT808_0X8103_0XF367;
JT808_0x8103_0xF367 value = new JT808_0x8103_0xF367();
value.ParamId = reader.ReadUInt32();
value.ParamLength = reader.ReadByte();
value.RearApproachAlarmTimeThreshold = reader.ReadByte();
value.LateralRearApproachAlarmTimeThreshold = reader.ReadByte();
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF367 value, IJT808Config config)


+ 22
- 1
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF7.cs View File

@@ -1,14 +1,16 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessageBody;
using JT808.Protocol.MessagePack;
using System.Collections.Generic;
using System.Text.Json;

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 查询基本信息
/// </summary>
public class JT808_0x8900_0xF7 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF7>
public class JT808_0x8900_0xF7 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF7>, IJT808Analyze
{
public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF7;
/// <summary>
@@ -20,6 +22,25 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public List<byte> MultipleUSB { get; set; }

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7();
value.USBCount = reader.ReadByte();
writer.WriteNumber($"[{value.USBCount.ReadNumber()}]外设ID列表总数", value.USBCount);
if (value.USBCount > 0)
{
writer.WriteStartArray("外设ID列表");
for (int i = 0; i < value.USBCount; i++)
{
writer.WriteStartObject();
byte usbId = reader.ReadByte();
writer.WriteNumber($"[{usbId.ReadNumber()}]外设ID", usbId);
writer.WriteEndObject();
}
writer.WriteEndArray();
}
}

public JT808_0x8900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8900_0xF7 value = new JT808_0x8900_0xF7();


+ 22
- 1
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x8900_0xF8.cs View File

@@ -1,14 +1,16 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessageBody;
using JT808.Protocol.MessagePack;
using System.Collections.Generic;
using System.Text.Json;

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 查询基本信息
/// </summary>
public class JT808_0x8900_0xF8 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF8>
public class JT808_0x8900_0xF8 : JT808_0x8900_BodyBase, IJT808MessagePackFormatter<JT808_0x8900_0xF8>, IJT808Analyze
{
public override byte PassthroughType { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0900_0xF8;
/// <summary>
@@ -20,6 +22,25 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
/// </summary>
public List<byte> MultipleUSB { get; set; }

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8();
value.USBCount = reader.ReadByte();
writer.WriteNumber($"[{value.USBCount.ReadNumber()}]外设ID列表总数", value.USBCount);
if (value.USBCount > 0)
{
writer.WriteStartArray("外设ID列表");
for (int i = 0; i < value.USBCount; i++)
{
writer.WriteStartObject();
byte usbId = reader.ReadByte();
writer.WriteNumber($"[{usbId.ReadNumber()}]外设ID", usbId);
writer.WriteEndObject();
}
writer.WriteEndArray();
}
}

public JT808_0x8900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x8900_0xF8 value = new JT808_0x8900_0xF8();


+ 43
- 10
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9208.cs View File

@@ -1,14 +1,16 @@
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System;
using System.Text.Json;

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 报警附件上传指令
/// </summary>
public class JT808_0x9208:JT808Bodies, IJT808MessagePackFormatter<JT808_0x9208>
public class JT808_0x9208: JT808Bodies, IJT808MessagePackFormatter<JT808_0x9208>, IJT808Analyze
{
public override string Description => "报警附件上传指令";
public byte AttachmentServerIPLength { get; set; }
@@ -31,14 +33,45 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody

public override ushort MsgId => 0x9208;

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x9208 value = new JT808_0x9208();
value.AttachmentServerIPLength = reader.ReadByte();
writer.WriteNumber($"[{value.AttachmentServerIPLength.ReadNumber()}]服务IP地址长度", value.AttachmentServerIPLength);
string attachmentServerIPHex = reader.ReadVirtualArray(value.AttachmentServerIPLength).ToArray().ToHexString();
value.AttachmentServerIP = reader.ReadString(value.AttachmentServerIPLength);
writer.WriteString($"[{AttachmentServerIP}]服务IP地址", value.AttachmentServerIP);
value.AttachmentServerIPTcpPort = reader.ReadUInt16();
writer.WriteNumber($"[{value.AttachmentServerIPTcpPort.ReadNumber()}]TCP端口", value.AttachmentServerIPTcpPort);
value.AttachmentServerIPUdpPort = reader.ReadUInt16();
writer.WriteNumber($"[{value.AttachmentServerIPUdpPort.ReadNumber()}]UDP端口", value.AttachmentServerIPUdpPort);
value.AlarmIdentification = new AlarmIdentificationProperty();
string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString();
value.AlarmIdentification.TerminalID = reader.ReadString(7);
value.AlarmIdentification.Time = reader.ReadDateTime6();
value.AlarmIdentification.SN = reader.ReadByte();
value.AlarmIdentification.AttachCount = reader.ReadByte();
value.AlarmIdentification.Retain = reader.ReadByte();
writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);
writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain);
string alarmIdHex = reader.ReadVirtualArray(32).ToArray().ToHexString();
value.AlarmId = reader.ReadString(32);
writer.WriteString($"[{alarmIdHex}]平台给报警分配的唯一编号", value.AlarmId);
string retainHex = reader.ReadVirtualArray(16).ToArray().ToHexString();
writer.WriteString($"预留", retainHex);
}

public JT808_0x9208 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x9208 jT808_0X9208 = new JT808_0x9208();
jT808_0X9208.AttachmentServerIPLength = reader.ReadByte();
jT808_0X9208.AttachmentServerIP = reader.ReadString(jT808_0X9208.AttachmentServerIPLength);
jT808_0X9208.AttachmentServerIPTcpPort = reader.ReadUInt16();
jT808_0X9208.AttachmentServerIPUdpPort = reader.ReadUInt16();
jT808_0X9208.AlarmIdentification = new AlarmIdentificationProperty
JT808_0x9208 value = new JT808_0x9208();
value.AttachmentServerIPLength = reader.ReadByte();
value.AttachmentServerIP = reader.ReadString(value.AttachmentServerIPLength);
value.AttachmentServerIPTcpPort = reader.ReadUInt16();
value.AttachmentServerIPUdpPort = reader.ReadUInt16();
value.AlarmIdentification = new AlarmIdentificationProperty
{
TerminalID = reader.ReadString(7),
Time = reader.ReadDateTime6(),
@@ -46,9 +79,9 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
AttachCount = reader.ReadByte(),
Retain = reader.ReadByte()
};
jT808_0X9208.AlarmId = reader.ReadString(32);
jT808_0X9208.Retain = reader.ReadArray(16).ToArray();
return jT808_0X9208;
value.AlarmId = reader.ReadString(32);
value.Retain = reader.ReadArray(16).ToArray();
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9208 value, IJT808Config config)


+ 45
- 12
src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x9212.cs View File

@@ -1,14 +1,16 @@
using JT808.Protocol.Extensions.JTActiveSafety.Metadata;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System.Collections.Generic;
using System.Text.Json;

namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
{
/// <summary>
/// 文件上传完成消息应答
/// </summary>
public class JT808_0x9212:JT808Bodies, IJT808MessagePackFormatter<JT808_0x9212>
public class JT808_0x9212: JT808Bodies, IJT808MessagePackFormatter<JT808_0x9212>, IJT808Analyze
{
public override string Description => "文件上传完成消息应答";
/// <summary>
@@ -39,26 +41,57 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody

public override ushort MsgId => 0x9212;

public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
{
JT808_0x9212 value = new JT808_0x9212();
value.FileNameLength = reader.ReadByte();
writer.WriteNumber($"[{value.FileNameLength.ReadNumber()}]文件名称长度", value.FileNameLength);
string fileNameHex = reader.ReadVirtualArray(value.FileNameLength).ToArray().ToHexString();
value.FileName = reader.ReadString(value.FileNameLength);
writer.WriteString($"[{fileNameHex}]文件名称", value.FileName);
value.FileType = reader.ReadByte();
writer.WriteNumber($"[{value.FileType.ReadNumber()}]文件类型", value.FileType);
value.UploadResult = reader.ReadByte();
writer.WriteNumber($"[{value.UploadResult.ReadNumber()}]上传结果", value.UploadResult);
value.DataPackageCount = reader.ReadByte();
writer.WriteNumber($"[{value.DataPackageCount.ReadNumber()}]补传数据包数量", value.DataPackageCount);
if (value.DataPackageCount > 0)
{
writer.WriteStartArray("补传数据包列表");
for (int i = 0; i < value.DataPackageCount; i++)
{
writer.WriteStartObject();
DataPackageProperty dataPackageProperty = new DataPackageProperty();
dataPackageProperty.Offset = reader.ReadUInt32();
writer.WriteNumber($"[{dataPackageProperty.Offset.ReadNumber()}]数据偏移量", dataPackageProperty.Offset);
dataPackageProperty.Length = reader.ReadUInt32();
writer.WriteNumber($"[{dataPackageProperty.Length.ReadNumber()}]数据长度", dataPackageProperty.Length);
writer.WriteEndObject();
}
writer.WriteEndArray();
}
}

public JT808_0x9212 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x9212 jT808_0X9212 = new JT808_0x9212();
jT808_0X9212.FileNameLength = reader.ReadByte();
jT808_0X9212.FileName = reader.ReadString(jT808_0X9212.FileNameLength);
jT808_0X9212.FileType = reader.ReadByte();
jT808_0X9212.UploadResult = reader.ReadByte();
jT808_0X9212.DataPackageCount = reader.ReadByte();
if (jT808_0X9212.DataPackageCount > 0)
JT808_0x9212 value = new JT808_0x9212();
value.FileNameLength = reader.ReadByte();
value.FileName = reader.ReadString(value.FileNameLength);
value.FileType = reader.ReadByte();
value.UploadResult = reader.ReadByte();
value.DataPackageCount = reader.ReadByte();
if (value.DataPackageCount > 0)
{
jT808_0X9212.DataPackages = new List<DataPackageProperty>();
for (int i = 0; i < jT808_0X9212.DataPackageCount; i++)
value.DataPackages = new List<DataPackageProperty>();
for (int i = 0; i < value.DataPackageCount; i++)
{
DataPackageProperty dataPackageProperty = new DataPackageProperty();
dataPackageProperty.Offset = reader.ReadUInt32();
dataPackageProperty.Length = reader.ReadUInt32();
jT808_0X9212.DataPackages.Add(dataPackageProperty);
value.DataPackages.Add(dataPackageProperty);
}
}
return jT808_0X9212;
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9212 value, IJT808Config config)


Loading…
Cancel
Save