@@ -18,9 +18,10 @@ namespace JT808.Protocol.Extensions | |||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fieldName"></param> | /// <param name="fieldName"></param> | ||||
/// <param name="fixedLength"></param> | /// <param name="fixedLength"></param> | ||||
public static void ValiString(this string value,in string fieldName, in int fixedLength) | |||||
public static string ValiString(this string value,in string fieldName, in int fixedLength) | |||||
{ | { | ||||
vali(value.Length, fieldName, fixedLength); | vali(value.Length, fieldName, fixedLength); | ||||
return value; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -29,9 +30,10 @@ namespace JT808.Protocol.Extensions | |||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fieldName"></param> | /// <param name="fieldName"></param> | ||||
/// <param name="fixedLength"></param> | /// <param name="fixedLength"></param> | ||||
public static void ValiBytes(this byte[] value,in string fieldName, in int fixedLength) | |||||
public static byte[] ValiBytes(this byte[] value,in string fieldName, in int fixedLength) | |||||
{ | { | ||||
vali(value.Length, fieldName, fixedLength); | vali(value.Length, fieldName, fixedLength); | ||||
return value; | |||||
} | } | ||||
@@ -41,9 +43,10 @@ namespace JT808.Protocol.Extensions | |||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fieldName"></param> | /// <param name="fieldName"></param> | ||||
/// <param name="fixedLength"></param> | /// <param name="fixedLength"></param> | ||||
public static void ValiList<T>(this IEnumerable<T> value, in string fieldName, in int fixedLength) | |||||
public static IEnumerable<T> ValiList<T>(this IEnumerable<T> value, in string fieldName, in int fixedLength) | |||||
{ | { | ||||
vali(value.Count(), fieldName, fixedLength); | vali(value.Count(), fieldName, fixedLength); | ||||
return value; | |||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -90,8 +90,4 @@ | |||||
<DependentUpon>JT808PackageExtensionsTemplate.tt</DependentUpon> | <DependentUpon>JT808PackageExtensionsTemplate.tt</DependentUpon> | ||||
</Compile> | </Compile> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" /> | |||||
</ItemGroup> | |||||
</Project> | </Project> |
@@ -12,7 +12,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0001 : JT808Bodies,IJT808MessagePackFormatter<JT808_0x0001>, IJT808Analyze | public class JT808_0x0001 : JT808Bodies,IJT808MessagePackFormatter<JT808_0x0001>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0001 | |||||
/// </summary> | |||||
public override ushort MsgId => 0x0001; | public override ushort MsgId => 0x0001; | ||||
/// <summary> | |||||
/// 终端通用应答 | |||||
/// </summary> | |||||
public override string Description => "终端通用应答"; | public override string Description => "终端通用应答"; | ||||
/// <summary> | /// <summary> | ||||
/// 应答流水号 | /// 应答流水号 | ||||
@@ -31,7 +37,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 0:成功/确认;1:失败;2:消息有误;3:不支持 | /// 0:成功/确认;1:失败;2:消息有误;3:不支持 | ||||
/// </summary> | /// </summary> | ||||
public JT808TerminalResult TerminalResult { get; set; } | public JT808TerminalResult TerminalResult { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0001 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0001 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0001 jT808_0X0001 = new JT808_0x0001(); | JT808_0x0001 jT808_0X0001 = new JT808_0x0001(); | ||||
@@ -40,14 +51,24 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X0001.TerminalResult = (JT808TerminalResult)reader.ReadByte(); | jT808_0X0001.TerminalResult = (JT808TerminalResult)reader.ReadByte(); | ||||
return jT808_0X0001; | return jT808_0X0001; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0001 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0001 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt16(value.ReplyMsgNum); | writer.WriteUInt16(value.ReplyMsgNum); | ||||
writer.WriteUInt16(value.ReplyMsgId); | writer.WriteUInt16(value.ReplyMsgId); | ||||
writer.WriteByte((byte)value.TerminalResult); | writer.WriteByte((byte)value.TerminalResult); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
var replyMsgNum = reader.ReadUInt16(); | var replyMsgNum = reader.ReadUInt16(); | ||||
@@ -5,9 +5,17 @@ | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0002 : JT808Bodies | public class JT808_0x0002 : JT808Bodies | ||||
{ | { | ||||
/// <summary> | |||||
/// 跳过数据体序列化 | |||||
/// </summary> | |||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
/// <summary> | |||||
/// 0x0002 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0002; | public override ushort MsgId { get; } = 0x0002; | ||||
/// <summary> | |||||
/// 终端心跳 | |||||
/// </summary> | |||||
public override string Description => "终端心跳"; | public override string Description => "终端心跳"; | ||||
} | } | ||||
} | } |
@@ -9,9 +9,13 @@ | |||||
/// 跳过数据体序列化 | /// 跳过数据体序列化 | ||||
/// </summary> | /// </summary> | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
/// <summary> | |||||
/// 0x0003 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0003; | public override ushort MsgId { get; } = 0x0003; | ||||
/// <summary> | |||||
/// 终端注销 | |||||
/// </summary> | |||||
public override string Description => "终端注销"; | public override string Description => "终端注销"; | ||||
} | } | ||||
} | } |
@@ -12,9 +12,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// 跳过数据体序列化 | /// 跳过数据体序列化 | ||||
/// </summary> | /// </summary> | ||||
public override bool SkipSerialization { get; set; } = true; | public override bool SkipSerialization { get; set; } = true; | ||||
/// <summary> | |||||
/// 0x0004 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0004; | public override ushort MsgId { get; } = 0x0004; | ||||
/// <summary> | |||||
/// 查询服务器时间请求 | |||||
/// </summary> | |||||
public override string Description => "查询服务器时间请求"; | public override string Description => "查询服务器时间请求"; | ||||
} | } | ||||
} | } |
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0005 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0005>, IJT808_2019_Version, IJT808Analyze | public class JT808_0x0005 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0005>, IJT808_2019_Version, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0005 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0005; | public override ushort MsgId { get; } = 0x0005; | ||||
/// <summary> | |||||
/// 终端补传分包请求 | |||||
/// </summary> | |||||
public override string Description => "终端补传分包请求"; | public override string Description => "终端补传分包请求"; | ||||
/// <summary> | /// <summary> | ||||
/// 原始消息流水号 | /// 原始消息流水号 | ||||
@@ -31,7 +37,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 重传包序号顺序排列,如“包 ID1 包 ID2......包 IDn”。 | /// 重传包序号顺序排列,如“包 ID1 包 ID2......包 IDn”。 | ||||
/// </summary> | /// </summary> | ||||
public byte[] AgainPackageData { get; set; } | public byte[] AgainPackageData { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0005 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0005 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0005 value = new JT808_0x0005(); | JT808_0x0005 value = new JT808_0x0005(); | ||||
@@ -47,6 +58,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.AgainPackageData = reader.ReadArray(value.AgainPackageCount * 2).ToArray(); | value.AgainPackageData = reader.ReadArray(value.AgainPackageCount * 2).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0005 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0005 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt16(value.OriginalMsgNum); | writer.WriteUInt16(value.OriginalMsgNum); | ||||
@@ -60,7 +77,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
writer.WriteArray(value.AgainPackageData); | writer.WriteArray(value.AgainPackageData); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
var originalMsgNum = reader.ReadUInt16(); | var originalMsgNum = reader.ReadUInt16(); | ||||
@@ -14,7 +14,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0100 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0100>, IJT808_2019_Version,IJT808Analyze | public class JT808_0x0100 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0100>, IJT808_2019_Version,IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0100 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0100; | public override ushort MsgId { get; } = 0x0100; | ||||
/// <summary> | |||||
/// 终端注册 | |||||
/// </summary> | |||||
public override string Description => "终端注册"; | public override string Description => "终端注册"; | ||||
/// <summary> | /// <summary> | ||||
/// 省域 ID | /// 省域 ID | ||||
@@ -66,7 +72,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 否则,表示公安交通管理部门颁发的机动车号牌。 | /// 否则,表示公安交通管理部门颁发的机动车号牌。 | ||||
/// </summary> | /// </summary> | ||||
public string PlateNo { get; set; } | public string PlateNo { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0100 jT808_0X0100 = new JT808_0x0100(); | JT808_0x0100 jT808_0X0100 = new JT808_0x0100(); | ||||
@@ -88,26 +99,37 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X0100.PlateNo = reader.ReadRemainStringContent(); | jT808_0X0100.PlateNo = reader.ReadRemainStringContent(); | ||||
return jT808_0X0100; | return jT808_0X0100; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0100 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0100 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt16(value.AreaID); | writer.WriteUInt16(value.AreaID); | ||||
writer.WriteUInt16(value.CityOrCountyId); | writer.WriteUInt16(value.CityOrCountyId); | ||||
if (writer.Version == JT808Version.JTT2019) | if (writer.Version == JT808Version.JTT2019) | ||||
{ | { | ||||
writer.WriteString(value.MakerId.PadLeft(11, '0')); | |||||
writer.WriteString(value.TerminalModel.PadLeft(30, '0')); | |||||
writer.WriteString(value.TerminalId.PadLeft(30, '0')); | |||||
writer.WriteString(value.MakerId.PadLeft(11, '0').ValiString(nameof(value.MakerId),11)); | |||||
writer.WriteString(value.TerminalModel.PadLeft(30, '0').ValiString(nameof(value.TerminalModel), 30)); | |||||
writer.WriteString(value.TerminalId.PadLeft(30, '0').ValiString(nameof(value.TerminalId), 30)); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
writer.WriteString(value.MakerId.PadRight(5, '0')); | |||||
writer.WriteString(value.TerminalModel.PadRight(20, '0')); | |||||
writer.WriteString(value.TerminalId.PadRight(7, '0')); | |||||
writer.WriteString(value.MakerId.PadRight(5, '0').ValiString(nameof(value.MakerId), 5)); | |||||
writer.WriteString(value.TerminalModel.PadRight(20, '0').ValiString(nameof(value.TerminalModel), 20)); | |||||
writer.WriteString(value.TerminalId.PadRight(7, '0').ValiString(nameof(value.TerminalId), 7)); | |||||
} | } | ||||
writer.WriteByte(value.PlateColor); | writer.WriteByte(value.PlateColor); | ||||
writer.WriteString(value.PlateNo); | writer.WriteString(value.PlateNo); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0100 jT808_0X0100 = new JT808_0x0100(); | JT808_0x0100 jT808_0X0100 = new JT808_0x0100(); | ||||
@@ -13,7 +13,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0102 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0102>, IJT808_2019_Version, IJT808Analyze | public class JT808_0x0102 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0102>, IJT808_2019_Version, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0102 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0102; | public override ushort MsgId { get; } = 0x0102; | ||||
/// <summary> | |||||
/// 终端鉴权 | |||||
/// </summary> | |||||
public override string Description => "终端鉴权"; | public override string Description => "终端鉴权"; | ||||
/// <summary> | /// <summary> | ||||
/// 鉴权码 | /// 鉴权码 | ||||
@@ -32,7 +38,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 软件版本号 长度20 后补 "0x00" 2019版本 | /// 软件版本号 长度20 后补 "0x00" 2019版本 | ||||
/// </summary> | /// </summary> | ||||
public string SoftwareVersion { get; set; } | public string SoftwareVersion { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0102 jT808_0X0102 = new JT808_0x0102(); | JT808_0x0102 jT808_0X0102 = new JT808_0x0102(); | ||||
@@ -50,7 +61,12 @@ namespace JT808.Protocol.MessageBody | |||||
return jT808_0X0102; | return jT808_0X0102; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0102 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0102 value, IJT808Config config) | ||||
{ | { | ||||
if (writer.Version == JT808Version.JTT2019) | if (writer.Version == JT808Version.JTT2019) | ||||
@@ -59,14 +75,19 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteString(value.Code); | writer.WriteString(value.Code); | ||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CodeLengthPosition - 1), CodeLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CodeLengthPosition - 1), CodeLengthPosition); | ||||
writer.WriteString(value.IMEI); | writer.WriteString(value.IMEI); | ||||
writer.WriteString(value.SoftwareVersion.PadRight(20,'0')); | |||||
writer.WriteString(value.SoftwareVersion.PadRight(20,'0').ValiString(nameof(value.SoftwareVersion),20)); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
writer.WriteString(value.Code); | writer.WriteString(value.Code); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0102 jT808_0X0102 = new JT808_0x0102(); | JT808_0x0102 jT808_0X0102 = new JT808_0x0102(); | ||||
@@ -14,7 +14,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0104 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0104>, IJT808Analyze | public class JT808_0x0104 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0104>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0104 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0104; | public override ushort MsgId { get; } = 0x0104; | ||||
/// <summary> | |||||
/// 查询终端参数应答 | |||||
/// </summary> | |||||
public override string Description => "查询终端参数应答"; | public override string Description => "查询终端参数应答"; | ||||
/// <summary> | /// <summary> | ||||
/// 应答流水号 | /// 应答流水号 | ||||
@@ -29,7 +35,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 参数列表 | /// 参数列表 | ||||
/// </summary> | /// </summary> | ||||
public IList<JT808_0x8103_BodyBase> ParamList { get; set; } | public IList<JT808_0x8103_BodyBase> ParamList { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0104 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0104 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0104 jT808_0x0104 = new JT808_0x0104(); | JT808_0x0104 jT808_0x0104 = new JT808_0x0104(); | ||||
@@ -52,7 +63,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0x0104; | return jT808_0x0104; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0104 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0104 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt16(value.MsgNum); | writer.WriteUInt16(value.MsgNum); | ||||
@@ -63,7 +79,12 @@ namespace JT808.Protocol.MessageBody | |||||
JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, item, config); | JT808MessagePackFormatterResolverExtensions.JT808DynamicSerialize(obj, ref writer, item, config); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0104 jT808_0x0104 = new JT808_0x0104(); | JT808_0x0104 jT808_0x0104 = new JT808_0x0104(); | ||||
@@ -15,8 +15,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0107 : JT808Bodies,IJT808MessagePackFormatter<JT808_0x0107>, IJT808_2019_Version,IJT808Analyze | public class JT808_0x0107 : JT808Bodies,IJT808MessagePackFormatter<JT808_0x0107>, IJT808_2019_Version,IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0107 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0107; | public override ushort MsgId { get; } = 0x0107; | ||||
/// <summary> | |||||
/// 查询终端属性应答 | |||||
/// </summary> | |||||
public override string Description => "查询终端属性应答"; | public override string Description => "查询终端属性应答"; | ||||
/// <summary> | /// <summary> | ||||
/// 终端类型 | /// 终端类型 | ||||
@@ -88,7 +93,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// bit7,0:不支持其他通信方式, 1:支持其他通信方式 | /// bit7,0:不支持其他通信方式, 1:支持其他通信方式 | ||||
/// </summary> | /// </summary> | ||||
public byte CommunicationModule { get; set; } | public byte CommunicationModule { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0107 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0107 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0107 jT808_0X0107 = new JT808_0x0107(); | JT808_0x0107 jT808_0X0107 = new JT808_0x0107(); | ||||
@@ -114,23 +124,28 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X0107.CommunicationModule = reader.ReadByte(); | jT808_0X0107.CommunicationModule = reader.ReadByte(); | ||||
return jT808_0X0107; | return jT808_0X0107; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0107 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0107 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt16(value.TerminalType); | writer.WriteUInt16(value.TerminalType); | ||||
if (writer.Version == JT808Version.JTT2019) | if (writer.Version == JT808Version.JTT2019) | ||||
{ | { | ||||
writer.WriteString(value.MakerId.PadLeft(11, '0')); | |||||
writer.WriteString(value.TerminalModel.PadLeft(30, '0')); | |||||
writer.WriteString(value.TerminalId.PadLeft(30, '0')); | |||||
writer.WriteString(value.MakerId.PadLeft(11, '0').ValiString(nameof(value.MakerId),11)); | |||||
writer.WriteString(value.TerminalModel.PadLeft(30, '0').ValiString(nameof(value.TerminalModel), 30)); | |||||
writer.WriteString(value.TerminalId.PadLeft(30, '0').ValiString(nameof(value.TerminalId), 30)); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
writer.WriteString(value.MakerId.PadRight(5, '0')); | |||||
writer.WriteString(value.TerminalModel.PadRight(20, '0')); | |||||
writer.WriteString(value.TerminalId.PadRight(7, '0')); | |||||
writer.WriteString(value.MakerId.PadRight(5, '0').ValiString(nameof(value.MakerId), 5)); | |||||
writer.WriteString(value.TerminalModel.PadRight(20, '0').ValiString(nameof(value.TerminalModel), 20)); | |||||
writer.WriteString(value.TerminalId.PadRight(7, '0').ValiString(nameof(value.TerminalId), 7)); | |||||
} | } | ||||
writer.WriteBCD(value.Terminal_SIM_ICCID, 20); | |||||
writer.WriteBCD(value.Terminal_SIM_ICCID.ValiString(nameof(value.Terminal_SIM_ICCID), 20), 20); | |||||
writer.WriteByte((byte)value.Terminal_Hardware_Version_Num.Length); | writer.WriteByte((byte)value.Terminal_Hardware_Version_Num.Length); | ||||
writer.WriteString(value.Terminal_Hardware_Version_Num); | writer.WriteString(value.Terminal_Hardware_Version_Num); | ||||
writer.WriteByte((byte)value.Terminal_Firmware_Version_Num.Length); | writer.WriteByte((byte)value.Terminal_Firmware_Version_Num.Length); | ||||
@@ -138,7 +153,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteByte(value.GNSSModule); | writer.WriteByte(value.GNSSModule); | ||||
writer.WriteByte(value.CommunicationModule); | writer.WriteByte(value.CommunicationModule); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0107 jT808_0X0107 = new JT808_0x0107(); | JT808_0x0107 jT808_0X0107 = new JT808_0x0107(); | ||||
@@ -12,7 +12,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0108 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0108>, IJT808Analyze | public class JT808_0x0108 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0108>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0108 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0108; | public override ushort MsgId { get; } = 0x0108; | ||||
/// <summary> | |||||
/// 终端升级结果通知 | |||||
/// </summary> | |||||
public override string Description => "终端升级结果通知"; | public override string Description => "终端升级结果通知"; | ||||
/// <summary> | /// <summary> | ||||
/// 升级类型 | /// 升级类型 | ||||
@@ -25,7 +31,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 0:成功,1:失败,2:取消 | /// 0:成功,1:失败,2:取消 | ||||
/// </summary> | /// </summary> | ||||
public JT808UpgradeResult UpgradeResult { get; set; } | public JT808UpgradeResult UpgradeResult { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0108 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0108 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0108 jT808_0X0108 = new JT808_0x0108(); | JT808_0x0108 jT808_0X0108 = new JT808_0x0108(); | ||||
@@ -33,13 +44,23 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X0108.UpgradeResult = (JT808UpgradeResult)reader.ReadByte(); | jT808_0X0108.UpgradeResult = (JT808UpgradeResult)reader.ReadByte(); | ||||
return jT808_0X0108; | return jT808_0X0108; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0108 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0108 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte((byte)value.UpgradeType); | writer.WriteByte((byte)value.UpgradeType); | ||||
writer.WriteByte((byte)value.UpgradeResult); | writer.WriteByte((byte)value.UpgradeResult); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0108 jT808_0X0108 = new JT808_0x0108(); | JT808_0x0108 jT808_0X0108 = new JT808_0x0108(); | ||||
@@ -16,7 +16,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public class JT808_0x0200 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0200>, IJT808Analyze | public class JT808_0x0200 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0200>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// 0x0200 | |||||
/// </summary> | |||||
public override ushort MsgId { get; } = 0x0200; | public override ushort MsgId { get; } = 0x0200; | ||||
/// <summary> | |||||
/// 位置信息汇报 | |||||
/// </summary> | |||||
public override string Description => "位置信息汇报"; | public override string Description => "位置信息汇报"; | ||||
/// <summary> | /// <summary> | ||||
/// 报警标志 | /// 报警标志 | ||||
@@ -74,7 +80,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// 依赖平台录入的设备类型 | /// 依赖平台录入的设备类型 | ||||
/// </summary> | /// </summary> | ||||
public Dictionary<byte, JT808_0x0200_CustomBodyBase> JT808CustomLocationAttachData { get; set; } | public Dictionary<byte, JT808_0x0200_CustomBodyBase> JT808CustomLocationAttachData { get; set; } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200 jT808_0X0200 = new JT808_0x0200(); | JT808_0x0200 jT808_0X0200 = new JT808_0x0200(); | ||||
@@ -145,7 +156,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return jT808_0X0200; | return jT808_0X0200; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteUInt32(value.AlarmFlag); | writer.WriteUInt32(value.AlarmFlag); | ||||
@@ -205,7 +221,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200 value = new JT808_0x0200(); | JT808_0x0200 value = new JT808_0x0200(); | ||||
@@ -7,9 +7,18 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 里程 | |||||
/// </summary> | |||||
public class JT808_0x0200_0x01 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x01>, IJT808Analyze | public class JT808_0x0200_0x01 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x01>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | |||||
/// JT808_0x0200_0x01 | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x01; | public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x01; | ||||
/// <summary> | |||||
/// 4 byte | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 4; | public override byte AttachInfoLength { get; set; } = 4; | ||||
/// <summary> | /// <summary> | ||||
/// 里程 | /// 里程 | ||||
@@ -20,7 +29,12 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
[IgnoreDataMember] | [IgnoreDataMember] | ||||
public double ConvertMileage => Mileage / 10.0; | public double ConvertMileage => Mileage / 10.0; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x01 value = new JT808_0x0200_0x01(); | JT808_0x0200_0x01 value = new JT808_0x0200_0x01(); | ||||
@@ -31,7 +45,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.Mileage = reader.ReadInt32(); | value.Mileage = reader.ReadInt32(); | ||||
writer.WriteNumber($"[{value.Mileage.ReadNumber()}]里程", value.Mileage); | writer.WriteNumber($"[{value.Mileage.ReadNumber()}]里程", value.Mileage); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x01 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x01 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x01 value = new JT808_0x0200_0x01(); | JT808_0x0200_0x01 value = new JT808_0x0200_0x01(); | ||||
@@ -40,7 +59,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.Mileage = reader.ReadInt32(); | value.Mileage = reader.ReadInt32(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x01 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x01 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -7,6 +7,9 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 油量 | |||||
/// </summary> | |||||
public class JT808_0x0200_0x02 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x02>, IJT808Analyze | public class JT808_0x0200_0x02 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x02>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -18,9 +21,20 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
[IgnoreDataMember] | [IgnoreDataMember] | ||||
public double ConvertOil => Oil / 10.0; | public double ConvertOil => Oil / 10.0; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x02 | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x02; | public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x02; | ||||
/// <summary> | |||||
/// 2 byte | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 2; | public override byte AttachInfoLength { get; set; } = 2; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x02 value = new JT808_0x0200_0x02(); | JT808_0x0200_0x02 value = new JT808_0x0200_0x02(); | ||||
@@ -31,7 +45,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.Oil = reader.ReadUInt16(); | value.Oil = reader.ReadUInt16(); | ||||
writer.WriteNumber($"[{value.Oil.ReadNumber()}]油量", value.Oil); | writer.WriteNumber($"[{value.Oil.ReadNumber()}]油量", value.Oil); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x02 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x02 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x02 value = new JT808_0x0200_0x02(); | JT808_0x0200_0x02 value = new JT808_0x0200_0x02(); | ||||
@@ -40,7 +59,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.Oil = reader.ReadUInt16(); | value.Oil = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x02 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x02 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -7,7 +7,9 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 行驶记录功能获取的速度 | |||||
/// </summary> | |||||
public class JT808_0x0200_0x03 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x03>, IJT808Analyze | public class JT808_0x0200_0x03 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x03>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -19,9 +21,20 @@ namespace JT808.Protocol.MessageBody | |||||
/// </summary> | /// </summary> | ||||
[IgnoreDataMember] | [IgnoreDataMember] | ||||
public double ConvertSpeed => Speed / 10.0; | public double ConvertSpeed => Speed / 10.0; | ||||
/// <summary> | |||||
/// JT808_0x0200_0x03 | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x03; | public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x03; | ||||
/// <summary> | |||||
/// 2 byte | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 2; | public override byte AttachInfoLength { get; set; } = 2; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x03 value = new JT808_0x0200_0x03(); | JT808_0x0200_0x03 value = new JT808_0x0200_0x03(); | ||||
@@ -32,7 +45,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.Speed = reader.ReadUInt16(); | value.Speed = reader.ReadUInt16(); | ||||
writer.WriteNumber($"[{value.Speed.ReadNumber()}]速度", value.Speed); | writer.WriteNumber($"[{value.Speed.ReadNumber()}]速度", value.Speed); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x03 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x03 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x03 value = new JT808_0x0200_0x03(); | JT808_0x0200_0x03 value = new JT808_0x0200_0x03(); | ||||
@@ -41,7 +59,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.Speed = reader.ReadUInt16(); | value.Speed = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x03 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x03 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -7,15 +7,29 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 人工确认报警事件 | |||||
/// </summary> | |||||
public class JT808_0x0200_0x04 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x04>, IJT808Analyze | public class JT808_0x0200_0x04 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x04>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 需要人工确认报警事件的 ID,从 1 开始计数 | /// 需要人工确认报警事件的 ID,从 1 开始计数 | ||||
/// </summary> | /// </summary> | ||||
public ushort EventId { get; set; } | public ushort EventId { get; set; } | ||||
/// <summary> | |||||
/// JT808_0x0200_0x04 | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x04; | public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x04; | ||||
/// <summary> | |||||
/// 2 byte | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 2; | public override byte AttachInfoLength { get; set; } = 2; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x04 value = new JT808_0x0200_0x04(); | JT808_0x0200_0x04 value = new JT808_0x0200_0x04(); | ||||
@@ -26,7 +40,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.EventId = reader.ReadUInt16(); | value.EventId = reader.ReadUInt16(); | ||||
writer.WriteNumber($"[{value.EventId.ReadNumber()}]报警事件ID", value.EventId); | writer.WriteNumber($"[{value.EventId.ReadNumber()}]报警事件ID", value.EventId); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x04 value = new JT808_0x0200_0x04(); | JT808_0x0200_0x04 value = new JT808_0x0200_0x04(); | ||||
@@ -35,7 +54,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.EventId = reader.ReadUInt16(); | value.EventId = reader.ReadUInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x04 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x04 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -17,9 +17,20 @@ namespace JT808.Protocol.MessageBody | |||||
/// 胎压 | /// 胎压 | ||||
/// </summary> | /// </summary> | ||||
public byte[] TirePressure { get; set; } | public byte[] TirePressure { get; set; } | ||||
/// <summary> | |||||
/// JT808_0x0200_0x05 | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x05; | public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x05; | ||||
/// <summary> | |||||
/// 30 byte | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 30; | public override byte AttachInfoLength { get; set; } = 30; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x05 value = new JT808_0x0200_0x05(); | JT808_0x0200_0x05 value = new JT808_0x0200_0x05(); | ||||
@@ -30,7 +41,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.TirePressure = reader.ReadArray(value.AttachInfoLength).ToArray(); | value.TirePressure = reader.ReadArray(value.AttachInfoLength).ToArray(); | ||||
writer.WriteString($"胎压", value.TirePressure.ToHexString()); | writer.WriteString($"胎压", value.TirePressure.ToHexString()); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x05 value = new JT808_0x0200_0x05(); | JT808_0x0200_0x05 value = new JT808_0x0200_0x05(); | ||||
@@ -39,7 +55,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.TirePressure = reader.ReadArray(value.AttachInfoLength).ToArray(); | value.TirePressure = reader.ReadArray(value.AttachInfoLength).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x05 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x05 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -17,9 +17,20 @@ namespace JT808.Protocol.MessageBody | |||||
/// 车厢温度 | /// 车厢温度 | ||||
/// </summary> | /// </summary> | ||||
public short CarTemperature { get; set; } | public short CarTemperature { get; set; } | ||||
/// <summary> | |||||
/// JT808_0x0200_0x06 | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x06; | public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x06; | ||||
/// <summary> | |||||
/// 2 byte | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 2; | public override byte AttachInfoLength { get; set; } = 2; | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x06 value = new JT808_0x0200_0x06(); | JT808_0x0200_0x06 value = new JT808_0x0200_0x06(); | ||||
@@ -30,7 +41,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.CarTemperature = reader.ReadInt16(); | value.CarTemperature = reader.ReadInt16(); | ||||
writer.WriteNumber($"[{value.CarTemperature.ReadNumber()}]车厢温度", value.CarTemperature); | writer.WriteNumber($"[{value.CarTemperature.ReadNumber()}]车厢温度", value.CarTemperature); | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x06 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x06 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x06 value = new JT808_0x0200_0x06(); | JT808_0x0200_0x06 value = new JT808_0x0200_0x06(); | ||||
@@ -39,7 +55,12 @@ namespace JT808.Protocol.MessageBody | |||||
value.CarTemperature =reader.ReadInt16(); | value.CarTemperature =reader.ReadInt16(); | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x06 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x06 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -7,6 +7,9 @@ using System.Text.Json; | |||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
{ | { | ||||
/// <summary> | |||||
/// 超速报警附加信息 | |||||
/// </summary> | |||||
public class JT808_0x0200_0x11 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x11>, IJT808Analyze | public class JT808_0x0200_0x11 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x11>, IJT808Analyze | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
@@ -24,7 +27,13 @@ namespace JT808.Protocol.MessageBody | |||||
/// 若位置类型为 0,无该字段 | /// 若位置类型为 0,无该字段 | ||||
/// </summary> | /// </summary> | ||||
public uint AreaId { get; set; } | public uint AreaId { get; set; } | ||||
/// <summary> | |||||
/// JT808_0x0200_0x11 | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x11; | public override byte AttachInfoId { get; set; } = JT808Constants.JT808_0x0200_0x11; | ||||
/// <summary> | |||||
/// 1或5 byte | |||||
/// </summary> | |||||
public override byte AttachInfoLength | public override byte AttachInfoLength | ||||
{ | { | ||||
get | get | ||||
@@ -40,7 +49,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
set { } | set { } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="writer"></param> | |||||
/// <param name="config"></param> | |||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x11 value = new JT808_0x0200_0x11(); | JT808_0x0200_0x11 value = new JT808_0x0200_0x11(); | ||||
@@ -56,7 +70,12 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteNumber($"[{value.AreaId.ReadNumber()}]区域或路段ID", value.AreaId); | writer.WriteNumber($"[{value.AreaId.ReadNumber()}]区域或路段ID", value.AreaId); | ||||
} | } | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0x11 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x0200_0x11 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x0200_0x11 value = new JT808_0x0200_0x11(); | JT808_0x0200_0x11 value = new JT808_0x0200_0x11(); | ||||
@@ -69,7 +88,12 @@ namespace JT808.Protocol.MessageBody | |||||
} | } | ||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x11 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x11 value, IJT808Config config) | ||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
@@ -83,7 +83,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="count"></param> | /// <param name="count"></param> | ||||
/// <param name="position">跳过前的内存位置</param> | /// <param name="position">跳过前的内存位置</param> | ||||
public void Skip(int count, out int position) | |||||
public void Skip(in int count, out int position) | |||||
{ | { | ||||
position = writer.WrittenCount; | position = writer.WrittenCount; | ||||
var span = writer.Free; | var span = writer.Free; | ||||
@@ -99,7 +99,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// <param name="count"></param> | /// <param name="count"></param> | ||||
/// <param name="position">跳过前的内存位置</param> | /// <param name="position">跳过前的内存位置</param> | ||||
/// <param name="fullValue">用什么数值填充跳过的内存块</param> | /// <param name="fullValue">用什么数值填充跳过的内存块</param> | ||||
public void Skip(int count,out int position, byte fullValue = 0x00) | |||||
public void Skip(in int count,out int position, in byte fullValue = 0x00) | |||||
{ | { | ||||
position = writer.WrittenCount; | position = writer.WrittenCount; | ||||
var span = writer.Free; | var span = writer.Free; | ||||
@@ -113,7 +113,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入一个字符 | /// 写入一个字符 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteChar(char value) | |||||
public void WriteChar(in char value) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
span[0] = (byte)value; | span[0] = (byte)value; | ||||
@@ -123,7 +123,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入一个字节 | /// 写入一个字节 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteByte(byte value) | |||||
public void WriteByte(in byte value) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
span[0] = value; | span[0] = value; | ||||
@@ -133,7 +133,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入两个字节的有符号数值类型 | /// 写入两个字节的有符号数值类型 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteInt16(short value) | |||||
public void WriteInt16(in short value) | |||||
{ | { | ||||
BinaryPrimitives.WriteInt16BigEndian(writer.Free, value); | BinaryPrimitives.WriteInt16BigEndian(writer.Free, value); | ||||
writer.Advance(2); | writer.Advance(2); | ||||
@@ -142,7 +142,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入两个字节的无符号数值类型 | /// 写入两个字节的无符号数值类型 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteUInt16(ushort value) | |||||
public void WriteUInt16(in ushort value) | |||||
{ | { | ||||
BinaryPrimitives.WriteUInt16BigEndian(writer.Free, value); | BinaryPrimitives.WriteUInt16BigEndian(writer.Free, value); | ||||
writer.Advance(2); | writer.Advance(2); | ||||
@@ -151,7 +151,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入四个字节的有符号数值类型 | /// 写入四个字节的有符号数值类型 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteInt32(int value) | |||||
public void WriteInt32(in int value) | |||||
{ | { | ||||
BinaryPrimitives.WriteInt32BigEndian(writer.Free, value); | BinaryPrimitives.WriteInt32BigEndian(writer.Free, value); | ||||
writer.Advance(4); | writer.Advance(4); | ||||
@@ -160,7 +160,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入四个字节的无符号数值类型 | /// 写入四个字节的无符号数值类型 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteUInt32(uint value) | |||||
public void WriteUInt32(in uint value) | |||||
{ | { | ||||
BinaryPrimitives.WriteUInt32BigEndian(writer.Free, value); | BinaryPrimitives.WriteUInt32BigEndian(writer.Free, value); | ||||
writer.Advance(4); | writer.Advance(4); | ||||
@@ -169,7 +169,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入八个字节的无符号数值类型 | /// 写入八个字节的无符号数值类型 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteUInt64(ulong value) | |||||
public void WriteUInt64(in ulong value) | |||||
{ | { | ||||
BinaryPrimitives.WriteUInt64BigEndian(writer.Free, value); | BinaryPrimitives.WriteUInt64BigEndian(writer.Free, value); | ||||
writer.Advance(8); | writer.Advance(8); | ||||
@@ -178,7 +178,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入八个字节的有符号数值类型 | /// 写入八个字节的有符号数值类型 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteInt64(long value) | |||||
public void WriteInt64(in long value) | |||||
{ | { | ||||
BinaryPrimitives.WriteInt64BigEndian(writer.Free, value); | BinaryPrimitives.WriteInt64BigEndian(writer.Free, value); | ||||
writer.Advance(8); | writer.Advance(8); | ||||
@@ -187,7 +187,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入字符串 | /// 写入字符串 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteString(string value) | |||||
public void WriteString(in string value) | |||||
{ | { | ||||
byte[] codeBytes = JT808Constants.Encoding.GetBytes(value); | byte[] codeBytes = JT808Constants.Encoding.GetBytes(value); | ||||
codeBytes.CopyTo(writer.Free); | codeBytes.CopyTo(writer.Free); | ||||
@@ -197,7 +197,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入数组 | /// 写入数组 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="src"></param> | /// <param name="src"></param> | ||||
public void WriteArray(ReadOnlySpan<byte> src) | |||||
public void WriteArray(in ReadOnlySpan<byte> src) | |||||
{ | { | ||||
src.CopyTo(writer.Free); | src.CopyTo(writer.Free); | ||||
writer.Advance(src.Length); | writer.Advance(src.Length); | ||||
@@ -207,7 +207,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteUInt16Return(ushort value, int position) | |||||
public void WriteUInt16Return(in ushort value, in int position) | |||||
{ | { | ||||
BinaryPrimitives.WriteUInt16BigEndian(writer.Written.Slice(position, 2), value); | BinaryPrimitives.WriteUInt16BigEndian(writer.Written.Slice(position, 2), value); | ||||
} | } | ||||
@@ -216,7 +216,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteInt16Return(short value, int position) | |||||
public void WriteInt16Return(in short value, in int position) | |||||
{ | { | ||||
BinaryPrimitives.WriteInt16BigEndian(writer.Written.Slice(position, 2), value); | BinaryPrimitives.WriteInt16BigEndian(writer.Written.Slice(position, 2), value); | ||||
} | } | ||||
@@ -225,7 +225,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteInt32Return(int value, int position) | |||||
public void WriteInt32Return(in int value, in int position) | |||||
{ | { | ||||
BinaryPrimitives.WriteInt32BigEndian(writer.Written.Slice(position, 4), value); | BinaryPrimitives.WriteInt32BigEndian(writer.Written.Slice(position, 4), value); | ||||
} | } | ||||
@@ -234,7 +234,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteUInt32Return(uint value, int position) | |||||
public void WriteUInt32Return(in uint value, in int position) | |||||
{ | { | ||||
BinaryPrimitives.WriteUInt32BigEndian(writer.Written.Slice(position, 4), value); | BinaryPrimitives.WriteUInt32BigEndian(writer.Written.Slice(position, 4), value); | ||||
} | } | ||||
@@ -244,7 +244,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteInt64Return(long value, int position) | |||||
public void WriteInt64Return(in long value, in int position) | |||||
{ | { | ||||
BinaryPrimitives.WriteInt64BigEndian(writer.Written.Slice(position, 8), value); | BinaryPrimitives.WriteInt64BigEndian(writer.Written.Slice(position, 8), value); | ||||
} | } | ||||
@@ -253,7 +253,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteUInt64Return(ulong value, int position) | |||||
public void WriteUInt64Return(in ulong value, in int position) | |||||
{ | { | ||||
BinaryPrimitives.WriteUInt64BigEndian(writer.Written.Slice(position, 8), value); | BinaryPrimitives.WriteUInt64BigEndian(writer.Written.Slice(position, 8), value); | ||||
} | } | ||||
@@ -262,7 +262,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteByteReturn(byte value, int position) | |||||
public void WriteByteReturn(in byte value, in int position) | |||||
{ | { | ||||
writer.Written[position] = value; | writer.Written[position] = value; | ||||
} | } | ||||
@@ -272,7 +272,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="len"></param> | /// <param name="len"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteBCDReturn(string value,int len, int position) | |||||
public void WriteBCDReturn(in string value, in int len, in int position) | |||||
{ | { | ||||
string bcdText = value ?? ""; | string bcdText = value ?? ""; | ||||
int startIndex = 0; | int startIndex = 0; | ||||
@@ -295,7 +295,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteStringReturn(string value, int position) | |||||
public void WriteStringReturn(in string value, in int position) | |||||
{ | { | ||||
Span<byte> codeBytes = JT808Constants.Encoding.GetBytes(value); | Span<byte> codeBytes = JT808Constants.Encoding.GetBytes(value); | ||||
codeBytes.CopyTo(writer.Written.Slice(position)); | codeBytes.CopyTo(writer.Written.Slice(position)); | ||||
@@ -305,7 +305,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="src"></param> | /// <param name="src"></param> | ||||
/// <param name="position"></param> | /// <param name="position"></param> | ||||
public void WriteArrayReturn(ReadOnlySpan<byte> src, int position) | |||||
public void WriteArrayReturn(in ReadOnlySpan<byte> src, in int position) | |||||
{ | { | ||||
src.CopyTo(writer.Written.Slice(position)); | src.CopyTo(writer.Written.Slice(position)); | ||||
} | } | ||||
@@ -314,7 +314,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime6(DateTime value, int fromBase = 16) | |||||
public void WriteDateTime6(in DateTime value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
span[0] = Convert.ToByte(value.ToString("yy"), fromBase); | span[0] = Convert.ToByte(value.ToString("yy"), fromBase); | ||||
@@ -330,7 +330,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime6(DateTime? value, int fromBase = 16) | |||||
public void WriteDateTime6(in DateTime? value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
if (value == null || value.HasValue) | if (value == null || value.HasValue) | ||||
@@ -358,7 +358,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime5(DateTime value, int fromBase = 16) | |||||
public void WriteDateTime5(in DateTime value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
span[0] = Convert.ToByte(value.ToString("HH"), fromBase); | span[0] = Convert.ToByte(value.ToString("HH"), fromBase); | ||||
@@ -374,7 +374,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime5(DateTime? value, int fromBase = 16) | |||||
public void WriteDateTime5(in DateTime? value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
if (value == null || value.HasValue) | if (value == null || value.HasValue) | ||||
@@ -400,7 +400,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入UTC日期类型 | /// 写入UTC日期类型 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteUTCDateTime(DateTime value) | |||||
public void WriteUTCDateTime(in DateTime value) | |||||
{ | { | ||||
ulong totalSecends = (ulong)(value.AddHours(-8) - JT808Constants.UTCBaseTime).TotalSeconds; | ulong totalSecends = (ulong)(value.AddHours(-8) - JT808Constants.UTCBaseTime).TotalSeconds; | ||||
var span = writer.Free; | var span = writer.Free; | ||||
@@ -417,7 +417,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime4(DateTime value, int fromBase = 16) | |||||
public void WriteDateTime4(in DateTime value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
var yearSpan=value.ToString("yyyy").AsSpan(); | var yearSpan=value.ToString("yyyy").AsSpan(); | ||||
@@ -433,7 +433,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime4(DateTime? value, int fromBase = 16) | |||||
public void WriteDateTime4(in DateTime? value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
if (value==null || value.HasValue) | if (value==null || value.HasValue) | ||||
@@ -459,7 +459,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime3(DateTime value, int fromBase = 16) | |||||
public void WriteDateTime3(in DateTime value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
span[0] = Convert.ToByte(value.ToString("yy"), fromBase); | span[0] = Convert.ToByte(value.ToString("yy"), fromBase); | ||||
@@ -473,7 +473,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="fromBase"></param> | /// <param name="fromBase"></param> | ||||
public void WriteDateTime3(DateTime? value, int fromBase = 16) | |||||
public void WriteDateTime3(in DateTime? value, in int fromBase = 16) | |||||
{ | { | ||||
var span = writer.Free; | var span = writer.Free; | ||||
if (value == null || value.HasValue) | if (value == null || value.HasValue) | ||||
@@ -495,7 +495,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="start"></param> | /// <param name="start"></param> | ||||
/// <param name="end"></param> | /// <param name="end"></param> | ||||
public void WriteXor(int start, int end) | |||||
public void WriteXor(in int start, in int end) | |||||
{ | { | ||||
if (start > end) | if (start > end) | ||||
{ | { | ||||
@@ -515,7 +515,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 将指定内存块进行或运算并写入一个字节 | /// 将指定内存块进行或运算并写入一个字节 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="start"></param> | /// <param name="start"></param> | ||||
public void WriteXor(int start) | |||||
public void WriteXor(in int start) | |||||
{ | { | ||||
if(writer.WrittenCount< start) | if(writer.WrittenCount< start) | ||||
{ | { | ||||
@@ -556,7 +556,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="len"></param> | /// <param name="len"></param> | ||||
public void WriteBCD(string value, int len) | |||||
public void WriteBCD(in string value, in int len) | |||||
{ | { | ||||
string bcdText = value ?? ""; | string bcdText = value ?? ""; | ||||
int startIndex = 0; | int startIndex = 0; | ||||
@@ -581,7 +581,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="len"></param> | /// <param name="len"></param> | ||||
public void WriteHex(string value, int len) | |||||
public void WriteHex(string value, in int len) | |||||
{ | { | ||||
value = value ?? ""; | value = value ?? ""; | ||||
value = value.Replace(" ", ""); | value = value.Replace(" ", ""); | ||||
@@ -614,7 +614,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入ASCII编码数据 | /// 写入ASCII编码数据 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
public void WriteASCII(string value) | |||||
public void WriteASCII(in string value) | |||||
{ | { | ||||
var spanFree = writer.Free; | var spanFree = writer.Free; | ||||
var bytes = Encoding.ASCII.GetBytes(value).AsSpan(); | var bytes = Encoding.ASCII.GetBytes(value).AsSpan(); | ||||
@@ -684,7 +684,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// </summary> | /// </summary> | ||||
/// <param name="value"></param> | /// <param name="value"></param> | ||||
/// <param name="len"></param> | /// <param name="len"></param> | ||||
public void WriteBigNumber(string value, int len) | |||||
public void WriteBigNumber(in string value, int len) | |||||
{ | { | ||||
var spanFree = writer.Free; | var spanFree = writer.Free; | ||||
ulong number = string.IsNullOrEmpty(value) ? 0 : (ulong)double.Parse(value); | ulong number = string.IsNullOrEmpty(value) ? 0 : (ulong)double.Parse(value); | ||||
@@ -716,7 +716,7 @@ namespace JT808.Protocol.MessagePack | |||||
/// 写入JT19056校验码 | /// 写入JT19056校验码 | ||||
/// </summary> | /// </summary> | ||||
/// <param name="currentPosition"></param> | /// <param name="currentPosition"></param> | ||||
public void WriteCarDVRCheckCode(int currentPosition) | |||||
public void WriteCarDVRCheckCode(in int currentPosition) | |||||
{ | { | ||||
var carDVRPackage = writer.Written.Slice(currentPosition, writer.WrittenCount- currentPosition); | var carDVRPackage = writer.Written.Slice(currentPosition, writer.WrittenCount- currentPosition); | ||||
byte calculateXorCheckCode = 0; | byte calculateXorCheckCode = 0; | ||||