Browse Source

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

tags/v2.2.1
yedajiang44 3 years ago
parent
commit
bf4ec5383e
3 changed files with 23 additions and 23 deletions
  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 View File

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


namespace JT809.Protocol.Test.JT809SubMessageBody namespace JT809.Protocol.Test.JT809SubMessageBody
{ {
public class JT809_0x1500_0x1504Test
public class JT809_0x1500_0x1504Test
{ {
private JT809Serializer JT809Serializer = new JT809Serializer(); private JT809Serializer JT809Serializer = new JT809Serializer();
private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); 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 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(); var hex = JT809Serializer.Serialize(jT809_0x1500_0x1504).ToHexString();
Assert.Equal("0700000006313233343536", hex);
Assert.Equal("0000001B557AC40014002003251026012003251026010000123400123456A9", hex);
} }


[Fact] [Fact]
public void Test2() public void Test2()
{ {
var bytes = "0700000006313233343536".ToHexBytes();
var bytes = "0000001B557AC40014002003251026012003251026010000123400123456A9".ToHexBytes();
JT809_0x1500_0x1504 jT809_0x1500_0x1504 = JT809Serializer.Deserialize<JT809_0x1500_0x1504>(bytes); 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] [Fact]
@@ -44,22 +42,22 @@ namespace JT809.Protocol.Test.JT809SubMessageBody
JT809_0x1500_0x1504 jT809_0x1500_0x1504 = new JT809_0x1500_0x1504 JT809_0x1500_0x1504 jT809_0x1500_0x1504 = new JT809_0x1500_0x1504
{ {
CommandType = JT809CommandType.记录仪唯一性编号, CommandType = JT809CommandType.记录仪唯一性编号,
TraveldataInfo = "123456",
TraveldataInfo = "557AC40014002003251026012003251026010000123400123456A9".ToHexBytes(),
SourceMsgSn = 1, SourceMsgSn = 1,
SourceDataType = 12, SourceDataType = 12,
}; };
var hex = JT809_2019_Serializer.Serialize(jT809_0x1500_0x1504).ToHexString(); var hex = JT809_2019_Serializer.Serialize(jT809_0x1500_0x1504).ToHexString();
Assert.Equal("000C000000010700000006313233343536", hex);
Assert.Equal("000C00000001070000001B557AC40014002003251026012003251026010000123400123456A9", hex);
} }


[Fact] [Fact]
public void Test_2019_2() 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); JT809_0x1500_0x1504 jT809_0x1500_0x1504 = JT809_2019_Serializer.Deserialize<JT809_0x1500_0x1504>(bytes);
Assert.Equal(JT809CommandType.记录仪唯一性编号, jT809_0x1500_0x1504.CommandType); 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(1u, jT809_0x1500_0x1504.SourceMsgSn);
Assert.Equal(12, jT809_0x1500_0x1504.SourceDataType); Assert.Equal(12, jT809_0x1500_0x1504.SourceDataType);
} }


+ 1
- 0
src/JT809.Protocol/JT809.Protocol.xml View File

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


+ 11
- 10
src/JT809.Protocol/SubMessageBody/JT809_0x1500_0x1504.cs View File

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


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


public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config) 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()); writer.WriteString($"[{value.SourceDataType.ReadNumber()}]对应启动车辆定位信息交换请求消息源子业务类型标识", ((JT809SubBusinessType)value.SourceDataType).ToString());
value.SourceMsgSn = reader.ReadUInt32(); value.SourceMsgSn = reader.ReadUInt32();
writer.WriteNumber($"[{value.SourceMsgSn.ReadNumber()}对应启动车辆定位信息交换请求消息源报文序列号]", value.SourceMsgSn); 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(); value.TraveldataLength = reader.ReadUInt32();
writer.WriteNumber($"[{value.TraveldataLength.ReadNumber()}]车辆行驶记录数据体长度", value.TraveldataLength); writer.WriteNumber($"[{value.TraveldataLength.ReadNumber()}]车辆行驶记录数据体长度", value.TraveldataLength);
var virtualHex = reader.ReadVirtualArray((int)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) public JT809_0x1500_0x1504 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
@@ -64,10 +65,10 @@ namespace JT809.Protocol.SubMessageBody
{ {
value.SourceDataType = reader.ReadUInt16(); value.SourceDataType = reader.ReadUInt16();
value.SourceMsgSn = reader.ReadUInt32(); value.SourceMsgSn = reader.ReadUInt32();
value.CommandType = (JT809CommandType)reader.ReadByte();
} }
value.CommandType = (JT809CommandType)reader.ReadByte();
value.TraveldataLength = reader.ReadUInt32(); value.TraveldataLength = reader.ReadUInt32();
value.TraveldataInfo = reader.ReadString((int)value.TraveldataLength);
value.TraveldataInfo = reader.ReadArray((int)value.TraveldataLength).ToArray();
return value; return value;
} }


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


Loading…
Cancel
Save