Bladeren bron

修复0x1504车辆行驶记录信息

tags/v2.2.1
yedajiang44 3 jaren geleden
bovenliggende
commit
bf4ec5383e
3 gewijzigde bestanden met toevoegingen van 23 en 23 verwijderingen
  1. +11
    -13
      src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1504Test.cs
  2. +1
    -0
      src/JT809.Protocol/JT809.Protocol.xml
  3. +11
    -10
      src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1504.cs

+ 11
- 13
src/JT809.Protocol.Test/JT809SubMessageBody/JT809_0x1500_0x1504Test.cs Bestand weergeven

@@ -12,7 +12,7 @@ using JT809.Protocol.Internal;

namespace JT809.Protocol.Test.JT809SubMessageBody
{
public class JT809_0x1500_0x1504Test
public class JT809_0x1500_0x1504Test
{
private JT809Serializer JT809Serializer = new JT809Serializer();
private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 });
@@ -21,21 +21,19 @@ namespace JT809.Protocol.Test.JT809SubMessageBody
{
JT809_0x1500_0x1504 jT809_0x1500_0x1504 = new JT809_0x1500_0x1504
{
CommandType= JT809CommandType.记录仪唯一性编号,
TraveldataInfo="123456",
TraveldataInfo = "557AC40014002003251026012003251026010000123400123456A9".ToHexBytes(),
};
var hex = JT809Serializer.Serialize(jT809_0x1500_0x1504).ToHexString();
Assert.Equal("0700000006313233343536", hex);
Assert.Equal("0000001B557AC40014002003251026012003251026010000123400123456A9", hex);
}

[Fact]
public void Test2()
{
var bytes = "0700000006313233343536".ToHexBytes();
var bytes = "0000001B557AC40014002003251026012003251026010000123400123456A9".ToHexBytes();
JT809_0x1500_0x1504 jT809_0x1500_0x1504 = JT809Serializer.Deserialize<JT809_0x1500_0x1504>(bytes);
Assert.Equal(JT809CommandType.记录仪唯一性编号, jT809_0x1500_0x1504.CommandType);
Assert.Equal("123456", jT809_0x1500_0x1504.TraveldataInfo);
Assert.Equal(6u, jT809_0x1500_0x1504.TraveldataLength);
Assert.Equal("557AC40014002003251026012003251026010000123400123456A9".ToHexBytes(), jT809_0x1500_0x1504.TraveldataInfo);
Assert.Equal(0x1bu, jT809_0x1500_0x1504.TraveldataLength);
}

[Fact]
@@ -44,22 +42,22 @@ namespace JT809.Protocol.Test.JT809SubMessageBody
JT809_0x1500_0x1504 jT809_0x1500_0x1504 = new JT809_0x1500_0x1504
{
CommandType = JT809CommandType.记录仪唯一性编号,
TraveldataInfo = "123456",
TraveldataInfo = "557AC40014002003251026012003251026010000123400123456A9".ToHexBytes(),
SourceMsgSn = 1,
SourceDataType = 12,
};
var hex = JT809_2019_Serializer.Serialize(jT809_0x1500_0x1504).ToHexString();
Assert.Equal("000C000000010700000006313233343536", hex);
Assert.Equal("000C00000001070000001B557AC40014002003251026012003251026010000123400123456A9", hex);
}

[Fact]
public void Test_2019_2()
{
var bytes = "000C000000010700000006313233343536".ToHexBytes();
var bytes = "000C00000001070000001B557AC40014002003251026012003251026010000123400123456A9".ToHexBytes();
JT809_0x1500_0x1504 jT809_0x1500_0x1504 = JT809_2019_Serializer.Deserialize<JT809_0x1500_0x1504>(bytes);
Assert.Equal(JT809CommandType.记录仪唯一性编号, jT809_0x1500_0x1504.CommandType);
Assert.Equal("123456", jT809_0x1500_0x1504.TraveldataInfo);
Assert.Equal(6u, jT809_0x1500_0x1504.TraveldataLength);
Assert.Equal("557AC40014002003251026012003251026010000123400123456A9".ToHexBytes(), jT809_0x1500_0x1504.TraveldataInfo);
Assert.Equal(0x1bu, jT809_0x1500_0x1504.TraveldataLength);
Assert.Equal(1u, jT809_0x1500_0x1504.SourceMsgSn);
Assert.Equal(12, jT809_0x1500_0x1504.SourceDataType);
}


+ 1
- 0
src/JT809.Protocol/JT809.Protocol.xml Bestand weergeven

@@ -2912,6 +2912,7 @@
<member name="P:JT809.Protocol.SubMessageBody.JT809_0x1500_0x1504.TraveldataInfo">
<summary>
车辆行驶记录信息
<para>19056应答帧元数据</para>
</summary>
</member>
<member name="T:JT809.Protocol.SubMessageBody.JT809_0x1500_0x1505">


+ 11
- 10
src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1504.cs Bestand weergeven

@@ -12,7 +12,7 @@ namespace JT809.Protocol.SubMessageBody
/// <para>子业务类型标识:UP_CTRL_MSG_TAKE_TRAVEL_ACK</para>
/// <para>描述:下级平台应答上级平台下发的"上报车辆行驶记录请求"消息,将车辆行驶记录数据上传至上级平台</para>
/// </summary>
public class JT809_0x1500_0x1504:JT809SubBodies, IJT809MessagePackFormatter<JT809_0x1500_0x1504>, IJT809Analyze, IJT809_2019_Version
public class JT809_0x1500_0x1504 : JT809SubBodies, IJT809MessagePackFormatter<JT809_0x1500_0x1504>, IJT809Analyze, IJT809_2019_Version
{
public override ushort SubMsgId => JT809SubBusinessType.上报车辆行驶记录应答消息.ToUInt16Value();

@@ -35,8 +35,9 @@ namespace JT809.Protocol.SubMessageBody
public uint TraveldataLength { get; set; }
/// <summary>
/// 车辆行驶记录信息
/// <para>19056应答帧元数据</para>
/// </summary>
public string TraveldataInfo { get; set; }
public byte[] TraveldataInfo { get; set; }

public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
{
@@ -47,14 +48,14 @@ namespace JT809.Protocol.SubMessageBody
writer.WriteString($"[{value.SourceDataType.ReadNumber()}]对应启动车辆定位信息交换请求消息源子业务类型标识", ((JT809SubBusinessType)value.SourceDataType).ToString());
value.SourceMsgSn = reader.ReadUInt32();
writer.WriteNumber($"[{value.SourceMsgSn.ReadNumber()}对应启动车辆定位信息交换请求消息源报文序列号]", value.SourceMsgSn);
value.CommandType = (JT809CommandType)reader.ReadByte();
writer.WriteString($"[{value.CommandType.ToByteValue()}]命令字", value.CommandType.ToString());
}
value.CommandType = (JT809CommandType)reader.ReadByte();
writer.WriteString($"[{value.CommandType.ToByteValue()}]命令字", value.CommandType.ToString()) ;
value.TraveldataLength = reader.ReadUInt32();
writer.WriteNumber($"[{value.TraveldataLength.ReadNumber()}]车辆行驶记录数据体长度", value.TraveldataLength);
var virtualHex = reader.ReadVirtualArray((int)value.TraveldataLength);
value.TraveldataInfo = reader.ReadString((int)value.TraveldataLength);
writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车辆行驶记录信息", value.TraveldataInfo);
value.TraveldataInfo = reader.ReadArray((int)value.TraveldataLength).ToArray();
writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车辆行驶记录信息", value.TraveldataInfo.ToHexString());
}

public JT809_0x1500_0x1504 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
@@ -64,10 +65,10 @@ namespace JT809.Protocol.SubMessageBody
{
value.SourceDataType = reader.ReadUInt16();
value.SourceMsgSn = reader.ReadUInt32();
value.CommandType = (JT809CommandType)reader.ReadByte();
}
value.CommandType = (JT809CommandType)reader.ReadByte();
value.TraveldataLength = reader.ReadUInt32();
value.TraveldataInfo = reader.ReadString((int)value.TraveldataLength);
value.TraveldataInfo = reader.ReadArray((int)value.TraveldataLength).ToArray();
return value;
}

@@ -77,11 +78,11 @@ namespace JT809.Protocol.SubMessageBody
{
writer.WriteUInt16(value.SourceDataType);
writer.WriteUInt32(value.SourceMsgSn);
writer.WriteByte((byte)value.CommandType);
}
writer.WriteByte((byte)value.CommandType);
// 先计算内容长度(汉字为两个字节)
writer.Skip(4, out int lengthPosition);
writer.WriteString(value.TraveldataInfo);
writer.WriteArray(value.TraveldataInfo);
writer.WriteInt32Return(writer.GetCurrentPosition() - lengthPosition - 4, lengthPosition);
}
}


Laden…
Annuleren
Opslaan