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