浏览代码

1.修复0x0608协议

2.增加808消息枚举类型及扩展方法
tags/v2.2.5
SmallChi(Koike) 5 年前
父节点
当前提交
7294897802
共有 6 个文件被更改,包括 480 次插入21 次删除
  1. +254
    -4
      src/JT808.Protocol.Test/MessageBody/JT808_0x0608Test.cs
  2. +7
    -0
      src/JT808.Protocol/Enums/JT808MsgId.cs
  3. +35
    -0
      src/JT808.Protocol/Extensions/JT808PackageExtensionsTemplate.cs
  4. +1
    -1
      src/JT808.Protocol/JT808.Protocol.csproj
  5. +54
    -0
      src/JT808.Protocol/JT808.Protocol.xml
  6. +129
    -16
      src/JT808.Protocol/MessageBody/JT808_0x0608.cs

+ 254
- 4
src/JT808.Protocol.Test/MessageBody/JT808_0x0608Test.cs 查看文件

@@ -4,6 +4,7 @@ using System;
using System.Collections.Generic;
using Xunit;
using JT808.Protocol.Metadata;
using JT808.Protocol.Enums;

namespace JT808.Protocol.Test.MessageBody
{
@@ -16,23 +17,272 @@ namespace JT808.Protocol.Test.MessageBody
{
JT808_0x0608 value = new JT808_0x0608
{
QueryType=1,
QueryType=5,
Ids=new List<uint>() { 1,2,3}
};
var hex = JT808Serializer.Serialize(value).ToHexString();
Assert.Equal("0100000003000000010000000200000003", hex);
Assert.Equal("0500000003000000010000000200000003", hex);
}

[Fact]
public void Test2()
{
byte[] bytes = "0100000003000000010000000200000003".ToHexBytes();
byte[] bytes = "0500000003000000010000000200000003".ToHexBytes();
JT808_0x0608 value = JT808Serializer.Deserialize<JT808_0x0608>(bytes);
Assert.Equal(1, value.QueryType);
Assert.Equal(5, value.QueryType);
Assert.Equal(3u, value.Count);
Assert.Equal(1u, value.Ids[0]);
Assert.Equal(2u, value.Ids[1]);
Assert.Equal(3u, value.Ids[2]);
}

[Fact]
public void Test_JT808_0X8600s_1()
{
JT808_0x0608 value = new JT808_0x0608
{
QueryType = 1,
JT808_0x8600s=new List<JT808_0x8600>()
{
new JT808_0x8600
{
AreaItems =new List<JT808CircleAreaProperty>
{
new JT808CircleAreaProperty
{
AreaId = 1522,
AreaProperty = 222,
CenterPointLat = 123456789,
CenterPointLng = 123456789,
Radius = 200,
StartTime = DateTime.Parse("2020-01-07 00:00:12"),
EndTime = DateTime.Parse("2020-01-07 00:00:13"),
HighestSpeed = 60,
OverspeedDuration = 200,
NightMaximumSpeed=666,
AreaName="SmallChi"
}
},
SettingAreaProperty= JT808SettingProperty.追加区域.ToByteValue()
}
}
};
var hex = JT808Serializer.Serialize(value, JT808Version.JTT2019).ToHexString();
Assert.Equal("01000000010101000005F200DE075BCD15075BCD15000000C8003CC8029A0008536D616C6C436869", hex);
}

[Fact]
public void Test_JT808_0X8600s_2()
{
byte[] bytes = "01000000010101000005F200DE075BCD15075BCD15000000C8003CC8029A0008536D616C6C436869".ToHexBytes();
JT808_0x0608 value = JT808Serializer.Deserialize<JT808_0x0608>(bytes, JT808Version.JTT2019);
Assert.Equal(1, value.QueryType);
Assert.Equal(1u, value.Count);
var jT808_0X8600 = value.JT808_0x8600s[0];
Assert.Equal(JT808SettingProperty.追加区域.ToByteValue(), jT808_0X8600.SettingAreaProperty);
Assert.Equal(1, jT808_0X8600.AreaCount);
var item0 = jT808_0X8600.AreaItems[0];
Assert.Equal((uint)1522, item0.AreaId);
Assert.Equal((ushort)222, item0.AreaProperty);
Assert.Equal((uint)123456789, item0.CenterPointLat);
Assert.Equal((uint)123456789, item0.CenterPointLng);
Assert.Equal((uint)200, item0.Radius);
Assert.Null(item0.StartTime);
Assert.Null(item0.EndTime);
Assert.Equal((ushort)60, item0.HighestSpeed);
Assert.Equal((byte)200, item0.OverspeedDuration);
Assert.Equal(666, item0.NightMaximumSpeed);
Assert.Equal("SmallChi", item0.AreaName);
}

[Fact]
public void Test_JT808_0X8602s_1()
{
JT808_0x0608 value = new JT808_0x0608
{
QueryType = 2,
JT808_0x8602s = new List<JT808_0x8602>()
{
new JT808_0x8602
{
AreaItems =new List<JT808RectangleAreaProperty>
{
new JT808RectangleAreaProperty
{
AreaId = 1522,
AreaProperty = 222,
LowRightPointLat= 123456789,
LowRightPointLng= 123456788,
UpLeftPointLat= 123456787,
UpLeftPointLng= 123456786,
StartTime = DateTime.Parse("2020-01-07 00:00:12"),
EndTime = DateTime.Parse("2020-01-07 00:00:13"),
HighestSpeed = 60,
OverspeedDuration = 200,
AreaName="smallchi"
}
},
SettingAreaProperty= JT808SettingProperty.追加区域.ToByteValue()
}
}
};
var hex = JT808Serializer.Serialize(value, JT808Version.JTT2019).ToHexString();
Assert.Equal("02000000010101000005F200DE075BCD13075BCD12075BCD15075BCD14003CC800000008736D616C6C636869", hex);
}

[Fact]
public void Test_JT808_0X8602s_2()
{
byte[] bytes = "02000000010101000005F200DE075BCD13075BCD12075BCD15075BCD14003CC800000008736D616C6C636869".ToHexBytes();
JT808_0x0608 value = JT808Serializer.Deserialize<JT808_0x0608>(bytes, JT808Version.JTT2019);
Assert.Equal(2, value.QueryType);
Assert.Equal(1u, value.Count);
var jT808_0X8602 = value.JT808_0x8602s[0];
Assert.Equal(JT808SettingProperty.追加区域.ToByteValue(), jT808_0X8602.SettingAreaProperty);
Assert.Equal(1, jT808_0X8602.AreaCount);
var item0 = jT808_0X8602.AreaItems[0];
Assert.Equal((uint)1522, item0.AreaId);
Assert.Equal((ushort)222, item0.AreaProperty);
Assert.Equal((uint)123456789, item0.LowRightPointLat);
Assert.Equal((uint)123456788, item0.LowRightPointLng);
Assert.Equal((uint)123456787, item0.UpLeftPointLat);
Assert.Equal((uint)123456786, item0.UpLeftPointLng);
Assert.Null(item0.StartTime);
Assert.Null(item0.EndTime);
Assert.Equal((ushort)60, item0.HighestSpeed);
Assert.Equal((byte)200, item0.OverspeedDuration);
Assert.Equal(0, item0.NightMaximumSpeed);
Assert.Equal("smallchi", item0.AreaName);
}

[Fact]
public void Test_JT808_0x8604s_1()
{
JT808_0x0608 value = new JT808_0x0608
{
QueryType = 3,
JT808_0x8604s = new List<JT808_0x8604>()
{
new JT808_0x8604
{ AreaId = 1234,
AreaProperty = JT808SettingProperty.追加区域.ToByteValue(),
StartTime = DateTime.Parse("2020-01-07 00:00:12"),
EndTime = DateTime.Parse("2020-01-07 00:00:13"),
HighestSpeed = 62,
OverspeedDuration = 218,
PeakItems = new List<JT808PeakProperty>()
{
new JT808PeakProperty
{
Lat= 123456789,
Lng= 123456788
},
new JT808PeakProperty
{
Lat = 123456700,
Lng = 123456701
}
},
AreaName="smallchi",
NightMaximumSpeed=66
}
}
};
var hex = JT808Serializer.Serialize(value, JT808Version.JTT2019).ToHexString();
Assert.Equal("0300000001000004D200012001070000122001070000130002075BCD15075BCD14075BCCBC075BCCBD0008736D616C6C636869", hex);
}

[Fact]
public void Test_JT808_0X8604s_2()
{
byte[] bytes = "0300000001000004D200012001070000122001070000130002075BCD15075BCD14075BCCBC075BCCBD0008736D616C6C636869".ToHexBytes();
JT808_0x0608 value = JT808Serializer.Deserialize<JT808_0x0608>(bytes, JT808Version.JTT2019);
Assert.Equal(3, value.QueryType);
Assert.Equal(1u, value.Count);
var jT808_0X8604 = value.JT808_0x8604s[0];
Assert.Equal((uint)1234, jT808_0X8604.AreaId);
Assert.Equal(JT808SettingProperty.追加区域.ToByteValue(), jT808_0X8604.AreaProperty);
Assert.Null(jT808_0X8604.HighestSpeed);
Assert.Null(jT808_0X8604.OverspeedDuration);
Assert.Equal(DateTime.Parse("2020-01-07 00:00:12"), jT808_0X8604.StartTime);
Assert.Equal(DateTime.Parse("2020-01-07 00:00:13"), jT808_0X8604.EndTime);
Assert.Equal(2, jT808_0X8604.PeakItems.Count);
Assert.Equal((uint)123456789, jT808_0X8604.PeakItems[0].Lat);
Assert.Equal((uint)123456788, jT808_0X8604.PeakItems[0].Lng);
Assert.Equal((uint)123456700, jT808_0X8604.PeakItems[1].Lat);
Assert.Equal((uint)123456701, jT808_0X8604.PeakItems[1].Lng);
Assert.Equal(0, jT808_0X8604.NightMaximumSpeed);
Assert.Equal("smallchi", jT808_0X8604.AreaName);
}

[Fact]
public void Test_JT808_0x8606s_1()
{
JT808_0x0608 value = new JT808_0x0608
{
QueryType = 4,
JT808_0x8606s = new List<JT808_0x8606>()
{
new JT808_0x8606
{
RouteId = 9999,
RouteProperty = 51,
StartTime = DateTime.Parse("2020-01-07 00:00:12"),
EndTime = DateTime.Parse("2020-01-07 00:00:12"),
InflectionPointItems = new List<JT808InflectionPointProperty>()
{
new JT808InflectionPointProperty()
{
InflectionPointId = 1000,
InflectionPointLat = 123456789,
InflectionPointLng = 123456788,
SectionDrivingUnderThreshold = 123,
SectionHighestSpeed = 69,
SectionId = 1287,
SectionLongDrivingThreshold = 50,
SectionOverspeedDuration = 23,
SectionProperty = 3,
SectionWidth = 56,
NightMaximumSpeed=80
}
},
RouteName = "koike518"
}
}
};
var hex = JT808Serializer.Serialize(value, JT808Version.JTT2019).ToHexString();
Assert.Equal("04000000010000270F00332001070000122001070000120001000003E800000507075BCD15075BCD1438030032007B004517005000086B6F696B65353138", hex);
}

[Fact]
public void Test_JT808_0X8606s_2()
{
byte[] bytes = "04000000010000270F00332001070000122001070000120001000003E800000507075BCD15075BCD1438030032007B004517005000086B6F696B65353138".ToHexBytes();
JT808_0x0608 value = JT808Serializer.Deserialize<JT808_0x0608>(bytes, JT808Version.JTT2019);
Assert.Equal(4, value.QueryType);
Assert.Equal(1u, value.Count);
var jT808_0X8606 = value.JT808_0x8606s[0];
Assert.Equal((uint)9999, jT808_0X8606.RouteId);
Assert.Equal((uint)51, jT808_0X8606.RouteProperty);
Assert.Equal(DateTime.Parse("2020-01-07 00:00:12"), jT808_0X8606.StartTime);
Assert.Equal(DateTime.Parse("2020-01-07 00:00:12"), jT808_0X8606.EndTime);

Assert.Equal(1, jT808_0X8606.InflectionPointItems.Count);

Assert.Equal((uint)1000, jT808_0X8606.InflectionPointItems[0].InflectionPointId);
Assert.Equal((uint)123456789, jT808_0X8606.InflectionPointItems[0].InflectionPointLat);
Assert.Equal((uint)123456788, jT808_0X8606.InflectionPointItems[0].InflectionPointLng);

Assert.Equal((ushort)123, jT808_0X8606.InflectionPointItems[0].SectionDrivingUnderThreshold);
Assert.Equal((ushort)69, jT808_0X8606.InflectionPointItems[0].SectionHighestSpeed);
Assert.Equal((uint)1287, jT808_0X8606.InflectionPointItems[0].SectionId);
Assert.Equal((ushort)50, jT808_0X8606.InflectionPointItems[0].SectionLongDrivingThreshold);
Assert.Equal((byte)23, jT808_0X8606.InflectionPointItems[0].SectionOverspeedDuration);
Assert.Equal(3, jT808_0X8606.InflectionPointItems[0].SectionProperty);
Assert.Equal(56, jT808_0X8606.InflectionPointItems[0].SectionWidth);
Assert.Equal(80, jT808_0X8606.InflectionPointItems[0].NightMaximumSpeed.Value);

Assert.Equal("koike518", jT808_0X8606.RouteName);
}
}
}

+ 7
- 0
src/JT808.Protocol/Enums/JT808MsgId.cs 查看文件

@@ -498,5 +498,12 @@ namespace JT808.Protocol.Enums
[JT808BodiesType(typeof(JT808_0x0608))]
[JT808MsgIdDescription("0x0608", "查询区域或线路数据应答")]
查询区域或线路数据应答 = 0x0608,
/// <summary>
/// 存储多媒体数据检索应答
/// 0x0802
/// </summary>
[JT808BodiesType(typeof(JT808_0x0802))]
[JT808MsgIdDescription("0x0802", "存储多媒体数据检索应答")]
存储多媒体数据检索应答 = 0x0802,
}
}

+ 35
- 0
src/JT808.Protocol/Extensions/JT808PackageExtensionsTemplate.cs 查看文件

@@ -810,6 +810,41 @@ namespace JT808.Protocol.Extensions
return Create2019<JT808.Protocol.MessageBody.JT808_0x0801>(msgId,terminalPhoneNo,bodies);
}
/// <summary>
/// 0x0802 - 存储多媒体数据检索应答
/// auto-generated
/// </summary>
public static JT808Package Create_存储多媒体数据检索应答(this JT808MsgId msgId, string terminalPhoneNo,JT808.Protocol.MessageBody.JT808_0x0802 bodies)
{
return Create<JT808.Protocol.MessageBody.JT808_0x0802>(msgId,terminalPhoneNo,bodies);
}

/// <summary>
/// 0x0802 - 存储多媒体数据检索应答
/// auto-generated
/// </summary>
public static JT808Package Create(this JT808MsgId msgId, string terminalPhoneNo,JT808.Protocol.MessageBody.JT808_0x0802 bodies)
{
return Create<JT808.Protocol.MessageBody.JT808_0x0802>(msgId,terminalPhoneNo,bodies);
}

/// <summary>
/// 0x0802 - 存储多媒体数据检索应答
/// auto-generated 2019 version
/// </summary>
public static JT808Package Create_存储多媒体数据检索应答_2019(this JT808MsgId msgId, string terminalPhoneNo,JT808.Protocol.MessageBody.JT808_0x0802 bodies)
{
return Create2019<JT808.Protocol.MessageBody.JT808_0x0802>(msgId,terminalPhoneNo,bodies);
}

/// <summary>
/// 0x0802 - 存储多媒体数据检索应答
/// auto-generated 2019 version
/// </summary>
public static JT808Package Create2019(this JT808MsgId msgId, string terminalPhoneNo,JT808.Protocol.MessageBody.JT808_0x0802 bodies)
{
return Create2019<JT808.Protocol.MessageBody.JT808_0x0802>(msgId,terminalPhoneNo,bodies);
}
/// <summary>
/// 0x0805 - 摄像头立即拍摄命令应答
/// auto-generated
/// </summary>


+ 1
- 1
src/JT808.Protocol/JT808.Protocol.csproj 查看文件

@@ -14,7 +14,7 @@
<licenseUrl>https://github.com/SmallChi/JT808/blob/master/LICENSE</licenseUrl>
<license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
<Version>2.2.4</Version>
<Version>2.2.5</Version>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">


+ 54
- 0
src/JT808.Protocol/JT808.Protocol.xml 查看文件

@@ -716,6 +716,12 @@
0x0608
</summary>
</member>
<member name="F:JT808.Protocol.Enums.JT808MsgId.存储多媒体数据检索应答">
<summary>
存储多媒体数据检索应答
0x0802
</summary>
</member>
<member name="T:JT808.Protocol.Enums.JT808MultimediaCodingFormat">
<summary>
多媒体格式编码
@@ -1506,6 +1512,30 @@
auto-generated 2019 version
</summary>
</member>
<member name="M:JT808.Protocol.Extensions.JT808PackageExtensions.Create_存储多媒体数据检索应答(JT808.Protocol.Enums.JT808MsgId,System.String,JT808.Protocol.MessageBody.JT808_0x0802)">
<summary>
0x0802 - 存储多媒体数据检索应答
auto-generated
</summary>
</member>
<member name="M:JT808.Protocol.Extensions.JT808PackageExtensions.Create(JT808.Protocol.Enums.JT808MsgId,System.String,JT808.Protocol.MessageBody.JT808_0x0802)">
<summary>
0x0802 - 存储多媒体数据检索应答
auto-generated
</summary>
</member>
<member name="M:JT808.Protocol.Extensions.JT808PackageExtensions.Create_存储多媒体数据检索应答_2019(JT808.Protocol.Enums.JT808MsgId,System.String,JT808.Protocol.MessageBody.JT808_0x0802)">
<summary>
0x0802 - 存储多媒体数据检索应答
auto-generated 2019 version
</summary>
</member>
<member name="M:JT808.Protocol.Extensions.JT808PackageExtensions.Create2019(JT808.Protocol.Enums.JT808MsgId,System.String,JT808.Protocol.MessageBody.JT808_0x0802)">
<summary>
0x0802 - 存储多媒体数据检索应答
auto-generated 2019 version
</summary>
</member>
<member name="M:JT808.Protocol.Extensions.JT808PackageExtensions.Create_摄像头立即拍摄命令应答(JT808.Protocol.Enums.JT808MsgId,System.String,JT808.Protocol.MessageBody.JT808_0x0805)">
<summary>
0x0805 - 摄像头立即拍摄命令应答
@@ -3884,6 +3914,30 @@
查询的区域或线路的ID
</summary>
</member>
<member name="P:JT808.Protocol.MessageBody.JT808_0x0608.JT808_0x8600s">
<summary>
设置圆形区域
查询类型为1
</summary>
</member>
<member name="P:JT808.Protocol.MessageBody.JT808_0x0608.JT808_0x8602s">
<summary>
设置矩形区域
查询类型为2
</summary>
</member>
<member name="P:JT808.Protocol.MessageBody.JT808_0x0608.JT808_0x8604s">
<summary>
设置多边形区域
查询类型为3
</summary>
</member>
<member name="P:JT808.Protocol.MessageBody.JT808_0x0608.JT808_0x8606s">
<summary>
设置路线
查询类型为4
</summary>
</member>
<member name="T:JT808.Protocol.MessageBody.JT808_0x0701">
<summary>
电子运单上报


+ 129
- 16
src/JT808.Protocol/MessageBody/JT808_0x0608.cs 查看文件

@@ -1,4 +1,5 @@
using JT808.Protocol.Formatters;
using JT808.Protocol.Extensions;
using JT808.Protocol.Formatters;
using JT808.Protocol.Interfaces;
using JT808.Protocol.MessagePack;
using System.Collections.Generic;
@@ -20,11 +21,30 @@ namespace JT808.Protocol.MessageBody
/// 查询的区域或线路的ID数量
/// </summary>
public uint Count { get; set; }

/// <summary>
/// 查询的区域或线路的ID
/// </summary>
public List<uint> Ids { get; set; }
/// <summary>
/// 设置圆形区域
/// 查询类型为1
/// </summary>
public List<JT808_0x8600> JT808_0x8600s { get; set; }
/// <summary>
/// 设置矩形区域
/// 查询类型为2
/// </summary>
public List<JT808_0x8602> JT808_0x8602s { get; set; }
/// <summary>
/// 设置多边形区域
/// 查询类型为3
/// </summary>
public List<JT808_0x8604> JT808_0x8604s { get; set; }
/// <summary>
/// 设置路线
/// 查询类型为4
/// </summary>
public List<JT808_0x8606> JT808_0x8606s { get; set; }
public JT808_0x0608 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
{
JT808_0x0608 value = new JT808_0x0608();
@@ -32,29 +52,122 @@ namespace JT808.Protocol.MessageBody
value.Count = reader.ReadUInt32();
if (value.Count > 0)
{
value.Ids = new List<uint>();
for (int i = 0; i < value.Count; i++)
switch (value.QueryType)
{
value.Ids.Add(reader.ReadUInt32());
case 1:
value.JT808_0x8600s = new List<JT808_0x8600>();
for (int i = 0; i < value.Count; i++)
{
if (config.FormatterFactory.FormatterDict.TryGetValue(typeof(JT808_0x8600).GUID, out object instance))
{
dynamic attachImpl = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config);
value.JT808_0x8600s.Add(attachImpl);
}
}
break;
case 2:
value.JT808_0x8602s = new List<JT808_0x8602>();
for (int i = 0; i < value.Count; i++)
{
if (config.FormatterFactory.FormatterDict.TryGetValue(typeof(JT808_0x8602).GUID, out object instance))
{
dynamic attachImpl = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config);
value.JT808_0x8602s.Add(attachImpl);
}
}
break;
case 3:
value.JT808_0x8604s = new List<JT808_0x8604>();
for (int i = 0; i < value.Count; i++)
{
if (config.FormatterFactory.FormatterDict.TryGetValue(typeof(JT808_0x8604).GUID, out object instance))
{
dynamic attachImpl = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config);
value.JT808_0x8604s.Add(attachImpl);
}
}
break;
case 4:
value.JT808_0x8606s = new List<JT808_0x8606>();
for (int i = 0; i < value.Count; i++)
{
if (config.FormatterFactory.FormatterDict.TryGetValue(typeof(JT808_0x8606).GUID, out object instance))
{
dynamic attachImpl = JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config);
value.JT808_0x8606s.Add(attachImpl);
}
}
break;
default:
value.Ids = new List<uint>();
for (int i = 0; i < value.Count; i++)
{
value.Ids.Add(reader.ReadUInt32());
}
break;
}
}
return value;
}

public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0608 value, IJT808Config config)
{
writer.WriteByte(value.QueryType);
if (value.Ids != null && value.Ids.Count > 0)
{
writer.WriteUInt32((uint)value.Ids.Count);
foreach (var item in value.Ids)
{
writer.WriteUInt32(item);
}
}
else
switch (value.QueryType)
{
writer.WriteUInt32(0);
case 1:
if (value.JT808_0x8600s != null && value.JT808_0x8600s.Count > 0)
{
writer.WriteUInt32((uint)value.JT808_0x8600s.Count);
foreach (var item in value.JT808_0x8600s)
{
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(item, ref writer, item, config);
}
}
break;
case 2:
if (value.JT808_0x8602s != null && value.JT808_0x8602s.Count > 0)
{
writer.WriteUInt32((uint)value.JT808_0x8602s.Count);
foreach (var item in value.JT808_0x8602s)
{
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(item, ref writer, item, config);
}
}
break;
case 3:
if (value.JT808_0x8604s != null && value.JT808_0x8604s.Count > 0)
{
writer.WriteUInt32((uint)value.JT808_0x8604s.Count);
foreach (var item in value.JT808_0x8604s)
{
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(item, ref writer, item, config);
}
}
break;
case 4:
if(value.JT808_0x8606s != null && value.JT808_0x8606s.Count > 0)
{
writer.WriteUInt32((uint)value.JT808_0x8606s.Count);
foreach (var item in value.JT808_0x8606s)
{
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(item, ref writer, item, config);
}
}
break;
default:
if (value.Ids != null && value.Ids.Count > 0)
{
writer.WriteUInt32((uint)value.Ids.Count);
foreach (var item in value.Ids)
{
writer.WriteUInt32(item);
}
}
else
{
writer.WriteUInt32(0);
}
break;
}
}
}


正在加载...
取消
保存