From f80ad70a99c22f5f5a87bfd9d0b8c068d45eec93 Mon Sep 17 00:00:00 2001 From: LDMING Date: Tue, 19 Jan 2021 16:40:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9808=E6=89=A9=E5=B1=951078=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8C=87=E4=BB=A4=E5=91=BD=E5=90=8D=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E5=90=8D=E8=BF=9B=E8=A1=8C=E7=B2=BE=E7=AE=80=E3=80=81=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E5=B9=B6=E5=A2=9E=E5=8A=A0=E6=B3=A8=E9=87=8A=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JT808_0x9101Test.cs | 34 +-- .../JT808_0x9102Test.cs | 12 +- .../JT808_0x9105Test.cs | 4 +- .../JT808_0x9201Test.cs | 20 +- .../JT808_0x9202Test.cs | 16 +- .../JT808_0x9205Test.cs | 8 +- .../JT808_0x9206Test.cs | 8 +- .../JT808_0x9301Test.cs | 4 +- .../JT808_0x9303Test.cs | 4 +- .../JT808_0x9304Test.cs | 4 +- .../JT808_0x9305Test.cs | 2 +- .../JT808_0x9306Test.cs | 4 +- .../Enums/JT808_JT1078_MsgId.cs | 9 +- .../Enums/VideoRelateAlarmType.cs | 4 +- .../MessageBody/JT808_0x9003.cs | 3 + .../MessageBody/JT808_0x9101.cs | 170 ++++++----- .../MessageBody/JT808_0x9102.cs | 144 +++++---- .../MessageBody/JT808_0x9105.cs | 88 +++--- .../MessageBody/JT808_0x9201.cs | 275 +++++++++--------- .../MessageBody/JT808_0x9202.cs | 195 ++++++------- .../MessageBody/JT808_0x9205.cs | 148 +++++----- .../MessageBody/JT808_0x9206.cs | 149 ++++------ .../MessageBody/JT808_0x9207.cs | 24 +- .../MessageBody/JT808_0x9301.cs | 101 +++---- .../MessageBody/JT808_0x9302.cs | 68 ++--- .../MessageBody/JT808_0x9303.cs | 72 ++--- .../MessageBody/JT808_0x9304.cs | 69 ++--- .../MessageBody/JT808_0x9305.cs | 69 ++--- .../MessageBody/JT808_0x9306.cs | 72 ++--- 29 files changed, 829 insertions(+), 951 deletions(-) diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9101Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9101Test.cs index 65d7673..7dad73f 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9101Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9101Test.cs @@ -27,10 +27,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test1() { JT808_0x9101 jT808_0X9101 = new JT808_0x9101(); - jT808_0X9101.ServerIPAddress = "127.0.0.1"; - jT808_0X9101.ServerVideoChannelTcpPort = 1888; - jT808_0X9101.ServerVideoChannelUdpPort = 0; - jT808_0X9101.LogicalChannelNo= 1; + jT808_0X9101.ServerIp = "127.0.0.1"; + jT808_0X9101.TcpPort = 1888; + jT808_0X9101.UdpPort = 0; + jT808_0X9101.ChannelNo= 1; jT808_0X9101.DataType= 1; jT808_0X9101.StreamType= 1; var hex = JT808Serializer.Serialize(jT808_0X9101).ToHexString(); @@ -41,11 +41,11 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { JT808_0x9101 jT808_0X9101= JT808Serializer.Deserialize("093132372E302E302E3107600000010101".ToHexBytes()); - Assert.Equal("127.0.0.1", jT808_0X9101.ServerIPAddress); - Assert.Equal(9, jT808_0X9101.ServerIPAddressLength); - Assert.Equal(1888, jT808_0X9101.ServerVideoChannelTcpPort); - Assert.Equal(0, jT808_0X9101.ServerVideoChannelUdpPort); - Assert.Equal(1, jT808_0X9101.LogicalChannelNo); + Assert.Equal("127.0.0.1", jT808_0X9101.ServerIp); + Assert.Equal(9, jT808_0X9101.ServerIpLength); + Assert.Equal(1888, jT808_0X9101.TcpPort); + Assert.Equal(0, jT808_0X9101.UdpPort); + Assert.Equal(1, jT808_0X9101.ChannelNo); Assert.Equal(1, jT808_0X9101.DataType); Assert.Equal(1, jT808_0X9101.StreamType); } @@ -60,10 +60,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test header.TerminalPhoneNo = "12345679810"; jT808Package.Header = header; JT808_0x9101 jT808_0X9101 = new JT808_0x9101(); - jT808_0X9101.ServerIPAddress = "127.0.0.1"; - jT808_0X9101.ServerVideoChannelTcpPort = 1888; - jT808_0X9101.ServerVideoChannelUdpPort = 0; - jT808_0X9101.LogicalChannelNo = 1; + jT808_0X9101.ServerIp = "127.0.0.1"; + jT808_0X9101.TcpPort = 1888; + jT808_0X9101.UdpPort = 0; + jT808_0X9101.ChannelNo = 1; jT808_0X9101.DataType = 1; jT808_0X9101.StreamType = 1; jT808Package.Bodies = jT808_0X9101; @@ -88,10 +88,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test header.TerminalPhoneNo = ""; jT808Package.Header = header; JT808_0x9101 jT808_0X9101 = new JT808_0x9101(); - jT808_0X9101.ServerIPAddress = ""; - jT808_0X9101.ServerVideoChannelTcpPort = 1078; - jT808_0X9101.ServerVideoChannelUdpPort = 0; - jT808_0X9101.LogicalChannelNo = 3; + jT808_0X9101.ServerIp = ""; + jT808_0X9101.TcpPort = 1078; + jT808_0X9101.UdpPort = 0; + jT808_0X9101.ChannelNo = 3; jT808_0X9101.DataType = 1; jT808_0X9101.StreamType = 1; jT808Package.Bodies = jT808_0X9101; diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9102Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9102Test.cs index f9d3dda..6ed77e8 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9102Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9102Test.cs @@ -27,10 +27,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test1() { JT808_0x9102 jT808_0X9102 = new JT808_0x9102(); - jT808_0X9102.LogicalChannelNo = 1; + jT808_0X9102.ChannelNo = 1; jT808_0X9102.ControlCmd = 1; jT808_0X9102.CloseAVData = 0; - jT808_0X9102.SwitchStreamType = 0; + jT808_0X9102.StreamType = 0; var hex = JT808Serializer.Serialize(jT808_0X9102).ToHexString(); Assert.Equal("01010000", hex); } @@ -39,10 +39,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { JT808_0x9102 jT808_0X9102 = JT808Serializer.Deserialize("01010000".ToHexBytes()); - Assert.Equal(1, jT808_0X9102.LogicalChannelNo); + Assert.Equal(1, jT808_0X9102.ChannelNo); Assert.Equal(1, jT808_0X9102.ControlCmd); Assert.Equal(0, jT808_0X9102.CloseAVData); - Assert.Equal(0, jT808_0X9102.SwitchStreamType); + Assert.Equal(0, jT808_0X9102.StreamType); } [Fact] @@ -55,10 +55,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test header.TerminalPhoneNo = "12345679810"; jT808Package.Header = header; JT808_0x9102 jT808_0X9102 = new JT808_0x9102(); - jT808_0X9102.LogicalChannelNo = 1; + jT808_0X9102.ChannelNo = 1; jT808_0X9102.ControlCmd = 1; jT808_0X9102.CloseAVData = 0; - jT808_0X9102.SwitchStreamType = 0; + jT808_0X9102.StreamType = 0; jT808Package.Bodies = jT808_0X9102; var hex = JT808Serializer.Serialize(jT808Package).ToHexString(); //7E910200040123456798100001010100001E7E diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs index fdc6d1e..34fc0c4 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs @@ -39,7 +39,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9105 jT808_0x9105 = new JT808_0x9105() { - LogicChannelNo=1, + ChannelNo=1, DropRate=2 }; var hex = JT808Serializer.Serialize(jT808_0x9105).ToHexString(); @@ -50,7 +50,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { var jT808_0x9105 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(1, jT808_0x9105.LogicChannelNo); + Assert.Equal(1, jT808_0x9105.ChannelNo); Assert.Equal(2, jT808_0x9105.DropRate); } [Fact] diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs index d13a2e3..2f9bea7 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs @@ -39,13 +39,13 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9201 jT808_0x9201 = new JT808_0x9201() { - LogicChannelNo = 1, - AVItemType = 2, + ChannelNo = 1, + MediaType = 2, BeginTime = Convert.ToDateTime("2019-07-16 10:10:10"), EndTime = Convert.ToDateTime("2019-07-16 10:10:10"), - FastForwardOrFastRewindMultiples=3, - MemType=5, - PlayBackWay=6, + PlaySpeed=3, + MemoryType=5, + PlaybackWay=6, ServerIp="127.0.0.1", ServerIpLength=9, StreamType=7, @@ -60,13 +60,13 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { var jT808_0x9201 = JT808Serializer.Deserialize("093132372E302E302E3100501F90010207050603190716101010190716101010".ToHexBytes()); - Assert.Equal(1, jT808_0x9201.LogicChannelNo); - Assert.Equal(2, jT808_0x9201.AVItemType); + Assert.Equal(1, jT808_0x9201.ChannelNo); + Assert.Equal(2, jT808_0x9201.MediaType); Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9201.BeginTime); Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9201.EndTime); - Assert.Equal(3, jT808_0x9201.FastForwardOrFastRewindMultiples); - Assert.Equal(5, jT808_0x9201.MemType); - Assert.Equal(6, jT808_0x9201.PlayBackWay); + Assert.Equal(3, jT808_0x9201.PlaySpeed); + Assert.Equal(5, jT808_0x9201.MemoryType); + Assert.Equal(6, jT808_0x9201.PlaybackWay); Assert.Equal("127.0.0.1", jT808_0x9201.ServerIp); Assert.Equal(9, jT808_0x9201.ServerIpLength); Assert.Equal(7, jT808_0x9201.StreamType); diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs index 83a7ba7..3c2829e 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs @@ -39,10 +39,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9202 jT808_0x9202 = new JT808_0x9202() { - AVChannelNo=1, - DragPlaybackPosition=Convert.ToDateTime("2019-07-16 10:10:10"), - FastForwardOrFastRewindMultiples=2, - PlayBackControl=3 + ChannelNo=1, + DragPlayPosition=Convert.ToDateTime("2019-07-16 10:10:10"), + PlaySpeed=2, + PlayControl=3 }; var hex = JT808Serializer.Serialize(jT808_0x9202).ToHexString(); Assert.Equal("010302190716101010", hex); @@ -52,10 +52,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { var jT808_0x9202 = JT808Serializer.Deserialize("010302190716101010".ToHexBytes()); - Assert.Equal(1, jT808_0x9202.AVChannelNo); - Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9202.DragPlaybackPosition); - Assert.Equal(2, jT808_0x9202.FastForwardOrFastRewindMultiples); - Assert.Equal(3, jT808_0x9202.PlayBackControl); + Assert.Equal(1, jT808_0x9202.ChannelNo); + Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9202.DragPlayPosition); + Assert.Equal(2, jT808_0x9202.PlaySpeed); + Assert.Equal(3, jT808_0x9202.PlayControl); } [Fact] public void Test3() diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs index e49b8a8..7598a6f 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs @@ -40,10 +40,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test JT808_0x9205 jT808_0x9205 = new JT808_0x9205() { AlarmFlag=1, - AVResourceType=2, + MediaType=2, BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), - LogicChannelNo=3, + ChannelNo=3, MemoryType=4, StreamType =5 }; @@ -56,10 +56,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test { var jT808_0x9205 = JT808Serializer.Deserialize("031907161010101907161010110000000000000001020504".ToHexBytes()); Assert.Equal(1u, jT808_0x9205.AlarmFlag); - Assert.Equal(2, jT808_0x9205.AVResourceType); + Assert.Equal(2, jT808_0x9205.MediaType); Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9205.BeginTime); Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:11"), jT808_0x9205.EndTime); - Assert.Equal(3, jT808_0x9205.LogicChannelNo); + Assert.Equal(3, jT808_0x9205.ChannelNo); Assert.Equal(4, jT808_0x9205.MemoryType); Assert.Equal(5, jT808_0x9205.StreamType); } diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs index fcf0fa0..7fa3a03 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs @@ -40,10 +40,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test JT808_0x9206 jT808_0x9206 = new JT808_0x9206() { AlarmFlag=1, - AVResourceType=2, + MediaType=2, BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), - LogicChannelNo=3, + ChannelNo=3, StreamType =5, FileUploadPath ="D://1112", FileUploadPathLength=8, @@ -66,10 +66,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test { var jT808_0x9206 = JT808Serializer.Deserialize("093132372E302E302E31032802746B0631323334353608443A2F2F31313132031907161010101907161010110000000102050407".ToHexBytes()); Assert.Equal(1u, jT808_0x9206.AlarmFlag); - Assert.Equal(2, jT808_0x9206.AVResourceType); + Assert.Equal(2, jT808_0x9206.MediaType); Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT808_0x9206.BeginTime); Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:11"), jT808_0x9206.EndTime); - Assert.Equal(3, jT808_0x9206.LogicChannelNo); + Assert.Equal(3, jT808_0x9206.ChannelNo); Assert.Equal(5, jT808_0x9206.StreamType); Assert.Equal("D://1112", jT808_0x9206.FileUploadPath); Assert.Equal(8, jT808_0x9206.FileUploadPathLength); diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs index 0891480..bab269f 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs @@ -39,7 +39,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9301 jT808_0x9301 = new JT808_0x9301() { - LogicChannelNo=1, + ChannelNo=1, Speed=2, Direction=3 }; @@ -51,7 +51,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { var jT808_0x9301 = JT808Serializer.Deserialize("010302".ToHexBytes()); - Assert.Equal(1, jT808_0x9301.LogicChannelNo); + Assert.Equal(1, jT808_0x9301.ChannelNo); Assert.Equal(2, jT808_0x9301.Speed); Assert.Equal(3, jT808_0x9301.Direction); } diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs index 64a079d..d72ac0c 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs @@ -39,7 +39,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9303 jT808_0x9303 = new JT808_0x9303() { - LogicChannelNo=1, + ChannelNo=1, IrisAdjustment=2 }; var hex = JT808Serializer.Serialize(jT808_0x9303).ToHexString(); @@ -50,7 +50,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { var jT808_0x9303 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(1, jT808_0x9303.LogicChannelNo); + Assert.Equal(1, jT808_0x9303.ChannelNo); Assert.Equal(2, jT808_0x9303.IrisAdjustment); } [Fact] diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs index 6056c5a..5cb9962 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs @@ -39,7 +39,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9304 jT808_0x9304 = new JT808_0x9304() { - LogicChannelNo=1, + ChannelNo=1, StartOrStop=2 }; var hex = JT808Serializer.Serialize(jT808_0x9304).ToHexString(); @@ -50,7 +50,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { var jT808_0x9304 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(1, jT808_0x9304.LogicChannelNo); + Assert.Equal(1, jT808_0x9304.ChannelNo); Assert.Equal(2, jT808_0x9304.StartOrStop); } [Fact] diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs index b65f96c..7dd7751 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs @@ -39,7 +39,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9305 jT808_0x9305 = new JT808_0x9305() { - LogicChannelNo=1, + ChannelNo=1, StartOrStop=2 }; var hex = JT808Serializer.Serialize(jT808_0x9305).ToHexString(); diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs index 3cd7aee..3f3c633 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs @@ -39,7 +39,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9306 jT808_0x9306 = new JT808_0x9306() { - LogicChannelNo=1, + ChannelNo=1, ChangeMultipleControl=2 }; var hex = JT808Serializer.Serialize(jT808_0x9306).ToHexString(); @@ -50,7 +50,7 @@ namespace JT808.Protocol.Extensions.JT1078.Test public void Test2() { var jT808_0x9306 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(1, jT808_0x9306.LogicChannelNo); + Assert.Equal(1, jT808_0x9306.ChannelNo); Assert.Equal(2, jT808_0x9306.ChangeMultipleControl); } [Fact] diff --git a/src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs b/src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs index abe8e49..6d916c8 100644 --- a/src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs +++ b/src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs @@ -1,10 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace JT808.Protocol.Extensions.JT1078.Enums +namespace JT808.Protocol.Extensions.JT1078.Enums { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public enum JT808_JT1078_MsgId:ushort + { 终端上传音视频属性 = 0x1003, 终端上传乘客流量 = 0x1005, @@ -26,4 +24,5 @@ namespace JT808.Protocol.Extensions.JT1078.Enums 红外补光控制 = 0x9305, 云台变倍控制 = 0x9306 } + #pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } diff --git a/src/JT808.Protocol.Extensions.JT1078/Enums/VideoRelateAlarmType.cs b/src/JT808.Protocol.Extensions.JT1078/Enums/VideoRelateAlarmType.cs index 95527e3..b4641ab 100644 --- a/src/JT808.Protocol.Extensions.JT1078/Enums/VideoRelateAlarmType.cs +++ b/src/JT808.Protocol.Extensions.JT1078/Enums/VideoRelateAlarmType.cs @@ -1,10 +1,9 @@ using System; -using System.Collections.Generic; -using System.Text; namespace JT808.Protocol.Extensions.JT1078.Enums { [Flags] +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public enum VideoRelateAlarmType:uint { 视频信号丢失报警=0, @@ -15,4 +14,5 @@ namespace JT808.Protocol.Extensions.JT1078.Enums 异常驾驶行为报警=32, 特殊报警录像达到存储阈值报警=64, } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9003.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9003.cs index 21652f7..fc04943 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9003.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9003.cs @@ -9,8 +9,11 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9003:JT808Bodies { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "查询终端音视频属性"; + public override ushort MsgId => 0x9003; public override bool SkipSerialization { get; set; } = true; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9101.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9101.cs index 5be4c2f..3473455 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9101.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9101.cs @@ -9,32 +9,35 @@ using System.Text.Json; namespace JT808.Protocol.Extensions.JT1078.MessageBody { /// - /// 实时音视频传输请求 + /// 实时音视频传输请求(live、talk、listen、fanout、passThrough直播、对讲、监听、广播、透传请求) /// public class JT808_0x9101: JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "实时音视频传输请求"; public override ushort MsgId => 0x9101; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 + /// - /// 服务器IP地址长度 + /// 视频服务器IP地址长度 /// - public byte ServerIPAddressLength { get; set; } + public byte ServerIpLength { get;internal set; } /// - /// 服务器IP地址 + /// 视频服务器IP地址 /// - public string ServerIPAddress { get; set; } + public string ServerIp { get; set; } /// - /// 服务器视频通道监听端口号(TCP) + /// 视频服务器TCP端口号,不使用TCP协议传输时保持默认值0即可(TCP和UDP二选一,当TCP和UDP均非默认值时一般以TCP为准) /// - public ushort ServerVideoChannelTcpPort { get; set; } + public ushort TcpPort { get; set; } /// - /// 服务器视频通道监听端口号(UDP) + /// 视频服务器UDP端口号,不使用UDP协议传输时保持默认值0即可(TCP和UDP二选一,当TCP和UDP均非默认值时一般以TCP为准) /// - public ushort ServerVideoChannelUdpPort { get; set; } + public ushort UdpPort { get; set; } /// /// 逻辑通道号 /// - public byte LogicalChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 数据类型 /// 0:音视频 @@ -52,105 +55,98 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public byte StreamType { get; set; } + /// + /// 格式分析 + /// + /// + /// + /// public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { - JT808_0x9101 value = new JT808_0x9101(); - value.ServerIPAddressLength = reader.ReadByte(); - writer.WriteNumber($"[{value.ServerIPAddressLength.ReadNumber()}]服务器IP地址长度", value.ServerIPAddressLength); - string ipHex = reader.ReadVirtualArray(value.ServerIPAddressLength).ToArray().ToHexString(); - value.ServerIPAddress = reader.ReadString(value.ServerIPAddressLength); - writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIPAddress); - value.ServerVideoChannelTcpPort = reader.ReadUInt16(); - writer.WriteNumber($"[{value.ServerVideoChannelTcpPort.ReadNumber()}]服务器视频通道监听端口号(TCP)", value.ServerVideoChannelTcpPort); - value.ServerVideoChannelUdpPort = reader.ReadUInt16(); - writer.WriteNumber($"[{value.ServerVideoChannelUdpPort.ReadNumber()}]服务器视频通道监听端口号(UDP)", value.ServerVideoChannelUdpPort); - value.LogicalChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicalChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicalChannelNo)); + var value = new JT808_0x9101(); + value.ServerIpLength = reader.ReadByte(); + writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength); + string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString(); + value.ServerIp = reader.ReadString(value.ServerIpLength); + writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIp); + value.TcpPort = reader.ReadUInt16(); + writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]服务器视频通道监听端口号(TCP)", value.TcpPort); + value.UdpPort = reader.ReadUInt16(); + writer.WriteNumber($"[{value.UdpPort.ReadNumber()}]服务器视频通道监听端口号(UDP)", value.UdpPort); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.DataType = reader.ReadByte(); writer.WriteString($"[{value.DataType.ReadNumber()}]数据类型", DataTypeDisplay(value.DataType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", value.StreamType==0?"主码流":"子码流"); string DataTypeDisplay(byte DataType) { - switch (DataType) + return DataType switch { - case 0: - return "音视频"; - case 1: - return "视频"; - case 2: - return "双向对讲"; - case 3: - return "监听"; - case 4: - return "中心广播"; - case 5: - return "透传"; - default: - break; - } - - return "未知"; + 0 => "音视频", + 1 => "视频", + 2 => "双向对讲", + 3 => "监听", + 4 => "中心广播", + 5 => "透传", + _ => "未知", + }; } string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } + /// + /// 反序列化 + /// + /// + /// + /// public JT808_0x9101 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9101 jT808_0X9101 = new JT808_0x9101(); - jT808_0X9101.ServerIPAddressLength = reader.ReadByte(); - jT808_0X9101.ServerIPAddress = reader.ReadString(jT808_0X9101.ServerIPAddressLength); - jT808_0X9101.ServerVideoChannelTcpPort = reader.ReadUInt16(); - jT808_0X9101.ServerVideoChannelUdpPort = reader.ReadUInt16(); - jT808_0X9101.LogicalChannelNo = reader.ReadByte(); - jT808_0X9101.DataType = reader.ReadByte(); - jT808_0X9101.StreamType = reader.ReadByte(); - return jT808_0X9101; + var jT808_0x9101 = new JT808_0x9101(); + jT808_0x9101.ServerIpLength = reader.ReadByte(); + jT808_0x9101.ServerIp = reader.ReadString(jT808_0x9101.ServerIpLength); + jT808_0x9101.TcpPort = reader.ReadUInt16(); + jT808_0x9101.UdpPort = reader.ReadUInt16(); + jT808_0x9101.ChannelNo = reader.ReadByte(); + jT808_0x9101.DataType = reader.ReadByte(); + jT808_0x9101.StreamType = reader.ReadByte(); + return jT808_0x9101; } + /// + /// 序列化 + /// + /// + /// + /// public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9101 value, IJT808Config config) { writer.Skip(1, out int position); - writer.WriteString(value.ServerIPAddress); + writer.WriteString(value.ServerIp); writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - position - 1), position); - writer.WriteUInt16(value.ServerVideoChannelTcpPort); - writer.WriteUInt16(value.ServerVideoChannelUdpPort); - writer.WriteByte(value.LogicalChannelNo); + writer.WriteUInt16(value.TcpPort); + writer.WriteUInt16(value.UdpPort); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.DataType); writer.WriteByte(value.StreamType); } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9102.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9102.cs index cd73d2a..fd4a5e1 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9102.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9102.cs @@ -9,16 +9,18 @@ using System.Text.Json; namespace JT808.Protocol.Extensions.JT1078.MessageBody { /// - /// 音视频实时传输控制 + /// 音视频实时传输控制(LiveControl直播控制) /// - public class JT808_0x9102: JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze + public class JT808_0x9102 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "音视频实时传输控制"; public override ushort MsgId => 0x9102; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 逻辑通道号 /// - public byte LogicalChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 控制指令 /// 平台可以通过该指令对设备的实时音视频进行控制: @@ -43,106 +45,98 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0:主码流 /// 1:子码流 /// - public byte SwitchStreamType { get; set; } + public byte StreamType { get; set; } + /// + /// 格式分析 + /// + /// + /// + /// public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9102 value = new JT808_0x9102(); - value.LogicalChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicalChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicalChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.ControlCmd = reader.ReadByte(); writer.WriteString($"[{value.ControlCmd.ReadNumber()}]控制指令", ControlCmdDisplay(value.ControlCmd)); value.CloseAVData = reader.ReadByte(); writer.WriteString($"[{value.CloseAVData.ReadNumber()}]关闭音视频类型", CloseAVDataDisplay(value.CloseAVData)); - value.SwitchStreamType = reader.ReadByte(); - writer.WriteString($"[{value.SwitchStreamType.ReadNumber()}]切换码流类型", value.SwitchStreamType==0?"主码流":"子码流"); + value.StreamType = reader.ReadByte(); + writer.WriteString($"[{value.StreamType.ReadNumber()}]切换码流类型", value.StreamType == 0 ? "主码流" : "子码流"); - string CloseAVDataDisplay(byte CloseAVData) { - switch (CloseAVData) + string CloseAVDataDisplay(byte CloseAVData) + { + return CloseAVData switch { - case 0: - return "关闭该通道有关的音视频数据"; - case 1: - return "只关闭该通道有关的音频,保留该通道有关的视频"; - case 2: - return "只关闭该通道有关的视频,保留该通道有关的音频"; - default: - return "未知"; - } + 0 => "关闭该通道有关的音视频数据", + 1 => "只关闭该通道有关的音频,保留该通道有关的视频", + 2 => "只关闭该通道有关的视频,保留该通道有关的音频", + _ => "未知", + }; } - string ControlCmdDisplay(byte ControlCmd) { - switch (ControlCmd) + string ControlCmdDisplay(byte ControlCmd) + { + return ControlCmd switch { - case 0: - return "关闭音视频传输指令"; - case 1: - return "切换码流(增加暂停和继续)"; - case 2: - return "暂停该通道所有流的发送"; - case 3: - return "恢复暂停前流的发送,与暂停前的流类型一致"; - case 4: - return "关闭双向对讲"; - default: - return "未知"; - } + 0 => "关闭音视频传输指令", + 1 => "切换码流(增加暂停和继续)", + 2 => "暂停该通道所有流的发送", + 3 => "恢复暂停前流的发送,与暂停前的流类型一致", + 4 => "关闭双向对讲", + _ => "未知", + }; } string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } - + /// + /// 反序列化 + /// + /// + /// + /// public JT808_0x9102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9102 jT808_0X9102 = new JT808_0x9102(); - jT808_0X9102.LogicalChannelNo = reader.ReadByte(); + var jT808_0X9102 = new JT808_0x9102(); + jT808_0X9102.ChannelNo = reader.ReadByte(); jT808_0X9102.ControlCmd = reader.ReadByte(); jT808_0X9102.CloseAVData = reader.ReadByte(); - jT808_0X9102.SwitchStreamType = reader.ReadByte(); + jT808_0X9102.StreamType = reader.ReadByte(); return jT808_0X9102; } - + /// + /// 序列化 + /// + /// + /// + /// public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9102 value, IJT808Config config) { - writer.WriteByte(value.LogicalChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.ControlCmd); writer.WriteByte(value.CloseAVData); - writer.WriteByte(value.SwitchStreamType); + writer.WriteByte(value.StreamType); } } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9105.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9105.cs index 18f0044..9f10bc9 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9105.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9105.cs @@ -13,75 +13,79 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9105 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "实时音视频传输状态通知"; public override ushort MsgId => 0x9105; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// - /// 丢包率 + /// 丢包率 + /// 当前传输通道的丢包率,数值乘以100之后取整部分 /// - public byte DropRate { get; set; } + public byte DropRate { get; set; } + /// + /// + /// + /// + /// + /// public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9105 value = new JT808_0x9105(); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.DropRate = reader.ReadByte(); writer.WriteNumber($"[{value.DropRate.ReadNumber()}]丢包率", value.DropRate); string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } + /// + /// + /// + /// + /// + /// public JT808_0x9105 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x9105 jT808_0x9105 = new JT808_0x9105(); - jT808_0x9105.LogicChannelNo = reader.ReadByte(); + jT808_0x9105.ChannelNo = reader.ReadByte(); jT808_0x9105.DropRate = reader.ReadByte(); return jT808_0x9105; } - + /// + /// + /// + /// + /// + /// public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9105 value, IJT808Config config) { - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.DropRate); } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9201.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9201.cs index f81cf33..3aeff31 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9201.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9201.cs @@ -9,12 +9,14 @@ using System.Text.Json; namespace JT808.Protocol.Extensions.JT1078.MessageBody { /// - /// 平台下发远程录像回放请求 + /// 平台下发远程录像回放请求(vod点播请求) /// public class JT808_0x9201 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "平台下发远程录像回放请求"; public override ushort MsgId => 0x9201; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 服务器IP地址长度 /// @@ -24,49 +26,77 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public string ServerIp { get; set; } /// - /// 服务器音视频通道监听端口号TCP + /// 视频服务器TCP端口号,不使用TCP协议传输时保持默认值0即可(TCP和UDP二选一,当TCP和UDP均非默认值时一般以TCP为准) /// public ushort TcpPort { get; set; } /// - /// 服务器音视频通道监听端口号UDP + /// 视频服务器UDP端口号,不使用UDP协议传输时保持默认值0即可(TCP和UDP二选一,当TCP和UDP均非默认值时一般以TCP为准) /// public ushort UdpPort { get; set; } /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// - /// 音视频类型 + /// 音视频类型(媒体类型) + /// 0:audio and video + /// 1:audio + /// 2:video + /// 3:audio or video /// - public byte AVItemType { get; set; } + public byte MediaType { get; set; } /// /// 码流类型 + /// 0:主或子码流 + /// 1:主 + /// 2:子 + /// 如果此通道只传输音频,置为0 /// public byte StreamType { get; set; } /// /// 存储器类型 + /// 0:主或灾备存储器 + /// 1:主存储器 + /// 2:灾备存储器 /// - public byte MemType { get; set; } + public byte MemoryType { get; set; } /// /// 回放方式 + /// 0:正常 + /// 1:快进 + /// 2:关键帧快退回放 + /// 3:关键帧播放 + /// 4:单帧上传 /// - public byte PlayBackWay { get; set; } + public byte PlaybackWay { get; set; } /// - /// 快进或快退倍数 + /// 快进或快退倍数,当为1和2时,此字段有效,否则置0 + /// 0:无效 + /// 1:1倍 + /// 2:2倍 + /// 3:4倍 + /// 4:8倍 + /// 5:16倍 /// - public byte FastForwardOrFastRewindMultiples { get; set; } + public byte PlaySpeed { get; set; } /// - /// 起始时间 + /// 开始时间,当为4时,该字段表示单帧上传时间 /// public DateTime BeginTime { get; set; } /// - /// 结束时间 + /// 结束时间,当为4时,该字段无效 /// public DateTime EndTime { get; set; } + /// + /// 格式分析 + /// + /// + /// + /// public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { - JT808_0x9201 value = new JT808_0x9201(); + var value = new JT808_0x9201(); value.ServerIpLength = reader.ReadByte(); writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength); string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString(); @@ -76,144 +106,107 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]服务器视频通道监听端口号(TCP)", value.TcpPort); value.UdpPort = reader.ReadUInt16(); writer.WriteNumber($"[{value.UdpPort.ReadNumber()}]服务器视频通道监听端口号(UDP)", value.UdpPort); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); - value.AVItemType = reader.ReadByte(); - writer.WriteString($"[{value.AVItemType.ReadNumber()}]音视频类型", AVItemTypeDisplay(value.AVItemType)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); + value.MediaType = reader.ReadByte(); + writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVItemTypeDisplay(value.MediaType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType)); - value.MemType = reader.ReadByte(); - writer.WriteString($"[{value.MemType.ReadNumber()}]存储器类型", MemTypeDisplay(value.MemType)); - value.PlayBackWay = reader.ReadByte(); - writer.WriteString($"[{value.PlayBackWay.ReadNumber()}]回访方式", PlayBackWayDisplay(value.PlayBackWay)); - value.FastForwardOrFastRewindMultiples = reader.ReadByte(); - writer.WriteString($"[{value.FastForwardOrFastRewindMultiples.ReadNumber()}]快进或快退倍数", FastForwardOrFastRewindMultiplesDisplay(value.FastForwardOrFastRewindMultiples)); + value.MemoryType = reader.ReadByte(); + writer.WriteString($"[{value.MemoryType.ReadNumber()}]存储器类型", MemTypeDisplay(value.MemoryType)); + value.PlaybackWay = reader.ReadByte(); + writer.WriteString($"[{value.PlaybackWay.ReadNumber()}]回访方式", PlayBackWayDisplay(value.PlaybackWay)); + value.PlaySpeed = reader.ReadByte(); + writer.WriteString($"[{value.PlaySpeed.ReadNumber()}]快进或快退倍数", FastForwardOrFastRewindMultiplesDisplay(value.PlaySpeed)); value.BeginTime = reader.ReadDateTime6(); - writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); + writer.WriteString($"[{value.BeginTime:yyMMddHHmmss}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime6(); - writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); - string AVItemTypeDisplay(byte AVItemType) + writer.WriteString($"[{value.EndTime:yyMMddHHmmss}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); + static string AVItemTypeDisplay(byte AVItemType) { - switch (AVItemType) + return AVItemType switch { - case 0: - return "音视频"; - case 1: - return "音频"; - case 2: - return "视频"; - case 3: - return "音频或视频"; - default: - return "未知"; - } + 0 => "音视频", + 1 => "音频", + 2 => "视频", + 3 => "音频或视频", + _ => "未知", + }; } - string StreamTypeDisplay(byte StreamType) + static string StreamTypeDisplay(byte StreamType) { - switch (StreamType) + return StreamType switch { - case 0: - return "主码流或子码流"; - case 1: - return "主码流"; - case 2: - return "子码流"; - default: - return "未知"; - } + 0 => "主码流或子码流", + 1 => "主码流", + 2 => "子码流", + _ => "未知", + }; } - string MemTypeDisplay(byte MemType) + static string MemTypeDisplay(byte MemType) { - switch (MemType) + return MemType switch { - case 0: - return "主存储器或灾备服务器"; - case 1: - return "主存储器"; - case 2: - return "灾备服务器"; - default: - return "未知"; - } + 0 => "主存储器或灾备服务器", + 1 => "主存储器", + 2 => "灾备服务器", + _ => "未知", + }; } - string PlayBackWayDisplay(byte PlayBackWay) + static string PlayBackWayDisplay(byte PlayBackWay) { - switch (PlayBackWay) + return PlayBackWay switch { - case 0: - return "正常回放"; - case 1: - return "快进回放"; - case 2: - return "关键帧快退回访"; - case 3: - return "关键帧播放"; - case 4: - return "单帧上传"; - default: - return "未知"; - } + 0 => "正常回放", + 1 => "快进回放", + 2 => "关键帧快退回访", + 3 => "关键帧播放", + 4 => "单帧上传", + _ => "未知", + }; } - string FastForwardOrFastRewindMultiplesDisplay(byte FastForwardOrFastRewindMultiples) + static string FastForwardOrFastRewindMultiplesDisplay(byte FastForwardOrFastRewindMultiples) { - switch (FastForwardOrFastRewindMultiples) + return FastForwardOrFastRewindMultiples switch { - case 0: - return "无效"; - case 1: - return "1倍"; - case 2: - return "2倍"; - case 3: - return "4倍"; - case 4: - return "8倍"; - case 5: - return "16倍"; - default: - return "未知"; - } + 0 => "无效", + 1 => "1倍", + 2 => "2倍", + 3 => "4倍", + 4 => "8倍", + 5 => "16倍", + _ => "未知", + }; } - string LogicalChannelNoDisplay(byte LogicalChannelNo) + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } - + /// + /// 反序列化 + /// + /// + /// + /// public JT808_0x9201 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x9201 jT808_0x9201 = new JT808_0x9201(); @@ -221,17 +214,23 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody jT808_0x9201.ServerIp = reader.ReadString(jT808_0x9201.ServerIpLength); jT808_0x9201.TcpPort = reader.ReadUInt16(); jT808_0x9201.UdpPort = reader.ReadUInt16(); - jT808_0x9201.LogicChannelNo = reader.ReadByte(); - jT808_0x9201.AVItemType = reader.ReadByte(); + jT808_0x9201.ChannelNo = reader.ReadByte(); + jT808_0x9201.MediaType = reader.ReadByte(); jT808_0x9201.StreamType = reader.ReadByte(); - jT808_0x9201.MemType = reader.ReadByte(); - jT808_0x9201.PlayBackWay = reader.ReadByte(); - jT808_0x9201.FastForwardOrFastRewindMultiples = reader.ReadByte(); + jT808_0x9201.MemoryType = reader.ReadByte(); + jT808_0x9201.PlaybackWay = reader.ReadByte(); + jT808_0x9201.PlaySpeed = reader.ReadByte(); jT808_0x9201.BeginTime = reader.ReadDateTime6(); jT808_0x9201.EndTime = reader.ReadDateTime6(); return jT808_0x9201; } + /// + /// 序列化 + /// + /// + /// + /// public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9201 value, IJT808Config config) { writer.Skip(1, out int position); @@ -239,12 +238,12 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - position - 1), position);//计算完字符串后,回写字符串长度 writer.WriteUInt16(value.TcpPort); writer.WriteUInt16(value.UdpPort); - writer.WriteByte(value.LogicChannelNo); - writer.WriteByte(value.AVItemType); + writer.WriteByte(value.ChannelNo); + writer.WriteByte(value.MediaType); writer.WriteByte(value.StreamType); - writer.WriteByte(value.MemType); - writer.WriteByte(value.PlayBackWay); - writer.WriteByte(value.FastForwardOrFastRewindMultiples); + writer.WriteByte(value.MemoryType); + writer.WriteByte(value.PlaybackWay); + writer.WriteByte(value.PlaySpeed); writer.WriteDateTime6(value.BeginTime); writer.WriteDateTime6(value.EndTime); } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9202.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9202.cs index 1278be5..f7a67fe 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9202.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9202.cs @@ -9,137 +9,136 @@ using System.Text.Json; namespace JT808.Protocol.Extensions.JT1078.MessageBody { /// - /// 平台下发远程录像回放控制 + /// 平台下发远程录像回放控制(VodControl点播控制) /// public class JT808_0x9202 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "平台下发远程录像回放控制"; public override ushort MsgId => 0x9202; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 音视频通道号 /// - public byte AVChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 回放控制 + /// 0:开始 + /// 1:暂停 + /// 2:结束 + /// 3:快进 + /// 4:关键帧快退播放 + /// 5:拖动(到指定位置) + /// 6:关键帧播放 /// - public byte PlayBackControl { get; set; } + public byte PlayControl { get; set; } /// - /// 快进或快退倍数 + /// 快进或快退倍数,当为3和4时,此字段有效,否则置0 + /// 0:无效 + /// 1:1倍 + /// 2:2倍 + /// 3:4倍 + /// 4:8倍 + /// 5:16倍 /// - public byte FastForwardOrFastRewindMultiples { get; set; } + public byte PlaySpeed { get; set; } /// - /// 拖动回放位置 + /// 拖动回放位置,当为5时有效(必须) /// - public DateTime DragPlaybackPosition { get; set; } - + public DateTime DragPlayPosition { get; set; } + /// + /// + /// + /// + /// + /// public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9202 value = new JT808_0x9202(); - value.AVChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.AVChannelNo.ReadNumber()}]音视频通道号", AVChannelNoDisplay(value.AVChannelNo)); - value.PlayBackControl = reader.ReadByte(); - writer.WriteString($"[{value.PlayBackControl.ReadNumber()}]回放控制", PlayBackControlDisplay(value.PlayBackControl)); - value.FastForwardOrFastRewindMultiples = reader.ReadByte(); - writer.WriteString($"[{value.FastForwardOrFastRewindMultiples.ReadNumber()}]快进或快退倍数", FastForwardOrFastRewindMultiplesDisplay(value.FastForwardOrFastRewindMultiples)); - value.DragPlaybackPosition = reader.ReadDateTime6(); - writer.WriteString($"[{value.DragPlaybackPosition.ToString("yyMMddHHmmss")}]拖动回放位置", value.DragPlaybackPosition.ToString("yyyy-MM-dd HH:mm:ss")); - string AVChannelNoDisplay(byte LogicalChannelNo) + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]音视频通道号", AVChannelNoDisplay(value.ChannelNo)); + value.PlayControl = reader.ReadByte(); + writer.WriteString($"[{value.PlayControl.ReadNumber()}]回放控制", PlayBackControlDisplay(value.PlayControl)); + value.PlaySpeed = reader.ReadByte(); + writer.WriteString($"[{value.PlaySpeed.ReadNumber()}]快进或快退倍数", FastForwardOrFastRewindMultiplesDisplay(value.PlaySpeed)); + value.DragPlayPosition = reader.ReadDateTime6(); + writer.WriteString($"[{value.DragPlayPosition.ToString("yyMMddHHmmss")}]拖动回放位置", value.DragPlayPosition.ToString("yyyy-MM-dd HH:mm:ss")); + static string AVChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } - string PlayBackControlDisplay(byte PlayBackControl) { - switch (PlayBackControl) + static string PlayBackControlDisplay(byte PlayBackControl) { + return PlayBackControl switch { - case 0: - return "开始回放"; - case 1: - return "暂停回放"; - case 2: - return "结束回放"; - case 3: - return "快进回放"; - case 4: - return "关键帧快退回放"; - case 5: - return "拖动回放"; - case 6: - return "关键帧播放"; - default: - return "未知"; - } + 0 => "开始回放", + 1 => "暂停回放", + 2 => "结束回放", + 3 => "快进回放", + 4 => "关键帧快退回放", + 5 => "拖动回放", + 6 => "关键帧播放", + _ => "未知", + }; } - string FastForwardOrFastRewindMultiplesDisplay(byte FastForwardOrFastRewindMultiples) + static string FastForwardOrFastRewindMultiplesDisplay(byte FastForwardOrFastRewindMultiples) { - switch (FastForwardOrFastRewindMultiples) + return FastForwardOrFastRewindMultiples switch { - case 0: - return "无效"; - case 1: - return "1倍"; - case 2: - return "2倍"; - case 3: - return "4倍"; - case 4: - return "8倍"; - case 5: - return "16倍"; - default: - return "未知"; - } + 0 => "无效", + 1 => "1倍", + 2 => "2倍", + 3 => "4倍", + 4 => "8倍", + 5 => "16倍", + _ => "未知", + }; } } - + /// + /// + /// + /// + /// + /// public JT808_0x9202 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9202 jT808_0x9202 = new JT808_0x9202(); - jT808_0x9202.AVChannelNo = reader.ReadByte(); - jT808_0x9202.PlayBackControl = reader.ReadByte(); - jT808_0x9202.FastForwardOrFastRewindMultiples = reader.ReadByte(); - jT808_0x9202.DragPlaybackPosition = reader.ReadDateTime6(); + var jT808_0x9202 = new JT808_0x9202(); + jT808_0x9202.ChannelNo = reader.ReadByte(); + jT808_0x9202.PlayControl = reader.ReadByte(); + jT808_0x9202.PlaySpeed = reader.ReadByte(); + jT808_0x9202.DragPlayPosition = reader.ReadDateTime6(); return jT808_0x9202; } - + /// + /// + /// + /// + /// + /// public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9202 value, IJT808Config config) { - writer.WriteByte(value.AVChannelNo); - writer.WriteByte(value.PlayBackControl); - writer.WriteByte(value.FastForwardOrFastRewindMultiples); - writer.WriteDateTime6(value.DragPlaybackPosition); + writer.WriteByte(value.ChannelNo); + writer.WriteByte(value.PlayControl); + writer.WriteByte(value.PlaySpeed); + writer.WriteDateTime6(value.DragPlayPosition); } } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9205.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9205.cs index a88b5f1..a882789 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9205.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9205.cs @@ -13,12 +13,14 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9205 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "查询资源列表"; public override ushort MsgId => 0x9205; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 开始时间 /// @@ -33,127 +35,108 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody public ulong AlarmFlag { get; set; } /// /// 音视频资源类型 + /// 0:audio and video + /// 1:audio + /// 2:video + /// 3:audio or video /// - public byte AVResourceType { get; set; } + public byte MediaType { get; set; } /// /// 码流类型 + /// 0:主或子码流 + /// 1:主 + /// 2:子 /// public byte StreamType { get; set; } /// /// 存储器类型 + /// 0:主或灾备存储器 + /// 1:主存储器 + /// 2:灾备存储器 /// public byte MemoryType { get; set; } - +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9205 value = new JT808_0x9205(); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.BeginTime = reader.ReadDateTime6(); writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime6(); writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]起始时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); value.AlarmFlag = reader.ReadUInt64(); writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag); - value.AVResourceType = reader.ReadByte(); - writer.WriteString($"[{value.AVResourceType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.AVResourceType)); + value.MediaType = reader.ReadByte(); + writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.MediaType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType)); value.MemoryType = reader.ReadByte(); writer.WriteString($"[{value.MemoryType.ReadNumber()}]存储器类型", MemoryTypeDisplay(value.MemoryType)); - string AVResourceTypeDisplay(byte AVResourceType) + static string AVResourceTypeDisplay(byte AVResourceType) { - switch (AVResourceType) + return AVResourceType switch { - case 0: - return "音视频"; - case 1: - return "音频"; - case 2: - return "视频"; - case 3: - return "音频或视频"; - default: - return "未知"; - } + 0 => "音视频", + 1 => "音频", + 2 => "视频", + 3 => "音频或视频", + _ => "未知", + }; } - string StreamTypeDisplay(byte StreamType) + static string StreamTypeDisplay(byte StreamType) { - switch (StreamType) + return StreamType switch { - case 0: - return "所有码流"; - case 1: - return "主码流"; - case 2: - return "子码流"; - default: - return "未知"; - } + 0 => "所有码流", + 1 => "主码流", + 2 => "子码流", + _ => "未知", + }; } - string MemoryTypeDisplay(byte MemType) + static string MemoryTypeDisplay(byte MemType) { - switch (MemType) + return MemType switch { - case 0: - return "所有存储器"; - case 1: - return "主存储器"; - case 2: - return "灾备服务器"; - default: - return "未知"; - } + 0 => "所有存储器", + 1 => "主存储器", + 2 => "灾备服务器", + _ => "未知", + }; } - string LogicalChannelNoDisplay(byte LogicalChannelNo) + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } public JT808_0x9205 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9205 jT808_0x9205 = new JT808_0x9205(); - jT808_0x9205.LogicChannelNo = reader.ReadByte(); + var jT808_0x9205 = new JT808_0x9205(); + jT808_0x9205.ChannelNo = reader.ReadByte(); jT808_0x9205.BeginTime = reader.ReadDateTime6(); jT808_0x9205.EndTime = reader.ReadDateTime6(); jT808_0x9205.AlarmFlag = reader.ReadUInt64(); - jT808_0x9205.AVResourceType = reader.ReadByte(); + jT808_0x9205.MediaType = reader.ReadByte(); jT808_0x9205.StreamType = reader.ReadByte(); jT808_0x9205.MemoryType = reader.ReadByte(); return jT808_0x9205; @@ -161,13 +144,14 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9205 value, IJT808Config config) { - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteDateTime6(value.BeginTime); writer.WriteDateTime6(value.EndTime); writer.WriteUInt64(value.AlarmFlag); - writer.WriteByte(value.AVResourceType); + writer.WriteByte(value.MediaType); writer.WriteByte(value.StreamType); writer.WriteByte(value.MemoryType); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9206.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9206.cs index 068b081..5e795f6 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9206.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9206.cs @@ -13,12 +13,14 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9206 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "文件上传指令"; public override ushort MsgId => 0x9206; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 服务器IP地址服务 /// - public byte ServerIpLength { get; set; } + public byte ServerIpLength { get;internal set; } /// /// 服务器IP地址 /// @@ -30,7 +32,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// /// 用户名长度 /// - public byte UserNameLength { get; set; } + public byte UserNameLength { get; internal set; } /// /// 用户名 /// @@ -38,7 +40,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// /// 密码长度 /// - public byte PasswordLength { get; set; } + public byte PasswordLength { get; internal set; } /// /// 密码 /// @@ -46,7 +48,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// /// 文件上传路径长度 /// - public byte FileUploadPathLength { get; set; } + public byte FileUploadPathLength { get; internal set; } /// /// 文件上传路径 /// @@ -54,7 +56,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 起始时间 /// @@ -70,7 +72,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// /// 音视频资源类型 /// - public byte AVResourceType { get; set; } + public byte MediaType { get; set; } /// /// 码流类型 /// @@ -84,6 +86,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public byte TaskExcuteCondition { get; set; } +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9206 value = new JT808_0x9206(); @@ -110,16 +113,16 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody value.FileUploadPath = reader.ReadString(value.FileUploadPathLength); writer.WriteString($"[{fileUploadPathHex}]文件上传路径", value.FileUploadPath); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.BeginTime = reader.ReadDateTime6(); writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime6(); writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]起始时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); value.AlarmFlag = reader.ReadUInt32(); writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag); - value.AVResourceType = reader.ReadByte(); - writer.WriteString($"[{value.AVResourceType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.AVResourceType)); + value.MediaType = reader.ReadByte(); + writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.MediaType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType)); value.MemoryPositon = reader.ReadByte(); @@ -127,90 +130,61 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody value.TaskExcuteCondition = reader.ReadByte(); writer.WriteString($"[{value.TaskExcuteCondition.ReadNumber()}]任务执行条件", TaskExcuteConditionDisplay(value.TaskExcuteCondition)); - string AVResourceTypeDisplay(byte AVResourceType) + static string AVResourceTypeDisplay(byte AVResourceType) { - switch (AVResourceType) + return AVResourceType switch { - case 0: - return "音视频"; - case 1: - return "音频"; - case 2: - return "视频"; - case 3: - return "音频或视频"; - default: - return "未知"; - } + 0 => "音视频", + 1 => "音频", + 2 => "视频", + 3 => "音频或视频", + _ => "未知", + }; } - string StreamTypeDisplay(byte StreamType) + static string StreamTypeDisplay(byte StreamType) { - switch (StreamType) + return StreamType switch { - case 0: - return "所有码流"; - case 1: - return "主码流"; - case 2: - return "子码流"; - default: - return "未知"; - } + 0 => "所有码流", + 1 => "主码流", + 2 => "子码流", + _ => "未知", + }; } - string MemoryPositonDisplay(byte MemoryPositon) + static string MemoryPositonDisplay(byte MemoryPositon) { - switch (MemoryPositon) + return MemoryPositon switch { - case 0: - return "主存储器或灾备服务器"; - case 1: - return "主存储器"; - case 2: - return "灾备服务器"; - default: - return "未知"; - } + 0 => "主存储器或灾备服务器", + 1 => "主存储器", + 2 => "灾备服务器", + _ => "未知", + }; } - string LogicalChannelNoDisplay(byte LogicalChannelNo) + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } - string TaskExcuteConditionDisplay(byte TaskExcuteCondition) { - string taskExcuteConditionDisplay = string.Empty; + static string TaskExcuteConditionDisplay(byte TaskExcuteCondition) { + var taskExcuteConditionDisplay = string.Empty; taskExcuteConditionDisplay += (TaskExcuteCondition & 0x01) == 1 ? ",WIFI":""; taskExcuteConditionDisplay += (TaskExcuteCondition & 0x01) == 1 ? ",LAN" : ""; taskExcuteConditionDisplay += (TaskExcuteCondition & 0x01) == 1 ? ",3G/4G" : ""; @@ -220,7 +194,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody public JT808_0x9206 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9206 jT808_0x9206 = new JT808_0x9206(); + var jT808_0x9206 = new JT808_0x9206(); jT808_0x9206.ServerIpLength = reader.ReadByte(); jT808_0x9206.ServerIp = reader.ReadString(jT808_0x9206.ServerIpLength); jT808_0x9206.Port = reader.ReadUInt16(); @@ -230,11 +204,11 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody jT808_0x9206.Password = reader.ReadString(jT808_0x9206.PasswordLength); jT808_0x9206.FileUploadPathLength = reader.ReadByte(); jT808_0x9206.FileUploadPath = reader.ReadString(jT808_0x9206.FileUploadPathLength); - jT808_0x9206.LogicChannelNo = reader.ReadByte(); + jT808_0x9206.ChannelNo = reader.ReadByte(); jT808_0x9206.BeginTime = reader.ReadDateTime6(); jT808_0x9206.EndTime = reader.ReadDateTime6(); jT808_0x9206.AlarmFlag = reader.ReadUInt32(); - jT808_0x9206.AVResourceType = reader.ReadByte(); + jT808_0x9206.MediaType = reader.ReadByte(); jT808_0x9206.StreamType = reader.ReadByte(); jT808_0x9206.MemoryPositon = reader.ReadByte(); jT808_0x9206.TaskExcuteCondition = reader.ReadByte(); @@ -256,14 +230,15 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody writer.Skip(1, out int fileUploadPathLengthLengthposition); writer.WriteString(value.FileUploadPath); writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - fileUploadPathLengthLengthposition - 1), fileUploadPathLengthLengthposition); - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteDateTime6(value.BeginTime); writer.WriteDateTime6(value.EndTime); writer.WriteUInt32(value.AlarmFlag); - writer.WriteByte(value.AVResourceType); + writer.WriteByte(value.MediaType); writer.WriteByte(value.StreamType); writer.WriteByte(value.MemoryPositon); writer.WriteByte(value.TaskExcuteCondition); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9207.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9207.cs index 1f54bc5..0867ffd 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9207.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9207.cs @@ -13,8 +13,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9207 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "文件上传控制"; public override ushort MsgId => 0x9207; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 流水号 /// @@ -24,6 +26,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public byte UploadControl { get; set; } +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9207 value = new JT808_0x9207(); @@ -31,24 +34,20 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody writer.WriteNumber($"[{value.MgsNum.ReadNumber()}]流水号", value.MgsNum); value.UploadControl = reader.ReadByte(); writer.WriteString($"[{value.UploadControl.ReadNumber()}]上传控制", UploadControlDisplay(value.UploadControl)); - string UploadControlDisplay(byte UploadControl) { - switch (UploadControl) + static string UploadControlDisplay(byte UploadControl) { + return UploadControl switch { - case 0: - return "暂停"; - case 1: - return "继续"; - case 2: - return "取消"; - default: - return "未知"; - } + 0 => "暂停", + 1 => "继续", + 2 => "取消", + _ => "未知", + }; } } public JT808_0x9207 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9207 jT808_0x9207 = new JT808_0x9207(); + var jT808_0x9207 = new JT808_0x9207(); jT808_0x9207.MgsNum = reader.ReadUInt16(); jT808_0x9207.UploadControl = reader.ReadByte(); return jT808_0x9207; @@ -59,5 +58,6 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody writer.WriteUInt16(value.MgsNum); writer.WriteByte(value.UploadControl); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9301.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9301.cs index e689e88..bbc7737 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9301.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9301.cs @@ -13,91 +13,77 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9301 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "云台旋转"; public override ushort MsgId => 0x9301; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 方向 + /// 0:停止 + /// 1:上 + /// 2:下 + /// 3:左 + /// 4:右 /// public byte Direction { get; set; } /// /// 速度 + /// 0-255 /// public byte Speed { get; set; } - +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9301 value = new JT808_0x9301(); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.Direction = reader.ReadByte(); writer.WriteString($"[{value.Direction.ReadNumber()}]方向", DirectionDisplay(value.Direction)); value.Speed = reader.ReadByte(); writer.WriteNumber($"[{value.Speed.ReadNumber()}]速度", value.Speed); - string LogicalChannelNoDisplay(byte LogicalChannelNo) + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } - string DirectionDisplay(byte Direction) { - switch (Direction) + static string DirectionDisplay(byte Direction) { + return Direction switch { - case 0: - return "停止"; - case 1: - return "上"; - case 2: - return "下"; - case 3: - return "左"; - case 4: - return "右"; - default: - return "未知"; - } + 0 => "停止", + 1 => "上", + 2 => "下", + 3 => "左", + 4 => "右", + _ => "未知", + }; } } public JT808_0x9301 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9301 jT808_0x9301 = new JT808_0x9301(); - jT808_0x9301.LogicChannelNo = reader.ReadByte(); + var jT808_0x9301 = new JT808_0x9301(); + jT808_0x9301.ChannelNo = reader.ReadByte(); jT808_0x9301.Direction = reader.ReadByte(); jT808_0x9301.Speed = reader.ReadByte(); return jT808_0x9301; @@ -105,9 +91,10 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9301 value, IJT808Config config) { - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.Direction); writer.WriteByte(value.Speed); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9302.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9302.cs index cd8b47a..27802fb 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9302.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9302.cs @@ -13,8 +13,11 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9302 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "云台调整焦距控制"; public override ushort MsgId => 0x9302; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 + /// /// 逻辑通道号 /// @@ -23,59 +26,43 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 焦距调整方向 /// public byte FocusAdjustmentDirection { get; set; } - +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { - JT808_0x9302 value = new JT808_0x9302(); - - + var value = new JT808_0x9302(); + value.LogicChannelNo = reader.ReadByte(); writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); value.FocusAdjustmentDirection = reader.ReadByte(); writer.WriteString($"[{value.FocusAdjustmentDirection.ReadNumber()}]焦距调整方向", value.FocusAdjustmentDirection==0?"焦距调大":"焦距调小"); - string LogicalChannelNoDisplay(byte LogicalChannelNo) + + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } public JT808_0x9302 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9302 jT808_0x9302 = new JT808_0x9302(); + var jT808_0x9302 = new JT808_0x9302(); jT808_0x9302.LogicChannelNo = reader.ReadByte(); jT808_0x9302.FocusAdjustmentDirection = reader.ReadByte(); return jT808_0x9302; @@ -86,5 +73,6 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody writer.WriteByte(value.LogicChannelNo); writer.WriteByte(value.FocusAdjustmentDirection); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9303.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9303.cs index b614ac4..7776400 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9303.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9303.cs @@ -13,76 +13,64 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9303 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "云台调整光圈控制"; public override ushort MsgId => 0x9303; +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 光圈调整方式 /// public byte IrisAdjustment { get; set; } - +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9303 value = new JT808_0x9303(); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.IrisAdjustment = reader.ReadByte(); writer.WriteString($"[{value.IrisAdjustment.ReadNumber()}]光圈调整方式", value.IrisAdjustment == 0 ? "调大" : "调小"); - string LogicalChannelNoDisplay(byte LogicalChannelNo) + + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } public JT808_0x9303 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9303 jT808_0x9303 = new JT808_0x9303(); - jT808_0x9303.LogicChannelNo = reader.ReadByte(); + var jT808_0x9303 = new JT808_0x9303(); + jT808_0x9303.ChannelNo = reader.ReadByte(); jT808_0x9303.IrisAdjustment = reader.ReadByte(); return jT808_0x9303; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9303 value, IJT808Config config) { - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.IrisAdjustment); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9304.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9304.cs index 1f031c3..8b01d6e 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9304.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9304.cs @@ -13,12 +13,13 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9304 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "云台雨刷控制"; public override ushort MsgId => 0x9304; /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 启停标识 /// @@ -27,62 +28,48 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9304 value = new JT808_0x9304(); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.StartOrStop = reader.ReadByte(); writer.WriteString($"[{value.StartOrStop.ReadNumber()}]启停标识", value.StartOrStop == 0 ? "停止" : "启动"); - string LogicalChannelNoDisplay(byte LogicalChannelNo) + + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } public JT808_0x9304 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9304 jT808_0x9304 = new JT808_0x9304(); - jT808_0x9304.LogicChannelNo = reader.ReadByte(); + var jT808_0x9304 = new JT808_0x9304(); + jT808_0x9304.ChannelNo = reader.ReadByte(); jT808_0x9304.StartOrStop = reader.ReadByte(); return jT808_0x9304; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9304 value, IJT808Config config) { - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.StartOrStop); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9305.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9305.cs index 5e1919d..aa2aa33 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9305.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9305.cs @@ -13,12 +13,13 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9305 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "红外补光控制"; public override ushort MsgId => 0x9305; /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 启停标识 /// @@ -27,62 +28,48 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9305 value = new JT808_0x9305(); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.StartOrStop = reader.ReadByte(); writer.WriteString($"[{value.StartOrStop.ReadNumber()}]启停标识", value.StartOrStop == 0 ? "停止" : "启动"); - string LogicalChannelNoDisplay(byte LogicalChannelNo) + + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } public JT808_0x9305 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9305 jT808_0x9305 = new JT808_0x9305(); - jT808_0x9305.LogicChannelNo = reader.ReadByte(); + var jT808_0x9305 = new JT808_0x9305(); + jT808_0x9305.ChannelNo = reader.ReadByte(); jT808_0x9305.StartOrStop = reader.ReadByte(); return jT808_0x9305; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9305 value, IJT808Config config) { - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.StartOrStop); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9306.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9306.cs index 8ac992a..c0f7f79 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9306.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x9306.cs @@ -13,12 +13,14 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public class JT808_0x9306 : JT808Bodies, IJT808MessagePackFormatter, IJT808Analyze { +#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public override string Description => "云台变倍控制"; + public override ushort MsgId => 0x9306; /// /// 逻辑通道号 /// - public byte LogicChannelNo { get; set; } + public byte ChannelNo { get; set; } /// /// 变倍控制 /// @@ -26,63 +28,49 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { - JT808_0x9306 value = new JT808_0x9306(); - value.LogicChannelNo = reader.ReadByte(); - writer.WriteString($"[{value.LogicChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.LogicChannelNo)); + var value = new JT808_0x9306(); + value.ChannelNo = reader.ReadByte(); + writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.ChangeMultipleControl = reader.ReadByte(); writer.WriteString($"[{value.ChangeMultipleControl.ReadNumber()}]变倍控制", value.ChangeMultipleControl == 0 ? "调大" : "调小"); - string LogicalChannelNoDisplay(byte LogicalChannelNo) + + static string LogicalChannelNoDisplay(byte LogicalChannelNo) { - switch (LogicalChannelNo) + return LogicalChannelNo switch { - case 1: - return "驾驶员"; - case 2: - return "车辆正前方"; - case 3: - return "车前门"; - case 4: - return "车厢前部"; - case 5: - return "车厢后部"; - case 7: - return "行李舱"; - case 8: - return "车辆左侧"; - case 9: - return "车辆右侧"; - case 10: - return "车辆正后方"; - case 11: - return "车厢中部"; - case 12: - return "车中门"; - case 13: - return "驾驶席车门"; - case 33: - return "驾驶员"; - case 36: - return "车厢前部"; - case 37: - return "车厢后部"; - default: - return "预留"; - } + 1 => "驾驶员", + 2 => "车辆正前方", + 3 => "车前门", + 4 => "车厢前部", + 5 => "车厢后部", + 7 => "行李舱", + 8 => "车辆左侧", + 9 => "车辆右侧", + 10 => "车辆正后方", + 11 => "车厢中部", + 12 => "车中门", + 13 => "驾驶席车门", + 33 => "驾驶员", + 36 => "车厢前部", + 37 => "车厢后部", + _ => "预留", + }; } } public JT808_0x9306 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { - JT808_0x9306 jT808_0x9306 = new JT808_0x9306(); - jT808_0x9306.LogicChannelNo = reader.ReadByte(); + var jT808_0x9306 = new JT808_0x9306(); + jT808_0x9306.ChannelNo = reader.ReadByte(); jT808_0x9306.ChangeMultipleControl = reader.ReadByte(); return jT808_0x9306; } public void Serialize(ref JT808MessagePackWriter writer, JT808_0x9306 value, IJT808Config config) { - writer.WriteByte(value.LogicChannelNo); + writer.WriteByte(value.ChannelNo); writer.WriteByte(value.ChangeMultipleControl); } +#pragma warning restore CS1591 // 缺少对公共可见类型或成员的 XML 注释 } }