@@ -75,7 +75,7 @@ jT809Package.Header = new JT809Header | |||||
MsgGNSSCENTERID = 20180920, | MsgGNSSCENTERID = 20180920, | ||||
}; | }; | ||||
jT809Package.Bodies = new JT809_0x9400 | |||||
JT809_0x9400 bodies = new JT809_0x9400 | |||||
{ | { | ||||
VehicleNo="粤A12345", | VehicleNo="粤A12345", | ||||
VehicleColor= JT809Enums.JT809VehicleColorType.黄色, | VehicleColor= JT809Enums.JT809VehicleColorType.黄色, | ||||
@@ -95,7 +95,9 @@ JT809_0x9400_0x9401 jT809_0x9400_0x9401 = new JT809_0x9400_0x9401 | |||||
SupervisorEmail = "123456@qq.com" | SupervisorEmail = "123456@qq.com" | ||||
}; | }; | ||||
jT809Package.Bodies.JT809SubBodies = jT809_0x9400_0x9401; | |||||
bodies.SubBodies = jT809_0x9400_0x9401; | |||||
jT809Package.Bodies = bodies; | |||||
byte[] data = JT809Serializer.Serialize(jT809Package); | byte[] data = JT809Serializer.Serialize(jT809Package); | ||||
@@ -55,7 +55,7 @@ namespace JT809.Protocol.Benchmark | |||||
MsgGNSSCENTERID = 20180920, | MsgGNSSCENTERID = 20180920, | ||||
}; | }; | ||||
jT809Package.Bodies = new JT809_0x9400 | |||||
JT809_0x9400 bodies = new JT809_0x9400 | |||||
{ | { | ||||
VehicleNo = "粤A12345", | VehicleNo = "粤A12345", | ||||
VehicleColor = JT809Enums.JT809VehicleColorType.黄色, | VehicleColor = JT809Enums.JT809VehicleColorType.黄色, | ||||
@@ -74,8 +74,8 @@ namespace JT809.Protocol.Benchmark | |||||
SupervisorTel = "12345678901", | SupervisorTel = "12345678901", | ||||
SupervisorEmail = "123456@qq.com" | SupervisorEmail = "123456@qq.com" | ||||
}; | }; | ||||
jT809Package.Bodies.JT809SubBodies = jT809_0x9400_0x9401; | |||||
bodies.SubBodies = jT809_0x9400_0x9401; | |||||
jT809Package.Bodies = bodies; | |||||
var hex = JT809Serializer.Serialize(jT809Package); | var hex = JT809Serializer.Serialize(jT809Package); | ||||
} | } | ||||
} | } | ||||
@@ -28,7 +28,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||||
TerminalModelType = "11111111", | TerminalModelType = "11111111", | ||||
TerminalSimCode = "222222222222" | TerminalSimCode = "222222222222" | ||||
}; | }; | ||||
jT809_0X1200.JT809SubBodies = jT809_0X1200_0X1201; | |||||
jT809_0X1200.SubBodies = jT809_0X1200_0X1201; | |||||
var hex = JT809Serializer.Serialize(jT809_0X1200).ToHexString(); | var hex = JT809Serializer.Serialize(jT809_0X1200).ToHexString(); | ||||
//"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32" | //"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32" | ||||
//"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 61 61 32 32 32 32 32 32 32 32 32 32 32 32" | //"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 61 61 32 32 32 32 32 32 32 32 32 32 32 32" | ||||
@@ -43,7 +43,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||||
Assert.Equal(JT809Enums.JT809VehicleColorType.蓝色, jT809_0X9001.VehicleColor); | Assert.Equal(JT809Enums.JT809VehicleColorType.蓝色, jT809_0X9001.VehicleColor); | ||||
Assert.Equal(JT809Enums.JT809SubBusinessType.上传车辆注册信息, jT809_0X9001.SubBusinessType); | Assert.Equal(JT809Enums.JT809SubBusinessType.上传车辆注册信息, jT809_0X9001.SubBusinessType); | ||||
Assert.Equal((ushort)61, jT809_0X9001.DataLength); | Assert.Equal((ushort)61, jT809_0X9001.DataLength); | ||||
JT809_0x1200_0x1201 jT809_0X1200_0X1201 = jT809_0X9001.JT809SubBodies as JT809_0x1200_0x1201; | |||||
JT809_0x1200_0x1201 jT809_0X1200_0X1201 = jT809_0X9001.SubBodies as JT809_0x1200_0x1201; | |||||
Assert.Equal("1111111111", jT809_0X1200_0X1201.PlateformId); | Assert.Equal("1111111111", jT809_0X1200_0X1201.PlateformId); | ||||
Assert.Equal("1111111111", jT809_0X1200_0X1201.ProducerId); | Assert.Equal("1111111111", jT809_0X1200_0X1201.ProducerId); | ||||
Assert.Equal("11111AA", jT809_0X1200_0X1201.TerminalId); | Assert.Equal("11111AA", jT809_0X1200_0X1201.TerminalId); | ||||
@@ -17,7 +17,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||||
{ | { | ||||
JT809_0x1300 jT809Bodies = new JT809_0x1300(); | JT809_0x1300 jT809Bodies = new JT809_0x1300(); | ||||
jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.平台查岗应答; | jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.平台查岗应答; | ||||
jT809Bodies.JT809SubBodies = new JT809_0x1300_0x1301 | |||||
jT809Bodies.SubBodies = new JT809_0x1300_0x1301 | |||||
{ | { | ||||
ObjectID="111", | ObjectID="111", | ||||
InfoContent= "22ha22", | InfoContent= "22ha22", | ||||
@@ -34,7 +34,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||||
var bytes = "13 01 00 00 00 1B 01 31 31 31 00 00 00 00 00 00 00 00 00 00 00 04 D2 00 00 00 06 32 32 68 61 32 32".ToHexBytes(); | var bytes = "13 01 00 00 00 1B 01 31 31 31 00 00 00 00 00 00 00 00 00 00 00 04 D2 00 00 00 06 32 32 68 61 32 32".ToHexBytes(); | ||||
JT809_0x1300 jT809Bodies = JT809Serializer.Deserialize<JT809_0x1300>(bytes); | JT809_0x1300 jT809Bodies = JT809Serializer.Deserialize<JT809_0x1300>(bytes); | ||||
Assert.Equal(JT809Enums.JT809SubBusinessType.平台查岗应答, jT809Bodies.SubBusinessType); | Assert.Equal(JT809Enums.JT809SubBusinessType.平台查岗应答, jT809Bodies.SubBusinessType); | ||||
JT809_0x1300_0x1301 jT809SubBodies = (JT809_0x1300_0x1301)jT809Bodies.JT809SubBodies; | |||||
JT809_0x1300_0x1301 jT809SubBodies = (JT809_0x1300_0x1301)jT809Bodies.SubBodies; | |||||
Assert.Equal("111", jT809SubBodies.ObjectID); | Assert.Equal("111", jT809SubBodies.ObjectID); | ||||
Assert.Equal("22ha22", jT809SubBodies.InfoContent); | Assert.Equal("22ha22", jT809SubBodies.InfoContent); | ||||
Assert.Equal((uint)1234, jT809SubBodies.InfoID); | Assert.Equal((uint)1234, jT809SubBodies.InfoID); | ||||
@@ -19,7 +19,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||||
jT809Bodies.VehicleNo = "粤A12345"; | jT809Bodies.VehicleNo = "粤A12345"; | ||||
jT809Bodies.VehicleColor = JT809Enums.JT809VehicleColorType.蓝色; | jT809Bodies.VehicleColor = JT809Enums.JT809VehicleColorType.蓝色; | ||||
jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.补报车辆静态信息应答; | jT809Bodies.SubBusinessType = JT809Enums.JT809SubBusinessType.补报车辆静态信息应答; | ||||
jT809Bodies.JT809SubBodies = new JT809_0x1600_0x1601 | |||||
jT809Bodies.SubBodies = new JT809_0x1600_0x1601 | |||||
{ | { | ||||
CarInfo = "什么鬼" | CarInfo = "什么鬼" | ||||
}; | }; | ||||
@@ -35,7 +35,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||||
Assert.Equal("粤A12345", jT809Bodies.VehicleNo); | Assert.Equal("粤A12345", jT809Bodies.VehicleNo); | ||||
Assert.Equal(JT809Enums.JT809VehicleColorType.蓝色, jT809Bodies.VehicleColor); | Assert.Equal(JT809Enums.JT809VehicleColorType.蓝色, jT809Bodies.VehicleColor); | ||||
Assert.Equal(JT809Enums.JT809SubBusinessType.补报车辆静态信息应答, jT809Bodies.SubBusinessType); | Assert.Equal(JT809Enums.JT809SubBusinessType.补报车辆静态信息应答, jT809Bodies.SubBusinessType); | ||||
Assert.Equal("什么鬼", ((JT809_0x1600_0x1601)jT809Bodies.JT809SubBodies).CarInfo); | |||||
Assert.Equal("什么鬼", ((JT809_0x1600_0x1601)jT809Bodies.SubBodies).CarInfo); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -27,7 +27,7 @@ namespace JT809.Protocol.Test.JT809Packages | |||||
MsgGNSSCENTERID = 20180920, | MsgGNSSCENTERID = 20180920, | ||||
}; | }; | ||||
jT809Package.Bodies = new JT809_0x9400 | |||||
JT809_0x9400 bodies = new JT809_0x9400 | |||||
{ | { | ||||
VehicleNo="粤A12345", | VehicleNo="粤A12345", | ||||
VehicleColor= JT809Enums.JT809VehicleColorType.黄色, | VehicleColor= JT809Enums.JT809VehicleColorType.黄色, | ||||
@@ -46,8 +46,8 @@ namespace JT809.Protocol.Test.JT809Packages | |||||
SupervisorTel = "12345678901", | SupervisorTel = "12345678901", | ||||
SupervisorEmail = "123456@qq.com" | SupervisorEmail = "123456@qq.com" | ||||
}; | }; | ||||
jT809Package.Bodies.JT809SubBodies = jT809_0x9400_0x9401; | |||||
bodies.SubBodies = jT809_0x9400_0x9401; | |||||
jT809Package.Bodies = bodies; | |||||
var hex = JT809Serializer.Serialize(jT809Package).ToHexString(); | var hex = JT809Serializer.Serialize(jT809Package).ToHexString(); | ||||
//"5B 00 00 00 92 00 00 06 82 94 00 01 33 EF B8 01 00 00 00 00 00 27 0F D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 02 94 01 00 00 00 5C 01 00 02 00 00 00 00 5A 01 AC 3F 40 12 3F FA A1 00 00 00 00 5A 01 AC 4D 50 03 73 6D 61 6C 6C 63 68 69 00 00 00 00 00 00 00 00 31 32 33 34 35 36 37 38 39 30 31 00 00 00 00 00 00 00 00 00 31 32 33 34 35 36 40 71 71 2E 63 6F 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA D8 5D" | //"5B 00 00 00 92 00 00 06 82 94 00 01 33 EF B8 01 00 00 00 00 00 27 0F D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 02 94 01 00 00 00 5C 01 00 02 00 00 00 00 5A 01 AC 3F 40 12 3F FA A1 00 00 00 00 5A 01 AC 4D 50 03 73 6D 61 6C 6C 63 68 69 00 00 00 00 00 00 00 00 31 32 33 34 35 36 37 38 39 30 31 00 00 00 00 00 00 00 00 00 31 32 33 34 35 36 40 71 71 2E 63 6F 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA D8 5D" | ||||
} | } | ||||
@@ -72,7 +72,7 @@ namespace JT809.Protocol.Test.JT809Packages | |||||
Assert.Equal(JT809Enums.JT809SubBusinessType.报警督办请求, jT809_0X400.SubBusinessType); | Assert.Equal(JT809Enums.JT809SubBusinessType.报警督办请求, jT809_0X400.SubBusinessType); | ||||
Assert.Equal((uint)92, jT809_0X400.DataLength); | Assert.Equal((uint)92, jT809_0X400.DataLength); | ||||
JT809_0x9400_0x9401 jT809_0x9400_0x9401 = (JT809_0x9400_0x9401)jT809_0X400.JT809SubBodies; | |||||
JT809_0x9400_0x9401 jT809_0x9400_0x9401 = (JT809_0x9400_0x9401)jT809_0X400.SubBodies; | |||||
Assert.Equal(JT809WarnSrc.车载终端, jT809_0x9400_0x9401.WarnSrc); | Assert.Equal(JT809WarnSrc.车载终端, jT809_0x9400_0x9401.WarnSrc); | ||||
Assert.Equal(JT809WarnType.疲劳驾驶报警, jT809_0x9400_0x9401.WarnType); | Assert.Equal(JT809WarnType.疲劳驾驶报警, jT809_0x9400_0x9401.WarnType); | ||||
Assert.Equal(DateTime.Parse("2018-09-27 10:24:00"), jT809_0x9400_0x9401.WarnTime); | Assert.Equal(DateTime.Parse("2018-09-27 10:24:00"), jT809_0x9400_0x9401.WarnTime); | ||||
@@ -97,7 +97,7 @@ namespace JT809.Protocol.Test.JT809Packages | |||||
VehicleNo = "粤A12345", | VehicleNo = "粤A12345", | ||||
VehicleColor = JT809Enums.JT809VehicleColorType.黄色, | VehicleColor = JT809Enums.JT809VehicleColorType.黄色, | ||||
SubBusinessType = JT809Enums.JT809SubBusinessType.报警督办请求, | SubBusinessType = JT809Enums.JT809SubBusinessType.报警督办请求, | ||||
JT809SubBodies = new JT809_0x9400_0x9401 | |||||
SubBodies = new JT809_0x9400_0x9401 | |||||
{ | { | ||||
WarnSrc = JT809WarnSrc.车载终端, | WarnSrc = JT809WarnSrc.车载终端, | ||||
WarnType = JT809WarnType.疲劳驾驶报警, | WarnType = JT809WarnType.疲劳驾驶报警, | ||||
@@ -14,7 +14,7 @@ | |||||
<PackageProjectUrl>https://github.com/SmallChi/JT809</PackageProjectUrl> | <PackageProjectUrl>https://github.com/SmallChi/JT809</PackageProjectUrl> | ||||
<PackageLicenseUrl>https://github.com/SmallChi/JT809/blob/master/LICENSE</PackageLicenseUrl> | <PackageLicenseUrl>https://github.com/SmallChi/JT809/blob/master/LICENSE</PackageLicenseUrl> | ||||
<GeneratePackageOnBuild>true</GeneratePackageOnBuild> | <GeneratePackageOnBuild>true</GeneratePackageOnBuild> | ||||
<Version>1.0.2</Version> | |||||
<Version>1.0.3</Version> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> | <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> | ||||
@@ -9,25 +9,6 @@ namespace JT809.Protocol | |||||
{ | { | ||||
public abstract class JT809Bodies | public abstract class JT809Bodies | ||||
{ | { | ||||
/// <summary> | |||||
/// 车牌号 | |||||
/// </summary> | |||||
public string VehicleNo { get; set; } | |||||
/// <summary> | |||||
/// 车辆颜色 | |||||
/// </summary> | |||||
public JT809VehicleColorType VehicleColor { get; set; } = JT809VehicleColorType.其他; | |||||
/// <summary> | |||||
/// 子业务类型标识 | |||||
/// </summary> | |||||
public JT809SubBusinessType SubBusinessType { get; set; } = JT809SubBusinessType.None; | |||||
/// <summary> | |||||
/// 后续数据长度 | |||||
/// </summary> | |||||
public uint DataLength { get; set; } | |||||
/// <summary> | |||||
/// 子业务数据体 | |||||
/// </summary> | |||||
public JT809SubBodies JT809SubBodies { get; set; } | |||||
} | } | ||||
} | } |
@@ -0,0 +1,36 @@ | |||||
using JT809.Protocol.JT809Attributes; | |||||
using JT809.Protocol.JT809Enums; | |||||
using JT809.Protocol.JT809Formatters; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace JT809.Protocol | |||||
{ | |||||
/// <summary> | |||||
/// 交换信息体 | |||||
/// </summary> | |||||
public abstract class JT809ExchangeMessageBodies: JT809Bodies | |||||
{ | |||||
/// <summary> | |||||
/// 车牌号 | |||||
/// </summary> | |||||
public string VehicleNo { get; set; } | |||||
/// <summary> | |||||
/// 车辆颜色 | |||||
/// </summary> | |||||
public JT809VehicleColorType VehicleColor { get; set; } = JT809VehicleColorType.其他; | |||||
/// <summary> | |||||
/// 子业务类型标识 | |||||
/// </summary> | |||||
public JT809SubBusinessType SubBusinessType { get; set; } = JT809SubBusinessType.None; | |||||
/// <summary> | |||||
/// 后续数据长度 | |||||
/// </summary> | |||||
public uint DataLength { get; set; } | |||||
/// <summary> | |||||
/// 子业务数据体 | |||||
/// </summary> | |||||
public JT809SubBodies SubBodies { get; set; } | |||||
} | |||||
} |
@@ -7,13 +7,6 @@ namespace JT809.Protocol.JT809Extensions | |||||
{ | { | ||||
public static class JT809PackageExtensions | public static class JT809PackageExtensions | ||||
{ | { | ||||
/// <summary> | |||||
/// 创建JT809Package对应的数据体 | |||||
/// </summary> | |||||
/// <typeparam name="TJT809Bodies"></typeparam> | |||||
/// <param name="msgID"></param> | |||||
/// <param name="jT809Bodies"></param> | |||||
/// <returns></returns> | |||||
public static JT809Package Create<TJT809Bodies>(this JT809BusinessType jT809BusinessType, TJT809Bodies jT809Bodies) | public static JT809Package Create<TJT809Bodies>(this JT809BusinessType jT809BusinessType, TJT809Bodies jT809Bodies) | ||||
where TJT809Bodies: JT809Bodies | where TJT809Bodies: JT809Bodies | ||||
{ | { | ||||
@@ -30,11 +23,7 @@ namespace JT809.Protocol.JT809Extensions | |||||
}; | }; | ||||
return jT809Package; | return jT809Package; | ||||
} | } | ||||
/// <summary> | |||||
/// 创建JT809Package对应的数据体 | |||||
/// </summary> | |||||
/// <param name="jt809BusinessType"></param> | |||||
/// <returns></returns> | |||||
public static JT809Package Create(this JT809BusinessType jT809BusinessType) | public static JT809Package Create(this JT809BusinessType jT809BusinessType) | ||||
{ | { | ||||
JT809Package jT809Package = new JT809Package(); | JT809Package jT809Package = new JT809Package(); | ||||
@@ -10,7 +10,7 @@ using System.Text; | |||||
namespace JT809.Protocol.JT809Formatters | namespace JT809.Protocol.JT809Formatters | ||||
{ | { | ||||
public class JT809BodiesFormatter<TJT809Bodies> : IJT809Formatter<TJT809Bodies> | public class JT809BodiesFormatter<TJT809Bodies> : IJT809Formatter<TJT809Bodies> | ||||
where TJT809Bodies: JT809Bodies,new () | |||||
where TJT809Bodies: JT809ExchangeMessageBodies, new () | |||||
{ | { | ||||
public TJT809Bodies Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | public TJT809Bodies Deserialize(ReadOnlySpan<byte> bytes, out int readSize) | ||||
{ | { | ||||
@@ -28,7 +28,7 @@ namespace JT809.Protocol.JT809Formatters | |||||
} | } | ||||
try | try | ||||
{ | { | ||||
jT809Bodies.JT809SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809Bodies.DataLength), out readSize); | |||||
jT809Bodies.SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809Bodies.DataLength), out readSize); | |||||
} | } | ||||
catch | catch | ||||
{ | { | ||||
@@ -53,7 +53,7 @@ namespace JT809.Protocol.JT809Formatters | |||||
{ | { | ||||
// 先写入内容,然后在根据内容反写内容长度 | // 先写入内容,然后在根据内容反写内容长度 | ||||
offset = offset + 4; | offset = offset + 4; | ||||
int contentOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.JT809SubBodies); | |||||
int contentOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.SubBodies); | |||||
JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset - 4, (uint)(contentOffset- offset)); | JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset - 4, (uint)(contentOffset- offset)); | ||||
offset = contentOffset; | offset = contentOffset; | ||||
} | } | ||||
@@ -26,7 +26,7 @@ namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters | |||||
} | } | ||||
try | try | ||||
{ | { | ||||
jT809_0X1300.JT809SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X1300.DataLength), out readSize); | |||||
jT809_0X1300.SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X1300.DataLength), out readSize); | |||||
} | } | ||||
catch | catch | ||||
{ | { | ||||
@@ -50,7 +50,7 @@ namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters | |||||
{ | { | ||||
// 先写入内容,然后在根据内容反写内容长度 | // 先写入内容,然后在根据内容反写内容长度 | ||||
offset = offset + 4; | offset = offset + 4; | ||||
int contentOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.JT809SubBodies); | |||||
int contentOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.SubBodies); | |||||
JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset - 4, (uint)(contentOffset - offset)); | JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset - 4, (uint)(contentOffset - offset)); | ||||
offset = contentOffset; | offset = contentOffset; | ||||
} | } | ||||
@@ -26,7 +26,7 @@ namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters | |||||
} | } | ||||
try | try | ||||
{ | { | ||||
jT809_0X9300.JT809SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X9300.DataLength), out readSize); | |||||
jT809_0X9300.SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X9300.DataLength), out readSize); | |||||
} | } | ||||
catch | catch | ||||
{ | { | ||||
@@ -50,7 +50,7 @@ namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters | |||||
{ | { | ||||
// 先写入内容,然后在根据内容反写内容长度 | // 先写入内容,然后在根据内容反写内容长度 | ||||
offset = offset + 4; | offset = offset + 4; | ||||
int contentOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.JT809SubBodies); | |||||
int contentOffset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.SubBodies); | |||||
JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset - 4, (uint)(contentOffset - offset)); | JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset - 4, (uint)(contentOffset - offset)); | ||||
offset = contentOffset; | offset = contentOffset; | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:下级平台向上级平台发送车辆动态信息交换业务数据包</para> | /// <para>描述:下级平台向上级平台发送车辆动态信息交换业务数据包</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1200>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1200>))] | ||||
public class JT809_0x1200:JT809Bodies | |||||
public class JT809_0x1200: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:下级平台向上级平台发送平台间交互信息</para> | /// <para>描述:下级平台向上级平台发送平台间交互信息</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809_0x1300Formatter))] | [JT809Formatter(typeof(JT809_0x1300Formatter))] | ||||
public class JT809_0x1300:JT809Bodies | |||||
public class JT809_0x1300: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -13,7 +13,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:下级平台向上级平台发送车辆报警信息业务</para> | /// <para>描述:下级平台向上级平台发送车辆报警信息业务</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1400>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1400>))] | ||||
public class JT809_0x1400:JT809Bodies | |||||
public class JT809_0x1400: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:下级平台向上级平台发送车辆监管业务</para> | /// <para>描述:下级平台向上级平台发送车辆监管业务</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1500>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1500>))] | ||||
public class JT809_0x1500:JT809Bodies | |||||
public class JT809_0x1500: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:下级平台向上级平台发送车辆睁态信息交换业务</para> | /// <para>描述:下级平台向上级平台发送车辆睁态信息交换业务</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1600>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x1600>))] | ||||
public class JT809_0x1600:JT809Bodies | |||||
public class JT809_0x1600: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:上级平台作为客户端向下级平台服务端发送车辆动态信息交换业务</para> | /// <para>描述:上级平台作为客户端向下级平台服务端发送车辆动态信息交换业务</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9200>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9200>))] | ||||
public class JT809_0x9200:JT809Bodies | |||||
public class JT809_0x9200: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:上级平台向下级平台发送平台问交互信息</para> | /// <para>描述:上级平台向下级平台发送平台问交互信息</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809_0x9300Formatter))] | [JT809Formatter(typeof(JT809_0x9300Formatter))] | ||||
public class JT809_0x9300:JT809Bodies | |||||
public class JT809_0x9300: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -16,7 +16,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:上级平台向下级平台发送报瞥信息业务</para> | /// <para>描述:上级平台向下级平台发送报瞥信息业务</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9400>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9400>))] | ||||
public class JT809_0x9400:JT809Bodies | |||||
public class JT809_0x9400: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:上级平台向下级平台发送车辆监监管业务</para> | /// <para>描述:上级平台向下级平台发送车辆监监管业务</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9500>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9500>))] | ||||
public class JT809_0x9500:JT809Bodies | |||||
public class JT809_0x9500: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -16,7 +16,7 @@ namespace JT809.Protocol.JT809MessageBody | |||||
/// <para>描述:上级平台向下级平台发送车辆静态信息交换业务</para> | /// <para>描述:上级平台向下级平台发送车辆静态信息交换业务</para> | ||||
/// </summary> | /// </summary> | ||||
[JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9600>))] | [JT809Formatter(typeof(JT809BodiesFormatter<JT809_0x9600>))] | ||||
public class JT809_0x9600:JT809Bodies | |||||
public class JT809_0x9600: JT809ExchangeMessageBodies | |||||
{ | { | ||||
} | } | ||||
@@ -12,7 +12,7 @@ namespace JT809.Protocol | |||||
{ | { | ||||
public static byte[] Serialize(JT809Package jT809Package, int minBufferSize = 4096) | public static byte[] Serialize(JT809Package jT809Package, int minBufferSize = 4096) | ||||
{ | { | ||||
return Serialize(jT809Package, minBufferSize); | |||||
return Serialize<JT809Package>(jT809Package, minBufferSize); | |||||
} | } | ||||
public static JT809Package Deserialize(ReadOnlySpan<byte> bytes) | public static JT809Package Deserialize(ReadOnlySpan<byte> bytes) | ||||