From c72c90f927dacdd8297acf631e6228a8d1510130 Mon Sep 17 00:00:00 2001 From: "SmallChi(Koike)" <564952747@qq.com> Date: Sun, 1 Dec 2019 12:06:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A02019=E7=89=88=E6=9C=AC808?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E7=9A=84=E6=9F=A5=E8=AF=A2=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E6=88=96=E7=BA=BF=E8=B7=AF=E6=95=B0=E6=8D=AE=E3=80=81=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8C=BA=E5=9F=9F=E6=88=96=E7=BA=BF=E8=B7=AF=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=94=E7=AD=94=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 ++-- doc/JTT.808-2019.PDF | Bin 3104789 -> 3107801 bytes .../JT808.Protocol.Test.csproj | 2 + .../MessageBody/JT808_0x0608Test.cs | 38 +++++++++++ .../MessageBody/JT808_0x0702Test.cs | 34 ++++++++++ .../MessageBody/JT808_0x0705Test.cs | 12 ++-- .../MessageBody/JT808_0x8608Test.cs | 58 ++++++++++++++++ src/JT808.Protocol/JT808.Protocol.xml | 49 ++++++++++++++ .../MessageBody/JT808_0x0608.cs | 60 ++++++++++++++++ .../MessageBody/JT808_0x0702.cs | 16 ++++- .../MessageBody/JT808_0x0705.cs | 15 ++-- .../MessageBody/JT808_0x0801.cs | 3 +- .../MessageBody/JT808_0x0805.cs | 25 ++++--- .../MessageBody/JT808_0x8608.cs | 64 ++++++++++++++++++ .../MessageBody/JT808_0x8801.cs | 3 +- .../Metadata/JT808CanProperty.cs | 8 ++- 16 files changed, 363 insertions(+), 38 deletions(-) create mode 100644 src/JT808.Protocol.Test/MessageBody/JT808_0x0608Test.cs create mode 100644 src/JT808.Protocol.Test/MessageBody/JT808_0x8608Test.cs create mode 100644 src/JT808.Protocol/MessageBody/JT808_0x0608.cs create mode 100644 src/JT808.Protocol/MessageBody/JT808_0x8608.cs diff --git a/README.md b/README.md index 036f52e..d283401 100644 --- a/README.md +++ b/README.md @@ -354,15 +354,15 @@ Platform=AnyCpu Server=False Toolchain=.NET Core 3.0 | 44 | 0x0700 | x | 不开发 | 行驶记录仪数据上传 |不开发 | 45 | 0x8701 | x | 不开发 | 行驶记录仪参数下传命令 |不开发 | 46 | 0x0701 | √ | √ | 电子运单上报 | -| 47 | 0x0702 | √ | √ | 驾驶员身份信息采集上报 | +| 47 | 0x0702 | √ | √ | 驾驶员身份信息采集上报 |修改| | 48 | 0x8702 | √ | 消息体为空| 上报驾驶员身份信息请求 | -| 49 | 0x0704 | √ | √ | 定位数据批量上传 | -| 50 | 0x0705 | √ | √ | CAN 总线数据上传 | +| 49 | 0x0704 | √ | √ | 定位数据批量上传 |修改| +| 50 | 0x0705 | √ | √ | CAN 总线数据上传 |修改| | 51 | 0x0800 | √ | √ | 多媒体事件信息上传 | -| 52 | 0x0801 | √ | √ | 多媒体数据上传 | +| 52 | 0x0801 | √ | √ | 多媒体数据上传 |修改| | 53 | 0x8800 | √ | √ | 多媒体数据上传应答 | -| 54 | 0x8801 | √ | √ | 摄像头立即拍摄命令 | -| 55 | 0x0805 | √ | √ | 摄像头立即拍摄命令应答 | +| 54 | 0x8801 | √ | √ | 摄像头立即拍摄命令 |修改| +| 55 | 0x0805 | √ | √ | 摄像头立即拍摄命令应答 |修改| | 56 | 0x8802 | √ | √ | 存储多媒体数据检索 | | 57 | 0x0802 | √ | √ | 存储多媒体数据检索应答 | | 58 | 0x8803 | √ | √ | 存储多媒体数据上传 | @@ -379,3 +379,5 @@ Platform=AnyCpu Server=False Toolchain=.NET Core 3.0 | 69 | 0x8004 | √ | √ | 查询服务器时间应答 |新增| | 70 | 0x0005 | √ | √ | 终端补传分包请求 |新增| | 71 | 0x8204 | √ | √ | 链路检测 |新增| +| 72 | 0x8608 | √ | √ | 查询区域或线路数据 |新增| +| 73 | 0x0608 | √ | √ | 查询区域或线路数据应答 |新增| diff --git a/doc/JTT.808-2019.PDF b/doc/JTT.808-2019.PDF index 0afe24d73e920f6f2064e4f52d516cf3e52f78ce..29af9c377c82059b73f7a4c3649e659f8974122c 100644 GIT binary patch delta 50460 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 AmH+?% delta 49990 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%0D*M1Y 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 z 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 diff --git a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj index bd982a9..bbb2735 100644 --- a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj +++ b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj @@ -82,6 +82,8 @@ + + diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x0608Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x0608Test.cs new file mode 100644 index 0000000..db1edbb --- /dev/null +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x0608Test.cs @@ -0,0 +1,38 @@ +using JT808.Protocol.Extensions; +using JT808.Protocol.MessageBody; +using System; +using System.Collections.Generic; +using Xunit; +using JT808.Protocol.Metadata; + +namespace JT808.Protocol.Test.MessageBody +{ + public class JT808_0x0608Test + { + JT808Serializer JT808Serializer = new JT808Serializer(); + + [Fact] + public void Test1() + { + JT808_0x0608 value = new JT808_0x0608 + { + QueryType=1, + Ids=new List() { 1,2,3} + }; + var hex = JT808Serializer.Serialize(value).ToHexString(); + Assert.Equal("0100000003000000010000000200000003", hex); + } + + [Fact] + public void Test2() + { + byte[] bytes = "0100000003000000010000000200000003".ToHexBytes(); + JT808_0x0608 value = JT808Serializer.Deserialize(bytes); + Assert.Equal(1, value.QueryType); + Assert.Equal(3u, value.Count); + Assert.Equal(1u, value.Ids[0]); + Assert.Equal(2u, value.Ids[1]); + Assert.Equal(3u, value.Ids[2]); + } + } +} diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x0702Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x0702Test.cs index b824bfc..bfeb216 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x0702Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x0702Test.cs @@ -84,5 +84,39 @@ namespace JT808.Protocol.Test.MessageBody Assert.Equal("qwertx", jT808_0X0702.LicenseIssuing); Assert.Equal(DateTime.Parse("2018-08-16"), jT808_0X0702.CertificateExpiresDate); } + + [Fact] + public void Test_2019_1() + { + JT808_0x0702 jT808_0X0702 = new JT808_0x0702 + { + IC_Card_Status = JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班, + IC_Card_PlugDateTime = DateTime.Parse("2019-12-01 11:11:11"), + IC_Card_ReadResult = JT808ICCardReadResult.IC卡读卡成功, + DriverUserName = "koike", + QualificationCode = "qwe123456aaa", + LicenseIssuing = "qwertx", + CertificateExpiresDate = DateTime.Parse("2019-12-01"), + DriverIdentityCard="12345678901234567" + }; + var hex = JT808Serializer.Serialize(jT808_0X0702, JT808Version.JTT2019).ToHexString(); + Assert.Equal("0119120111111100056B6F696B6571776531323334353661616130303030303030300671776572747807E312013132333435363738393031323334353637303030", hex); + + } + + [Fact] + public void Test_2019_2() + { + byte[] bytes = "0119120111111100056B6F696B6571776531323334353661616130303030303030300671776572747807E312013132333435363738393031323334353637303030".ToHexBytes(); + JT808_0x0702 jT808_0X0702 = JT808Serializer.Deserialize(bytes, JT808Version.JTT2019); + Assert.Equal(JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班, jT808_0X0702.IC_Card_Status); + Assert.Equal(DateTime.Parse("2019-12-01 11:11:11"), jT808_0X0702.IC_Card_PlugDateTime); + Assert.Equal(JT808ICCardReadResult.IC卡读卡成功, jT808_0X0702.IC_Card_ReadResult); + Assert.Equal("koike", jT808_0X0702.DriverUserName); + Assert.Equal("qwe123456aaa00000000", jT808_0X0702.QualificationCode); + Assert.Equal("qwertx", jT808_0X0702.LicenseIssuing); + Assert.Equal(DateTime.Parse("2019-12-01"), jT808_0X0702.CertificateExpiresDate); + Assert.Equal("12345678901234567000", jT808_0X0702.DriverIdentityCard); + } } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x0705Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x0705Test.cs index 5a5ac2f..f2762b7 100644 --- a/src/JT808.Protocol.Test/MessageBody/JT808_0x0705Test.cs +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x0705Test.cs @@ -20,32 +20,32 @@ namespace JT808.Protocol.Test.MessageBody }; jT808_0X0705.CanItems.Add(new JT808CanProperty() { - CanId = new byte[] { 0x01, 0x02, 0x03, 0x04 }, + CanId = 0x0120304, CanData = new byte[] { 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04 }, }); jT808_0X0705.CanItems.Add(new JT808CanProperty() { - CanId = new byte[] { 0x05, 0x06, 0x07, 0x08 }, + CanId = 0x05060708, CanData = new byte[] { 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01 }, }); var hex = JT808Serializer.Serialize(jT808_0X0705).ToHexString(); - Assert.Equal("0002200005015E010203040102030401020304050607080103040506070801", hex); + Assert.Equal("0002200005015E001203040102030401020304050607080103040506070801", hex); } [Fact] public void Test2() { - byte[] bytes = "0002200005015E010203040102030401020304050607080103040506070801".ToHexBytes(); + byte[] bytes = "0002200005015E001203040102030401020304050607080103040506070801".ToHexBytes(); JT808_0x0705 jT808_0X0705 = JT808Serializer.Deserialize(bytes); Assert.Equal(2, jT808_0X0705.CanItemCount); Assert.Equal(DateTime.Parse("20:00:05.350"), jT808_0X0705.FirstCanReceiveTime); - Assert.Equal(new byte[] { 0x01, 0x02, 0x03, 0x04 }, jT808_0X0705.CanItems[0].CanId); + Assert.Equal(0x0120304u, jT808_0X0705.CanItems[0].CanId); Assert.Equal(new byte[] { 0x01, 0x02, 0x03, 0x04, 0x01, 0x02, 0x03, 0x04 }, jT808_0X0705.CanItems[0].CanData); - Assert.Equal(new byte[] { 0x05, 0x06, 0x07, 0x08 }, jT808_0X0705.CanItems[1].CanId); + Assert.Equal(0x05060708u , jT808_0X0705.CanItems[1].CanId); Assert.Equal(new byte[] { 0x01, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01 }, jT808_0X0705.CanItems[1].CanData); } } diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x8608Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x8608Test.cs new file mode 100644 index 0000000..a61e57f --- /dev/null +++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x8608Test.cs @@ -0,0 +1,58 @@ +using JT808.Protocol.Extensions; +using JT808.Protocol.MessageBody; +using System; +using System.Collections.Generic; +using Xunit; +using JT808.Protocol.Metadata; + +namespace JT808.Protocol.Test.MessageBody +{ + public class JT808_0x8608Test + { + JT808Serializer JT808Serializer = new JT808Serializer(); + + [Fact] + public void Test1() + { + JT808_0x8608 value = new JT808_0x8608 + { + QueryType=0, + Ids=new List() { 1,2,3} + }; + var hex = JT808Serializer.Serialize(value).ToHexString(); + Assert.Equal("0000000003000000010000000200000003", hex); + } + + [Fact] + public void Test2() + { + byte[] bytes = "0000000003000000010000000200000003".ToHexBytes(); + JT808_0x8608 value = JT808Serializer.Deserialize(bytes); + Assert.Equal(0, value.QueryType); + Assert.Equal(3u, value.Count); + Assert.Equal(1u, value.Ids[0]); + Assert.Equal(2u, value.Ids[1]); + Assert.Equal(3u, value.Ids[2]); + } + + [Fact] + public void Test3() + { + JT808_0x8608 value = new JT808_0x8608 + { + QueryType = 1 + }; + var hex = JT808Serializer.Serialize(value).ToHexString(); + Assert.Equal("0100000000", hex); + } + + [Fact] + public void Test4() + { + byte[] bytes = "0100000000".ToHexBytes(); + JT808_0x8608 value = JT808Serializer.Deserialize(bytes); + Assert.Equal(1, value.QueryType); + Assert.Equal(0u, value.Count); + } + } +} diff --git a/src/JT808.Protocol/JT808.Protocol.xml b/src/JT808.Protocol/JT808.Protocol.xml index 1c693ee..9719a0c 100644 --- a/src/JT808.Protocol/JT808.Protocol.xml +++ b/src/JT808.Protocol/JT808.Protocol.xml @@ -2944,6 +2944,26 @@ 位置信息汇报消息体 + +

+ 查询区域或线路数据应答 + + + + + 查询类型 + + + + + 查询的区域或线路的ID数量 + + + + + 查询的区域或线路的ID + + 电子运单上报 @@ -3028,6 +3048,12 @@ 证件有效期 BCD[4] + + + 驾驶员身份证号 长度20 不足补0 + 2019版本 + + 定位数据批量上传 @@ -5391,6 +5417,29 @@ 区域ID集合 + + + 查询区域或线路数据 + 0x8608 + 2019版本 + + + + + 查询类型 + + + + + 查询的区域或线路的ID数量 + 0表示查询所有区域或线路数据,大于0表示后面跟随要查询的区域或线路的ID数量 + + + + + 查询的区域或线路的ID + + 上报驾驶员身份信息请求 diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0608.cs b/src/JT808.Protocol/MessageBody/JT808_0x0608.cs new file mode 100644 index 0000000..2e95263 --- /dev/null +++ b/src/JT808.Protocol/MessageBody/JT808_0x0608.cs @@ -0,0 +1,60 @@ +using JT808.Protocol.Formatters; +using JT808.Protocol.Interfaces; +using JT808.Protocol.MessagePack; +using System.Collections.Generic; + +namespace JT808.Protocol.MessageBody +{ + /// + /// 查询区域或线路数据应答 + /// + public class JT808_0x0608 : JT808Bodies, IJT808MessagePackFormatter, IJT808_2019_Version + { + public override ushort MsgId { get; } = 0x0608; + /// + /// 查询类型 + /// + public byte QueryType { get; set; } + /// + /// 查询的区域或线路的ID数量 + /// + public uint Count { get; set; } + + /// + /// 查询的区域或线路的ID + /// + public List Ids { get; set; } + public JT808_0x0608 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) + { + JT808_0x0608 value = new JT808_0x0608(); + value.QueryType = reader.ReadByte(); + value.Count = reader.ReadUInt32(); + if (value.Count > 0) + { + value.Ids = new List(); + for (int i = 0; i < value.Count; i++) + { + value.Ids.Add(reader.ReadUInt32()); + } + } + return value; + } + + public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0608 value, IJT808Config config) + { + writer.WriteByte(value.QueryType); + if (value.Ids != null && value.Ids.Count > 0) + { + writer.WriteUInt32((uint)value.Ids.Count); + foreach (var item in value.Ids) + { + writer.WriteUInt32(item); + } + } + else + { + writer.WriteUInt32(0); + } + } + } +} diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0702.cs b/src/JT808.Protocol/MessageBody/JT808_0x0702.cs index a11f3c9..6c6aa01 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0702.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0702.cs @@ -1,5 +1,6 @@ using JT808.Protocol.Enums; using JT808.Protocol.Formatters; +using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; using System; @@ -8,7 +9,7 @@ namespace JT808.Protocol.MessageBody /// /// 驾驶员身份信息采集上报 /// - public class JT808_0x0702 : JT808Bodies, IJT808MessagePackFormatter + public class JT808_0x0702 : JT808Bodies, IJT808MessagePackFormatter, IJT808_2019_Version { public override ushort MsgId { get; } = 0x0702; /// @@ -58,6 +59,11 @@ namespace JT808.Protocol.MessageBody /// 证件有效期 BCD[4] /// public DateTime CertificateExpiresDate { get; set; } + /// + /// 驾驶员身份证号 长度20 不足补0 + /// 2019版本 + /// + public string DriverIdentityCard { get; set; } public JT808_0x0702 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0702 jT808_0X0702 = new JT808_0x0702(); @@ -74,6 +80,10 @@ namespace JT808.Protocol.MessageBody jT808_0X0702.LicenseIssuingLength = reader.ReadByte(); jT808_0X0702.LicenseIssuing = reader.ReadString(jT808_0X0702.LicenseIssuingLength); jT808_0X0702.CertificateExpiresDate = reader.ReadDateTime4(); + if(reader.Version== JT808Version.JTT2019) + { + jT808_0X0702.DriverIdentityCard = reader.ReadString(20); + } } } return jT808_0X0702; @@ -94,6 +104,10 @@ namespace JT808.Protocol.MessageBody writer.WriteByte((byte)value.LicenseIssuing.Length); writer.WriteString(value.LicenseIssuing); writer.WriteDateTime4(value.CertificateExpiresDate); + if (writer.Version == JT808Version.JTT2019) + { + writer.WriteString(value.DriverIdentityCard.PadRight(20,'0')); + } } } } diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0705.cs b/src/JT808.Protocol/MessageBody/JT808_0x0705.cs index de67494..72d428f 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0705.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0705.cs @@ -1,5 +1,6 @@ using JT808.Protocol.Exceptions; using JT808.Protocol.Formatters; +using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; using JT808.Protocol.Metadata; using System; @@ -11,7 +12,7 @@ namespace JT808.Protocol.MessageBody /// CAN 总线数据上传 /// 0x0705 /// - public class JT808_0x0705 : JT808Bodies, IJT808MessagePackFormatter + public class JT808_0x0705 : JT808Bodies, IJT808MessagePackFormatter,IJT808_2019_Version { public override ushort MsgId { get; } = 0x0705; /// @@ -38,11 +39,7 @@ namespace JT808.Protocol.MessageBody for (var i = 0; i < jT808_0X0705.CanItemCount; i++) { JT808CanProperty jT808CanProperty = new JT808CanProperty(); - jT808CanProperty.CanId = reader.ReadArray(4).ToArray(); - if (jT808CanProperty.CanId.Length != 4) - { - throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(jT808CanProperty.CanId)}->4"); - } + jT808CanProperty.CanId = reader.ReadUInt32(); jT808CanProperty.CanData = reader.ReadArray(8).ToArray(); if (jT808CanProperty.CanData.Length != 8) { @@ -61,11 +58,7 @@ namespace JT808.Protocol.MessageBody writer.WriteDateTime5(value.FirstCanReceiveTime); foreach (var item in value.CanItems) { - if (item.CanId.Length != 4) - { - throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(item.CanId)}->4"); - } - writer.WriteArray(item.CanId); + writer.WriteUInt32(item.CanId); if (item.CanData.Length != 8) { throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(item.CanData)}->8"); diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0801.cs b/src/JT808.Protocol/MessageBody/JT808_0x0801.cs index 4711c0e..69c292a 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0801.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0801.cs @@ -1,5 +1,6 @@ using JT808.Protocol.Attributes; using JT808.Protocol.Formatters; +using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; namespace JT808.Protocol.MessageBody @@ -8,7 +9,7 @@ namespace JT808.Protocol.MessageBody /// 多媒体数据上传 /// 0x0801 /// - public class JT808_0x0801 : JT808Bodies, IJT808MessagePackFormatter + public class JT808_0x0801 : JT808Bodies, IJT808MessagePackFormatter, IJT808_2019_Version { public override ushort MsgId { get; } = 0x0801; /// diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0805.cs b/src/JT808.Protocol/MessageBody/JT808_0x0805.cs index 1f34698..b32a1d3 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x0805.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x0805.cs @@ -1,4 +1,5 @@ using JT808.Protocol.Formatters; +using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; using System.Collections.Generic; @@ -8,7 +9,7 @@ namespace JT808.Protocol.MessageBody /// 摄像头立即拍摄命令应答 /// 0x0805 /// - public class JT808_0x0805 : JT808Bodies, IJT808MessagePackFormatter + public class JT808_0x0805 : JT808Bodies, IJT808MessagePackFormatter, IJT808_2019_Version { public override ushort MsgId { get; } = 0x0805; /// @@ -36,12 +37,15 @@ namespace JT808.Protocol.MessageBody JT808_0x0805 jT808_0X0805 = new JT808_0x0805(); jT808_0X0805.ReplyMsgNum = reader.ReadUInt16(); jT808_0X0805.Result = reader.ReadByte(); - jT808_0X0805.MultimediaIdCount = reader.ReadUInt16(); - jT808_0X0805.MultimediaIds = new List(); - for (var i = 0; i < jT808_0X0805.MultimediaIdCount; i++) + if (jT808_0X0805.Result == 0) { - uint id = reader.ReadUInt32(); - jT808_0X0805.MultimediaIds.Add(id); + jT808_0X0805.MultimediaIdCount = reader.ReadUInt16(); + jT808_0X0805.MultimediaIds = new List(); + for (var i = 0; i < jT808_0X0805.MultimediaIdCount; i++) + { + uint id = reader.ReadUInt32(); + jT808_0X0805.MultimediaIds.Add(id); + } } return jT808_0X0805; } @@ -50,10 +54,13 @@ namespace JT808.Protocol.MessageBody { writer.WriteUInt16(value.ReplyMsgNum); writer.WriteByte(value.Result); - writer.WriteUInt16((ushort)value.MultimediaIds.Count); - foreach (var item in value.MultimediaIds) + if (value.Result == 0) { - writer.WriteUInt32(item); + writer.WriteUInt16((ushort)value.MultimediaIds.Count); + foreach (var item in value.MultimediaIds) + { + writer.WriteUInt32(item); + } } } } diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8608.cs b/src/JT808.Protocol/MessageBody/JT808_0x8608.cs new file mode 100644 index 0000000..ae16130 --- /dev/null +++ b/src/JT808.Protocol/MessageBody/JT808_0x8608.cs @@ -0,0 +1,64 @@ +using JT808.Protocol.Formatters; +using JT808.Protocol.Interfaces; +using JT808.Protocol.MessagePack; +using System.Collections.Generic; + +namespace JT808.Protocol.MessageBody +{ + /// + /// 查询区域或线路数据 + /// 0x8608 + /// 2019版本 + /// + public class JT808_0x8608 : JT808Bodies, IJT808MessagePackFormatter, IJT808_2019_Version + { + public override ushort MsgId { get; } = 0x8608; + /// + /// 查询类型 + /// + public byte QueryType { get; set; } + /// + /// 查询的区域或线路的ID数量 + /// 0表示查询所有区域或线路数据,大于0表示后面跟随要查询的区域或线路的ID数量 + /// + public uint Count { get; set; } + + /// + /// 查询的区域或线路的ID + /// + public List Ids { get; set; } + + public JT808_0x8608 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) + { + JT808_0x8608 value = new JT808_0x8608(); + value.QueryType = reader.ReadByte(); + value.Count = reader.ReadUInt32(); + if (value.Count > 0) + { + value.Ids = new List(); + for(int i = 0; i < value.Count; i++) + { + value.Ids.Add(reader.ReadUInt32()); + } + } + return value; + } + + public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8608 value, IJT808Config config) + { + writer.WriteByte(value.QueryType); + if(value.Ids!=null && value.Ids.Count > 0) + { + writer.WriteUInt32((uint)value.Ids.Count); + foreach(var item in value.Ids) + { + writer.WriteUInt32(item); + } + } + else + { + writer.WriteUInt32(0); + } + } + } +} diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8801.cs b/src/JT808.Protocol/MessageBody/JT808_0x8801.cs index c13122a..3b5820c 100644 --- a/src/JT808.Protocol/MessageBody/JT808_0x8801.cs +++ b/src/JT808.Protocol/MessageBody/JT808_0x8801.cs @@ -1,4 +1,5 @@ using JT808.Protocol.Formatters; +using JT808.Protocol.Interfaces; using JT808.Protocol.MessagePack; namespace JT808.Protocol.MessageBody @@ -7,7 +8,7 @@ namespace JT808.Protocol.MessageBody /// 摄像头立即拍摄命令 /// 0x8801 /// - public class JT808_0x8801 : JT808Bodies, IJT808MessagePackFormatter + public class JT808_0x8801 : JT808Bodies, IJT808MessagePackFormatter, IJT808_2019_Version { public override ushort MsgId { get; } = 0x8801; /// diff --git a/src/JT808.Protocol/Metadata/JT808CanProperty.cs b/src/JT808.Protocol/Metadata/JT808CanProperty.cs index 6129081..1c8eef9 100644 --- a/src/JT808.Protocol/Metadata/JT808CanProperty.cs +++ b/src/JT808.Protocol/Metadata/JT808CanProperty.cs @@ -1,15 +1,17 @@ -namespace JT808.Protocol.Metadata +using JT808.Protocol.Interfaces; + +namespace JT808.Protocol.Metadata { /// /// Can属性 /// - public struct JT808CanProperty + public struct JT808CanProperty: IJT808_2019_Version { /// /// CAN ID /// 4 /// - public byte[] CanId { get; set; } + public uint CanId { get; set; } /// /// CAN 数据 /// 8