Procházet zdrojové kódy

1.完善组包的长度校验

2.完善指令消息注释
tags/v2.3.6
SmallChi(Koike) před 4 roky
rodič
revize
5321f098d0
22 změnil soubory, kde provedl 1062 přidání a 147 odebrání
  1. +6
    -3
      src/JT808.Protocol/Extensions/JT808ValidationExtensions.cs
  2. +0
    -4
      src/JT808.Protocol/JT808.Protocol.csproj
  3. +608
    -38
      src/JT808.Protocol/JT808.Protocol.xml
  4. +24
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0001.cs
  5. +9
    -1
      src/JT808.Protocol/MessageBody/JT808_0x0002.cs
  6. +6
    -2
      src/JT808.Protocol/MessageBody/JT808_0x0003.cs
  7. +6
    -2
      src/JT808.Protocol/MessageBody/JT808_0x0004.cs
  8. +24
    -2
      src/JT808.Protocol/MessageBody/JT808_0x0005.cs
  9. +30
    -8
      src/JT808.Protocol/MessageBody/JT808_0x0100.cs
  10. +25
    -4
      src/JT808.Protocol/MessageBody/JT808_0x0102.cs
  11. +24
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0104.cs
  12. +31
    -11
      src/JT808.Protocol/MessageBody/JT808_0x0107.cs
  13. +24
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0108.cs
  14. +24
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0200.cs
  15. +27
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x01.cs
  16. +27
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x02.cs
  17. +27
    -4
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x03.cs
  18. +27
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x04.cs
  19. +24
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x05.cs
  20. +24
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x06.cs
  21. +27
    -3
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x11.cs
  22. +38
    -38
      src/JT808.Protocol/MessagePack/JT808MessagePackWriter.cs

+ 6
- 3
src/JT808.Protocol/Extensions/JT808ValidationExtensions.cs Zobrazit soubor

@@ -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>


+ 0
- 4
src/JT808.Protocol/JT808.Protocol.csproj Zobrazit soubor

@@ -90,8 +90,4 @@
<DependentUpon>JT808PackageExtensionsTemplate.tt</DependentUpon>
</Compile>
</ItemGroup>

<ItemGroup>
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
</ItemGroup>
</Project>

+ 608
- 38
src/JT808.Protocol/JT808.Protocol.xml
Diff nebyl zobrazen, protože je příliš veliký
Zobrazit soubor


+ 24
- 3
src/JT808.Protocol/MessageBody/JT808_0x0001.cs Zobrazit soubor

@@ -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();


+ 9
- 1
src/JT808.Protocol/MessageBody/JT808_0x0002.cs Zobrazit soubor

@@ -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 => "终端心跳";
}
}

+ 6
- 2
src/JT808.Protocol/MessageBody/JT808_0x0003.cs Zobrazit soubor

@@ -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 => "终端注销";
}
}

+ 6
- 2
src/JT808.Protocol/MessageBody/JT808_0x0004.cs Zobrazit soubor

@@ -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 => "查询服务器时间请求";
}
}

+ 24
- 2
src/JT808.Protocol/MessageBody/JT808_0x0005.cs Zobrazit soubor

@@ -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();


+ 30
- 8
src/JT808.Protocol/MessageBody/JT808_0x0100.cs Zobrazit soubor

@@ -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();


+ 25
- 4
src/JT808.Protocol/MessageBody/JT808_0x0102.cs Zobrazit soubor

@@ -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();


+ 24
- 3
src/JT808.Protocol/MessageBody/JT808_0x0104.cs Zobrazit soubor

@@ -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();


+ 31
- 11
src/JT808.Protocol/MessageBody/JT808_0x0107.cs Zobrazit soubor

@@ -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();


+ 24
- 3
src/JT808.Protocol/MessageBody/JT808_0x0108.cs Zobrazit soubor

@@ -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();


+ 24
- 3
src/JT808.Protocol/MessageBody/JT808_0x0200.cs Zobrazit soubor

@@ -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();


+ 27
- 3
src/JT808.Protocol/MessageBody/JT808_0x0200_0x01.cs Zobrazit soubor

@@ -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);


+ 27
- 3
src/JT808.Protocol/MessageBody/JT808_0x0200_0x02.cs Zobrazit soubor

@@ -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);


+ 27
- 4
src/JT808.Protocol/MessageBody/JT808_0x0200_0x03.cs Zobrazit soubor

@@ -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);


+ 27
- 3
src/JT808.Protocol/MessageBody/JT808_0x0200_0x04.cs Zobrazit soubor

@@ -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);


+ 24
- 3
src/JT808.Protocol/MessageBody/JT808_0x0200_0x05.cs Zobrazit soubor

@@ -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);


+ 24
- 3
src/JT808.Protocol/MessageBody/JT808_0x0200_0x06.cs Zobrazit soubor

@@ -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);


+ 27
- 3
src/JT808.Protocol/MessageBody/JT808_0x0200_0x11.cs Zobrazit soubor

@@ -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);


+ 38
- 38
src/JT808.Protocol/MessagePack/JT808MessagePackWriter.cs Zobrazit soubor

@@ -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;


Načítá se…
Zrušit
Uložit