From 0e21c72fbbc2df03070c2c8fc50435dc95f44b05 Mon Sep 17 00:00:00 2001 From: smallchi <564952747@qq.com> Date: Thu, 18 Jul 2019 14:58:30 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=8D=87=E7=BA=A7808=E5=BA=93=202.=E4=BF=AE?= =?UTF-8?q?=E6=94=B91078=E6=B3=A8=E5=86=8C=203.=E5=A2=9E=E5=8A=A01078?= =?UTF-8?q?=E5=B8=B8=E9=87=8F=204.=E5=A2=9E=E5=8A=A0=E6=B6=88=E6=81=AFid,?= =?UTF-8?q?=E6=89=A9=E5=B1=95=E6=B6=88=E6=81=AFid=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=A0=81=E5=8F=AF=E8=AF=BB?= =?UTF-8?q?=E6=80=A7=205.=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=A0=81=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=206.=E4=BF=AE=E6=94=B9=E5=8D=95=E5=85=83=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=207.=E6=9B=B4=E6=96=B0808=E5=8D=8F=E8=AE=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JT808LocationAttach.cs | 26 +- .../JT808_0x1003Test.cs | 12 +- .../JT808_0x1005Test.cs | 13 +- .../JT808_0x1205Test.cs | 67 +-- .../JT808_0x1206Test.cs | 9 +- .../JT808_0x8103CustomId.cs | 382 +++++++++++------- .../JT808_0x9105Test.cs | 7 +- .../JT808_0x9201Test.cs | 36 +- .../JT808_0x9202Test.cs | 15 +- .../JT808_0x9205Test.cs | 22 +- .../JT808_0x9206Test.cs | 53 ++- .../JT808_0x9207Test.cs | 9 +- .../JT808_0x9301Test.cs | 12 +- .../JT808_0x9302Test.cs | 9 +- .../JT808_0x9303Test.cs | 9 +- .../JT808_0x9304Test.cs | 9 +- .../JT808_0x9305Test.cs | 9 +- .../JT808_0x9306Test.cs | 9 +- .../DependencyInjectionExtensions.cs | 53 ++- .../Enums/JT808_JT1078_MsgId.cs | 29 ++ .../JT808_0x8103_0x0077_Formatter.cs | 8 +- .../JT808_0x8103_0x007C_Formatter.cs | 4 +- .../JT808.Protocol.Extensions.JT1078.csproj | 8 +- .../JT808_JT1078_Constants.cs | 59 +++ .../MessageBody/JT808_0x0200_0x14.cs | 2 +- .../MessageBody/JT808_0x0200_0x15.cs | 2 +- .../MessageBody/JT808_0x0200_0x16.cs | 2 +- .../MessageBody/JT808_0x0200_0x17.cs | 2 +- .../MessageBody/JT808_0x0200_0x18.cs | 2 +- .../MessageBody/JT808_0x8103_0x0075.cs | 2 +- .../MessageBody/JT808_0x8103_0x0076.cs | 2 +- .../MessageBody/JT808_0x8103_0x0077.cs | 4 +- .../MessageBody/JT808_0x8103_0x0079.cs | 2 +- .../MessageBody/JT808_0x8103_0x007A.cs | 2 +- .../MessageBody/JT808_0x8103_0x007B.cs | 2 +- .../MessageBody/JT808_0x8103_0x007C.cs | 4 +- .../JT809_JT1078_0x1700Test.cs | 43 +- .../JT809_JT1078_0x1800Test.cs | 30 +- .../JT809_JT1078_0x1900Test.cs | 129 ++++-- .../JT809_JT1078_0x1A00Test.cs | 30 +- .../JT809_JT1078_0x1B00Test.cs | 53 ++- .../JT809_JT1078_0x9700Test.cs | 12 +- .../JT809_JT1078_0x9800Test.cs | 40 +- .../JT809_JT1078_0x9900Test.cs | 43 +- .../JT809_JT1078_0x9A00Test.cs | 37 +- .../JT809_JT1078_0x9B00Test.cs | 53 ++- 46 files changed, 858 insertions(+), 509 deletions(-) create mode 100644 src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs create mode 100644 src/JT808.Protocol.Extensions.JT1078/JT808_JT1078_Constants.cs diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs index 077b325..eea6927 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808LocationAttach.cs @@ -34,25 +34,25 @@ namespace JT808.Protocol.Extensions.JT1078.Test Speed = 60, Direction = 0, StatusFlag = 2, - JT808CustomLocationAttachData = new Dictionary() + JT808LocationAttachData = new Dictionary() }; - jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x14, new JT808_0x0200_0x14 + jT808UploadLocationRequest.JT808LocationAttachData.Add(0x14, new JT808_0x0200_0x14 { VideoRelateAlarm = 100 }); - jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x15, new JT808_0x0200_0x15 + jT808UploadLocationRequest.JT808LocationAttachData.Add(0x15, new JT808_0x0200_0x15 { VideoSignalLoseAlarmStatus = 100 }); - jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x16, new JT808_0x0200_0x16 + jT808UploadLocationRequest.JT808LocationAttachData.Add(0x16, new JT808_0x0200_0x16 { VideoSignalOcclusionAlarmStatus = 100 }); - jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x17, new JT808_0x0200_0x17 + jT808UploadLocationRequest.JT808LocationAttachData.Add(0x17, new JT808_0x0200_0x17 { StorageFaultAlarmStatus = 100 }); - jT808UploadLocationRequest.JT808CustomLocationAttachData.Add(0x18, new JT808_0x0200_0x18 + jT808UploadLocationRequest.JT808LocationAttachData.Add(0x18, new JT808_0x0200_0x18 { AbnormalDrivingBehaviorAlarmInfo = 100 }); @@ -65,17 +65,17 @@ namespace JT808.Protocol.Extensions.JT1078.Test { byte[] bodys = "000000010000000200BA7F0E07E4F11C0028003C00001807151010101404000000641504000000641604000000641702006418020064".ToHexBytes(); JT808_0x0200 jT808UploadLocationRequest = JT808Serializer.Deserialize(bodys); - Assert.Equal((uint)1, jT808UploadLocationRequest.AlarmFlag); + Assert.Equal(1u, jT808UploadLocationRequest.AlarmFlag); Assert.Equal(DateTime.Parse("2018-07-15 10:10:10"), jT808UploadLocationRequest.GPSTime); Assert.Equal(12222222, jT808UploadLocationRequest.Lat); Assert.Equal(132444444, jT808UploadLocationRequest.Lng); Assert.Equal(60, jT808UploadLocationRequest.Speed); - Assert.Equal((uint)2, jT808UploadLocationRequest.StatusFlag); - Assert.Equal((uint)100, JT808Serializer.Deserialize(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x14]).VideoRelateAlarm); - Assert.Equal((uint)100, JT808Serializer.Deserialize(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x15]).VideoSignalLoseAlarmStatus); - Assert.Equal((uint)100, JT808Serializer.Deserialize(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x16]).VideoSignalOcclusionAlarmStatus); - Assert.Equal((uint)100, JT808Serializer.Deserialize(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x17]).StorageFaultAlarmStatus); - Assert.Equal((uint)100, JT808Serializer.Deserialize(jT808UploadLocationRequest.JT808CustomLocationAttachOriginalData[0x17]).AbnormalDrivingBehaviorAlarmInfo); + Assert.Equal(2u, jT808UploadLocationRequest.StatusFlag); + Assert.Equal(100u, ((JT808_0x0200_0x14)jT808UploadLocationRequest.JT808LocationAttachData[0x14]).VideoRelateAlarm); + Assert.Equal(100u, ((JT808_0x0200_0x15)jT808UploadLocationRequest.JT808LocationAttachData[0x15]).VideoSignalLoseAlarmStatus); + Assert.Equal(100u, ((JT808_0x0200_0x16)jT808UploadLocationRequest.JT808LocationAttachData[0x16]).VideoSignalOcclusionAlarmStatus); + Assert.Equal(100u, ((JT808_0x0200_0x17)jT808UploadLocationRequest.JT808LocationAttachData[0x17]).StorageFaultAlarmStatus); + Assert.Equal(100u, ((JT808_0x0200_0x18)jT808UploadLocationRequest.JT808LocationAttachData[0x18]).AbnormalDrivingBehaviorAlarmInfo); } } } diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1003Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1003Test.cs index 2b26be1..74cf322 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1003Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1003Test.cs @@ -38,7 +38,6 @@ namespace JT808.Protocol.Extensions.JT1078.Test TerminalSupportedMaxNumberOfAudioPhysicalChannels = 7, TerminalSupportedMaxNumberOfVideoPhysicalChannels = 8 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1003); var hex = JT808Serializer.Serialize(jT808_0x1003).ToHexString(); Assert.Equal("03020504000101060708", hex); } @@ -46,9 +45,16 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"EnterAudioEncoding\":3,\"EnterAudioChannelsNumber\":2,\"EnterAudioSampleRate\":5,\"EnterAudioSampleDigits\":4,\"AudioFrameLength\":1,\"IsSupportedAudioOutput\":1,\"VideoEncoding\":6,\"TerminalSupportedMaxNumberOfAudioPhysicalChannels\":7,\"TerminalSupportedMaxNumberOfVideoPhysicalChannels\":8,\"SkipSerialization\":false}"; JT808_0x1003 jT808_0x1003 = JT808Serializer.Deserialize("03020504000101060708".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1003), str); + Assert.Equal(1,jT808_0x1003.AudioFrameLength); + Assert.Equal(2, jT808_0x1003.EnterAudioChannelsNumber); + Assert.Equal(3, jT808_0x1003.EnterAudioEncoding); + Assert.Equal(4, jT808_0x1003.EnterAudioSampleDigits); + Assert.Equal(5, jT808_0x1003.EnterAudioSampleRate); + Assert.Equal(1, jT808_0x1003.IsSupportedAudioOutput); + Assert.Equal(6, jT808_0x1003.VideoEncoding); + Assert.Equal(7, jT808_0x1003.TerminalSupportedMaxNumberOfAudioPhysicalChannels); + Assert.Equal(8, jT808_0x1003.TerminalSupportedMaxNumberOfVideoPhysicalChannels); } } } diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1005Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1005Test.cs index 323c1b6..14f68d7 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1005Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1005Test.cs @@ -40,11 +40,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test JT808_0x1005 jT808_0x1005 = new JT808_0x1005() { BeginTime=Convert.ToDateTime("2019-07-16 10:20:01"), - EndTime= Convert.ToDateTime("2019-07-16 10:25:02"), - GettingOffNumber=1, - GettingOnNumber=1 + EndTime= Convert.ToDateTime("2019-07-16 10:25:02"), + GettingOffNumber=1, + GettingOnNumber=1 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1005); var hex = JT808Serializer.Serialize(jT808_0x1005).ToHexString(); Assert.Equal("19071610200119071610250200010001", hex); } @@ -52,9 +51,11 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"BeginTime\":\"2019-07-16 10:20:01\",\"EndTime\":\"2019-07-16 10:25:02\",\"GettingOnNumber\":1,\"GettingOffNumber\":1,\"SkipSerialization\":false}"; var jT808_0x1005 = JT808Serializer.Deserialize("19071610200119071610250200010001".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1005), str); + Assert.Equal(Convert.ToDateTime("2019-07-16 10:20:01"),jT808_0x1005.BeginTime); + Assert.Equal(Convert.ToDateTime("2019-07-16 10:25:02"),jT808_0x1005.EndTime); + Assert.Equal(1, jT808_0x1005.GettingOffNumber); + Assert.Equal(1, jT808_0x1005.GettingOnNumber); } } } diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1205Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1205Test.cs index f25d4cb..9f738d3 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1205Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1205Test.cs @@ -42,29 +42,28 @@ namespace JT808.Protocol.Extensions.JT1078.Test MsgNum = 1, AVResouceTotal = 2, AVResouces = new List { - new JT808_0x1205_AVResouce{ - AlarmFlag=1, - AVResourceType=2, - BeginTime=Convert.ToDateTime("2019-07-16 10:20:01"), - EndTime=Convert.ToDateTime("2019-07-16 10:25:01"), - FileSize=3, - LogicChannelNo=4, - MemoryType=5, - StreamType=6 - }, - new JT808_0x1205_AVResouce{ - AlarmFlag=11, - AVResourceType=21, - BeginTime=Convert.ToDateTime("2019-07-16 11:20:01"), - EndTime=Convert.ToDateTime("2019-07-16 11:25:02"), - FileSize=31, - LogicChannelNo=41, - MemoryType=51, - StreamType=61 - } - } + new JT808_0x1205_AVResouce{ + AlarmFlag=1, + AVResourceType=2, + BeginTime=Convert.ToDateTime("2019-07-16 10:20:01"), + EndTime=Convert.ToDateTime("2019-07-16 10:25:01"), + FileSize=3, + LogicChannelNo=4, + MemoryType=5, + StreamType=6 + }, + new JT808_0x1205_AVResouce{ + AlarmFlag=11, + AVResourceType=21, + BeginTime=Convert.ToDateTime("2019-07-16 11:20:01"), + EndTime=Convert.ToDateTime("2019-07-16 11:25:02"), + FileSize=31, + LogicChannelNo=41, + MemoryType=51, + StreamType=61 + } + } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1205); var hex = JT808Serializer.Serialize(jT808_0x1205).ToHexString(); Assert.Equal("000100000002041907161020011907161025010000000102060500000003291907161120011907161125020000000B153D330000001F", hex); } @@ -72,9 +71,27 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"MsgNum\":1,\"AVResouceTotal\":2,\"AVResouces\":[{\"LogicChannelNo\":4,\"BeginTime\":\"2019-07-16 10:20:01\",\"EndTime\":\"2019-07-16 10:25:01\",\"AlarmFlag\":1,\"AVResourceType\":2,\"StreamType\":6,\"MemoryType\":5,\"FileSize\":3},{\"LogicChannelNo\":41,\"BeginTime\":\"2019-07-16 11:20:01\",\"EndTime\":\"2019-07-16 11:25:02\",\"AlarmFlag\":11,\"AVResourceType\":21,\"StreamType\":61,\"MemoryType\":51,\"FileSize\":31}],\"SkipSerialization\":false}"; - var jT808_0x1205 = JT808Serializer.Deserialize("000100000002041907161020011907161025010000000102060500000003291907161120011907161125020000000B153D330000001F".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1205), str); + var jT808_0x1205 = JT808Serializer.Deserialize("000100000002041907161020011907161025010000000102060500000003291907161120011907161125020000000B153D330000001F".ToHexBytes()); + Assert.Equal(1, jT808_0x1205.MsgNum); + Assert.Equal(2u, jT808_0x1205.AVResouceTotal); + + Assert.Equal(1u, jT808_0x1205.AVResouces[0].AlarmFlag); + Assert.Equal(2, jT808_0x1205.AVResouces[0].AVResourceType); + Assert.Equal(Convert.ToDateTime("2019-07-16 10:20:01"),jT808_0x1205.AVResouces[0].BeginTime); + Assert.Equal(Convert.ToDateTime("2019-07-16 10:25:01"),jT808_0x1205.AVResouces[0].EndTime); + Assert.Equal(3u, jT808_0x1205.AVResouces[0].FileSize); + Assert.Equal(4, jT808_0x1205.AVResouces[0].LogicChannelNo); + Assert.Equal(5, jT808_0x1205.AVResouces[0].MemoryType); + Assert.Equal(6, jT808_0x1205.AVResouces[0].StreamType); + + Assert.Equal(11u, jT808_0x1205.AVResouces[1].AlarmFlag); + Assert.Equal(21, jT808_0x1205.AVResouces[1].AVResourceType); + Assert.Equal(Convert.ToDateTime("2019-07-16 11:20:01"),jT808_0x1205.AVResouces[1].BeginTime); + Assert.Equal(Convert.ToDateTime("2019-07-16 11:25:02"),jT808_0x1205.AVResouces[1].EndTime); + Assert.Equal(31u, jT808_0x1205.AVResouces[1].FileSize); + Assert.Equal(41, jT808_0x1205.AVResouces[1].LogicChannelNo); + Assert.Equal(51, jT808_0x1205.AVResouces[1].MemoryType); + Assert.Equal(61, jT808_0x1205.AVResouces[1].StreamType); } } } diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1206Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1206Test.cs index bb39971..466b538 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1206Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x1206Test.cs @@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x1206 jT808_0x1206 = new JT808_0x1206() { - MsgNum=1, - Result=1 + MsgNum=1, + Result=1 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1206); var hex = JT808Serializer.Serialize(jT808_0x1206).ToHexString(); Assert.Equal("000101", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"MsgNum\":1,\"Result\":1,\"SkipSerialization\":false}"; var jT808_0x1206 = JT808Serializer.Deserialize("000101".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x1206), str); + Assert.Equal(1, jT808_0x1206.MsgNum); + Assert.Equal(1, jT808_0x1206.Result); } } } diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x8103CustomId.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x8103CustomId.cs index 2dcc3e9..759ab1e 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x8103CustomId.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x8103CustomId.cs @@ -1,4 +1,5 @@ -using JT808.Protocol.Extensions.JT1078.MessageBody; +using JT808.Protocol.Enums; +using JT808.Protocol.Extensions.JT1078.MessageBody; using JT808.Protocol.Interfaces; using JT808.Protocol.MessageBody; using Microsoft.Extensions.DependencyInjection; @@ -29,81 +30,127 @@ namespace JT808.Protocol.Extensions.JT1078.Test { Header = new JT808Header { - MsgId = Enums.JT808MsgId.设置终端参数.ToUInt16Value(), + MsgId = JT808MsgId.设置终端参数.ToUInt16Value(), MsgNum = 10, TerminalPhoneNo = "123456789", }, Bodies = new JT808_0x8103 { - ParamList = new List(), - CustomParamList = new List { - new JT808_0x8103_0x0075() { - AudioOutputEnabled=1, - OSD=2, - RTS_EncodeMode=3, - RTS_KF_Interval=4, - RTS_Resolution=5, - RTS_Target_CodeRate=6, - RTS_Target_FPS=7, - StreamStore_EncodeMode=8, - StreamStore_KF_Interval=9, - StreamStore_Resolution=10, - StreamStore_Target_CodeRate=11, - StreamStore_Target_FPS=12 + ParamList = new List { + new JT808_0x8103_0x0075 { + AudioOutputEnabled=1, + OSD=2, + RTS_EncodeMode=3, + RTS_KF_Interval=4, + RTS_Resolution=5, + RTS_Target_CodeRate=6, + RTS_Target_FPS=7, + StreamStore_EncodeMode=8, + StreamStore_KF_Interval=9, + StreamStore_Resolution=10, + StreamStore_Target_CodeRate=11, + StreamStore_Target_FPS=12 }, - new JT808_0x8103_0x0076() { - AudioChannelTotal=1, - AVChannelTotal=2, - VudioChannelTotal=3, - ParamLength=27, - AVChannelRefTables=new List{ - new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=0, IsConnectCloudPlat=1, LogicChannelNo=2, PhysicalChannelNo=3 }, - - new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=4, IsConnectCloudPlat=5, LogicChannelNo=6, PhysicalChannelNo=7 }, - new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=8, IsConnectCloudPlat=9, LogicChannelNo=10, PhysicalChannelNo=11 }, - - new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=12, IsConnectCloudPlat=13, LogicChannelNo=14, PhysicalChannelNo=15 }, - new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=16, IsConnectCloudPlat=17, LogicChannelNo=18, PhysicalChannelNo=19 }, - new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=20, IsConnectCloudPlat=21, LogicChannelNo=22, PhysicalChannelNo=23 } - } - }, - new JT808_0x8103_0x0077{ - NeedSetChannelTotal=2, - ParamLength=43, - jT808_0X8103_0X0077_SignalChannels=new List{ - new JT808_0x8103_0x0077_SignalChannel{ - LogicChannelNo =1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, - RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, - StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12}, - new JT808_0x8103_0x0077_SignalChannel{ - LogicChannelNo=1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, - RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, - StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12} + new JT808_0x8103_0x0076 { + AudioChannelTotal=1, + AVChannelTotal=2, + VudioChannelTotal=3, + ParamLength=27, + AVChannelRefTables=new List{ + new JT808_0x8103_0x0076_AVChannelRefTable{ + ChannelType =0, + IsConnectCloudPlat =1, + LogicChannelNo =2, + PhysicalChannelNo =3 }, + new JT808_0x8103_0x0076_AVChannelRefTable{ + ChannelType =4, + IsConnectCloudPlat =5, + LogicChannelNo =6, + PhysicalChannelNo =7 }, + new JT808_0x8103_0x0076_AVChannelRefTable{ + ChannelType =8, + IsConnectCloudPlat =9, + LogicChannelNo =10, + PhysicalChannelNo =11 }, + new JT808_0x8103_0x0076_AVChannelRefTable{ + ChannelType =12, + IsConnectCloudPlat =13, + LogicChannelNo =14, + PhysicalChannelNo =15 }, + new JT808_0x8103_0x0076_AVChannelRefTable{ + ChannelType =16, + IsConnectCloudPlat =17, + LogicChannelNo =18, + PhysicalChannelNo =19 }, + new JT808_0x8103_0x0076_AVChannelRefTable{ + ChannelType =20, + IsConnectCloudPlat =21, + LogicChannelNo =22, + PhysicalChannelNo =23 } + } + }, + new JT808_0x8103_0x0077{ + NeedSetChannelTotal=2, + ParamLength=43, + SignalChannels=new List{ + new JT808_0x8103_0x0077_SignalChannel{ + LogicChannelNo =1, + OSD =2, + RTS_EncodeMode =3, + RTS_KF_Interval =4, + RTS_Resolution =5, + RTS_Target_CodeRate =6, + RTS_Target_FPS =7, + StreamStore_EncodeMode =8, + StreamStore_KF_Interval =9, + StreamStore_Resolution =10, + StreamStore_Target_CodeRate=11, + StreamStore_Target_FPS =12 + }, + new JT808_0x8103_0x0077_SignalChannel{ + LogicChannelNo=1, + OSD =2, + RTS_EncodeMode =3, + RTS_KF_Interval =4, + RTS_Resolution =5, + RTS_Target_CodeRate =6, + RTS_Target_FPS =7, + StreamStore_EncodeMode =8, + StreamStore_KF_Interval =9, + StreamStore_Resolution =10, + StreamStore_Target_CodeRate=11, + StreamStore_Target_FPS =12 } + } }, - new JT808_0x8103_0x0079{ - BeginMinute=1, Duration=2, StorageThresholds=3 - }, - new JT808_0x8103_0x007A{ - AlarmShielding=1 - }, - new JT808_0x8103_0x007B{ - NuclearLoadNumber=1, FatigueThreshold=2 - }, - new JT808_0x8103_0x007C{ - SleepWakeMode=1, TimerWakeDaySet=2, WakeConditionType=3, - jT808_0X8103_0X007C_TimerWakeDayParamter=new JT808_0x8103_0x007C_TimerWakeDayParamter{ - TimePeriod1CloseTime="12", - TimePeriod1WakeTime="23", - TimePeriod2CloseTime="34", - TimePeriod2WakeTime="45", - TimePeriod3CloseTime="56", - TimePeriod3WakeTime="67", - TimePeriod4CloseTime="78", - TimePeriod4WakeTime="89", - TimerWakeEnableFlag=10 - } + new JT808_0x8103_0x0079{ + BeginMinute=1, + Duration =2, + StorageThresholds =3 + }, + new JT808_0x8103_0x007A{ + AlarmShielding=1 + }, + new JT808_0x8103_0x007B{ + NuclearLoadNumber=1, + FatigueThreshold =2 + }, + new JT808_0x8103_0x007C{ + SleepWakeMode=1, + TimerWakeDaySet =2, + WakeConditionType =3, + TimerWakeDayParamter=new JT808_0x8103_0x007C_TimerWakeDayParamter{ + TimePeriod1CloseTime="12", + TimePeriod1WakeTime="23", + TimePeriod2CloseTime="34", + TimePeriod2WakeTime="45", + TimePeriod3CloseTime="56", + TimePeriod3WakeTime="67", + TimePeriod4CloseTime="78", + TimePeriod4WakeTime="89", + TimerWakeEnableFlag=10 } + } } } }; @@ -115,105 +162,128 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"ParamList\":[],\"CustomParamList\":[{\"ParamId\":117,\"ParamLength\":21,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2,\"AudioOutputEnabled\":1},{\"ParamId\":118,\"ParamLength\":27,\"AVChannelTotal\":2,\"AudioChannelTotal\":1,\"VudioChannelTotal\":3,\"AVChannelRefTables\":[{\"PhysicalChannelNo\":3,\"LogicChannelNo\":2,\"ChannelType\":0,\"IsConnectCloudPlat\":1},{\"PhysicalChannelNo\":7,\"LogicChannelNo\":6,\"ChannelType\":4,\"IsConnectCloudPlat\":5},{\"PhysicalChannelNo\":11,\"LogicChannelNo\":10,\"ChannelType\":8,\"IsConnectCloudPlat\":9},{\"PhysicalChannelNo\":15,\"LogicChannelNo\":14,\"ChannelType\":12,\"IsConnectCloudPlat\":13},{\"PhysicalChannelNo\":19,\"LogicChannelNo\":18,\"ChannelType\":16,\"IsConnectCloudPlat\":17},{\"PhysicalChannelNo\":23,\"LogicChannelNo\":22,\"ChannelType\":20,\"IsConnectCloudPlat\":21}]},{\"ParamId\":119,\"ParamLength\":43,\"NeedSetChannelTotal\":2,\"jT808_0X8103_0X0077_SignalChannels\":[{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2},{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2}]},{\"ParamId\":121,\"ParamLength\":3,\"StorageThresholds\":3,\"Duration\":2,\"BeginMinute\":1},{\"ParamId\":122,\"ParamLength\":4,\"AlarmShielding\":1},{\"ParamId\":123,\"ParamLength\":2,\"NuclearLoadNumber\":1,\"FatigueThreshold\":2},{\"ParamId\":124,\"ParamLength\":20,\"SleepWakeMode\":1,\"WakeConditionType\":3,\"TimerWakeDaySet\":2,\"jT808_0X8103_0X007C_TimerWakeDayParamter\":{\"TimerWakeEnableFlag\":10,\"TimePeriod1WakeTime\":\"23\",\"TimePeriod1CloseTime\":\"12\",\"TimePeriod2WakeTime\":\"45\",\"TimePeriod2CloseTime\":\"34\",\"TimePeriod3WakeTime\":\"67\",\"TimePeriod3CloseTime\":\"56\",\"TimePeriod4WakeTime\":\"89\",\"TimePeriod4CloseTime\":\"78\"}}],\"SkipSerialization\":false}"; byte[] bytes = "7E8103009C000123456789000A070000007515030500040700000006080A00090C0000000B000201000000761B02010303020001070604050B0A08090F0E0C0D1312101117161415000000772B0201030500040700000006080A00090C0000000B000201030500040700000006080A00090C0000000B000200000079030302010000007A04000000010000007B0201020000007C140103020A00230012004500340067005600890078587E".ToHexBytes(); JT808Package jT808_0X8103 = JT808Serializer.Deserialize(bytes); - Assert.Equal(Enums.JT808MsgId.设置终端参数.ToUInt16Value(), jT808_0X8103.Header.MsgId); + Assert.Equal(JT808MsgId.设置终端参数.ToUInt16Value(), jT808_0X8103.Header.MsgId); Assert.Equal(10, jT808_0X8103.Header.MsgNum); Assert.Equal("123456789", jT808_0X8103.Header.TerminalPhoneNo); - JT808_0x8103 JT808Bodies = (JT808_0x8103)jT808_0X8103.Bodies; - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0X8103.Bodies), str); - } - - [Fact] - public void Test3() - { - JT808_0x8103 jT808_0x8103 = new JT808_0x8103 + JT808_0x8103 jT808_0x8103 = (JT808_0x8103)jT808_0X8103.Bodies; + foreach (var item in jT808_0x8103.ParamList) { - ParamList = new List(), - CustomParamList = new List { - new JT808_0x8103_0x0075() { - AudioOutputEnabled=1, - OSD=2, - RTS_EncodeMode=3, - RTS_KF_Interval=4, - RTS_Resolution=5, - RTS_Target_CodeRate=6, - RTS_Target_FPS=7, - StreamStore_EncodeMode=8, - StreamStore_KF_Interval=9, - StreamStore_Resolution=10, - StreamStore_Target_CodeRate=11, - StreamStore_Target_FPS=12 - }, - new JT808_0x8103_0x0076() { - AudioChannelTotal=1, - AVChannelTotal=2, - VudioChannelTotal=3, - ParamLength=27, - AVChannelRefTables=new List{ - new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=0, IsConnectCloudPlat=1, LogicChannelNo=2, PhysicalChannelNo=3 }, + switch (item) + { + case JT808_0x8103_0x0075 jT808_0x8103_0x0075: + Assert.Equal(1,jT808_0x8103_0x0075.AudioOutputEnabled); + Assert.Equal(2,jT808_0x8103_0x0075.OSD); + Assert.Equal(3,jT808_0x8103_0x0075.RTS_EncodeMode); + Assert.Equal(4,jT808_0x8103_0x0075.RTS_KF_Interval); + Assert.Equal(5,jT808_0x8103_0x0075.RTS_Resolution); + Assert.Equal(6u,jT808_0x8103_0x0075.RTS_Target_CodeRate); + Assert.Equal(7,jT808_0x8103_0x0075.RTS_Target_FPS); + Assert.Equal(8,jT808_0x8103_0x0075.StreamStore_EncodeMode); + Assert.Equal(9,jT808_0x8103_0x0075.StreamStore_KF_Interval); + Assert.Equal(10,jT808_0x8103_0x0075.StreamStore_Resolution); + Assert.Equal(11u,jT808_0x8103_0x0075.StreamStore_Target_CodeRate); + Assert.Equal(12u,jT808_0x8103_0x0075.StreamStore_Target_FPS); + break; + case JT808_0x8103_0x0076 jT808_0x8103_0x0076: + Assert.Equal(1,jT808_0x8103_0x0076.AudioChannelTotal); + Assert.Equal(2, jT808_0x8103_0x0076.AVChannelTotal); + Assert.Equal(3,jT808_0x8103_0x0076.VudioChannelTotal); + Assert.Equal(27,jT808_0x8103_0x0076.ParamLength); + + Assert.Equal(0,jT808_0x8103_0x0076.AVChannelRefTables[0].ChannelType); + Assert.Equal(1,jT808_0x8103_0x0076.AVChannelRefTables[0].IsConnectCloudPlat); + Assert.Equal(2,jT808_0x8103_0x0076.AVChannelRefTables[0].LogicChannelNo); + Assert.Equal(3,jT808_0x8103_0x0076.AVChannelRefTables[0].PhysicalChannelNo); - new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=4, IsConnectCloudPlat=5, LogicChannelNo=6, PhysicalChannelNo=7 }, - new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=8, IsConnectCloudPlat=9, LogicChannelNo=10, PhysicalChannelNo=11 }, + Assert.Equal(4,jT808_0x8103_0x0076.AVChannelRefTables[1].ChannelType); + Assert.Equal(5,jT808_0x8103_0x0076.AVChannelRefTables[1].IsConnectCloudPlat); + Assert.Equal(6,jT808_0x8103_0x0076.AVChannelRefTables[1].LogicChannelNo); + Assert.Equal(7,jT808_0x8103_0x0076.AVChannelRefTables[1].PhysicalChannelNo); - new JT808_0x8103_0x0076_AVChannelRefTable{ChannelType=12, IsConnectCloudPlat=13, LogicChannelNo=14, PhysicalChannelNo=15 }, - new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=16, IsConnectCloudPlat=17, LogicChannelNo=18, PhysicalChannelNo=19 }, - new JT808_0x8103_0x0076_AVChannelRefTable{ ChannelType=20, IsConnectCloudPlat=21, LogicChannelNo=22, PhysicalChannelNo=23 } - } - }, - new JT808_0x8103_0x0077{ - NeedSetChannelTotal=2, - ParamLength=43, - jT808_0X8103_0X0077_SignalChannels=new List{ - new JT808_0x8103_0x0077_SignalChannel{ - LogicChannelNo =1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, - RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, - StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12}, - new JT808_0x8103_0x0077_SignalChannel{ - LogicChannelNo=1, OSD=2, RTS_EncodeMode=3, RTS_KF_Interval=4, RTS_Resolution=5, - RTS_Target_CodeRate =6, RTS_Target_FPS=7, StreamStore_EncodeMode=8, StreamStore_KF_Interval=9, StreamStore_Resolution=10, - StreamStore_Target_CodeRate=11, StreamStore_Target_FPS=12} - } - }, - new JT808_0x8103_0x0079{ - BeginMinute=1, Duration=2, StorageThresholds=3 - }, - new JT808_0x8103_0x007A{ - AlarmShielding=1 - }, - new JT808_0x8103_0x007B{ - NuclearLoadNumber=1, FatigueThreshold=2 - }, - new JT808_0x8103_0x007C{ - SleepWakeMode=1, TimerWakeDaySet=2, WakeConditionType=3, - jT808_0X8103_0X007C_TimerWakeDayParamter=new JT808_0x8103_0x007C_TimerWakeDayParamter{ - TimePeriod1CloseTime="12", - TimePeriod1WakeTime="23", - TimePeriod2CloseTime="34", - TimePeriod2WakeTime="45", - TimePeriod3CloseTime="56", - TimePeriod3WakeTime="67", - TimePeriod4CloseTime="78", - TimePeriod4WakeTime="89", - TimerWakeEnableFlag=10 - } - } - } - }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x8103); - var hex = JT808Serializer.Serialize(jT808_0x8103).ToHexString(); - Assert.Equal("070000007515030500040700000006080A00090C0000000B000201000000761B02010303020001070604050B0A08090F0E0C0D1312101117161415000000772B0201030500040700000006080A00090C0000000B000201030500040700000006080A00090C0000000B000200000079030302010000007A04000000010000007B0201020000007C140103020A00230012004500340067005600890078", hex); - } + Assert.Equal(8,jT808_0x8103_0x0076.AVChannelRefTables[2].ChannelType); + Assert.Equal(9,jT808_0x8103_0x0076.AVChannelRefTables[2].IsConnectCloudPlat); + Assert.Equal(10,jT808_0x8103_0x0076.AVChannelRefTables[2].LogicChannelNo); + Assert.Equal(11,jT808_0x8103_0x0076.AVChannelRefTables[2].PhysicalChannelNo); - [Fact] - public void Test4() - { - byte[] bytes = "070000007515030500040700000006080A00090C0000000B000201000000761B02010303020001070604050B0A08090F0E0C0D1312101117161415000000772B0201030500040700000006080A00090C0000000B000201030500040700000006080A00090C0000000B000200000079030302010000007A04000000010000007B0201020000007C140103020A00230012004500340067005600890078".ToHexBytes(); - var jT808_0X8103 = JT808Serializer.Deserialize(bytes); + Assert.Equal(12,jT808_0x8103_0x0076.AVChannelRefTables[3].ChannelType); + Assert.Equal(13,jT808_0x8103_0x0076.AVChannelRefTables[3].IsConnectCloudPlat); + Assert.Equal(14,jT808_0x8103_0x0076.AVChannelRefTables[3].LogicChannelNo); + Assert.Equal(15,jT808_0x8103_0x0076.AVChannelRefTables[3].PhysicalChannelNo); + + Assert.Equal(16,jT808_0x8103_0x0076.AVChannelRefTables[4].ChannelType); + Assert.Equal(17,jT808_0x8103_0x0076.AVChannelRefTables[4].IsConnectCloudPlat); + Assert.Equal(18,jT808_0x8103_0x0076.AVChannelRefTables[4].LogicChannelNo); + Assert.Equal(19,jT808_0x8103_0x0076.AVChannelRefTables[4].PhysicalChannelNo); + + Assert.Equal(20,jT808_0x8103_0x0076.AVChannelRefTables[5].ChannelType); + Assert.Equal(21,jT808_0x8103_0x0076.AVChannelRefTables[5].IsConnectCloudPlat); + Assert.Equal(22,jT808_0x8103_0x0076.AVChannelRefTables[5].LogicChannelNo); + Assert.Equal(23,jT808_0x8103_0x0076.AVChannelRefTables[5].PhysicalChannelNo); + break; + case JT808_0x8103_0x0077 jT808_0x8103_0x0077: + Assert.Equal(2,jT808_0x8103_0x0077.NeedSetChannelTotal); + Assert.Equal(43,jT808_0x8103_0x0077.ParamLength); - Assert.Equal("{\"ParamList\":[],\"CustomParamList\":[{\"ParamId\":117,\"ParamLength\":21,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2,\"AudioOutputEnabled\":1},{\"ParamId\":118,\"ParamLength\":27,\"AVChannelTotal\":2,\"AudioChannelTotal\":1,\"VudioChannelTotal\":3,\"AVChannelRefTables\":[{\"PhysicalChannelNo\":3,\"LogicChannelNo\":2,\"ChannelType\":0,\"IsConnectCloudPlat\":1},{\"PhysicalChannelNo\":7,\"LogicChannelNo\":6,\"ChannelType\":4,\"IsConnectCloudPlat\":5},{\"PhysicalChannelNo\":11,\"LogicChannelNo\":10,\"ChannelType\":8,\"IsConnectCloudPlat\":9},{\"PhysicalChannelNo\":15,\"LogicChannelNo\":14,\"ChannelType\":12,\"IsConnectCloudPlat\":13},{\"PhysicalChannelNo\":19,\"LogicChannelNo\":18,\"ChannelType\":16,\"IsConnectCloudPlat\":17},{\"PhysicalChannelNo\":23,\"LogicChannelNo\":22,\"ChannelType\":20,\"IsConnectCloudPlat\":21}]},{\"ParamId\":119,\"ParamLength\":43,\"NeedSetChannelTotal\":2,\"jT808_0X8103_0X0077_SignalChannels\":[{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2},{\"LogicChannelNo\":1,\"RTS_EncodeMode\":3,\"RTS_Resolution\":5,\"RTS_KF_Interval\":4,\"RTS_Target_FPS\":7,\"RTS_Target_CodeRate\":6,\"StreamStore_EncodeMode\":8,\"StreamStore_Resolution\":10,\"StreamStore_KF_Interval\":9,\"StreamStore_Target_FPS\":12,\"StreamStore_Target_CodeRate\":11,\"OSD\":2}]},{\"ParamId\":121,\"ParamLength\":3,\"StorageThresholds\":3,\"Duration\":2,\"BeginMinute\":1},{\"ParamId\":122,\"ParamLength\":4,\"AlarmShielding\":1},{\"ParamId\":123,\"ParamLength\":2,\"NuclearLoadNumber\":1,\"FatigueThreshold\":2},{\"ParamId\":124,\"ParamLength\":20,\"SleepWakeMode\":1,\"WakeConditionType\":3,\"TimerWakeDaySet\":2,\"jT808_0X8103_0X007C_TimerWakeDayParamter\":{\"TimerWakeEnableFlag\":10,\"TimePeriod1WakeTime\":\"23\",\"TimePeriod1CloseTime\":\"12\",\"TimePeriod2WakeTime\":\"45\",\"TimePeriod2CloseTime\":\"34\",\"TimePeriod3WakeTime\":\"67\",\"TimePeriod3CloseTime\":\"56\",\"TimePeriod4WakeTime\":\"89\",\"TimePeriod4CloseTime\":\"78\"}}],\"SkipSerialization\":false}", Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0X8103)); + Assert.Equal(1,jT808_0x8103_0x0077.SignalChannels[0].LogicChannelNo); + Assert.Equal(2,jT808_0x8103_0x0077.SignalChannels[0].OSD); + Assert.Equal(3,jT808_0x8103_0x0077.SignalChannels[0].RTS_EncodeMode); + Assert.Equal(4,jT808_0x8103_0x0077.SignalChannels[0].RTS_KF_Interval); + Assert.Equal(5,jT808_0x8103_0x0077.SignalChannels[0].RTS_Resolution); + Assert.Equal(6u,jT808_0x8103_0x0077.SignalChannels[0].RTS_Target_CodeRate); + Assert.Equal(7,jT808_0x8103_0x0077.SignalChannels[0].RTS_Target_FPS); + Assert.Equal(8,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_EncodeMode); + Assert.Equal(9,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_KF_Interval); + Assert.Equal(10,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Resolution); + Assert.Equal(11u,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Target_CodeRate); + Assert.Equal(12,jT808_0x8103_0x0077.SignalChannels[0].StreamStore_Target_FPS); + + Assert.Equal(1,jT808_0x8103_0x0077.SignalChannels[1].LogicChannelNo); + Assert.Equal(2,jT808_0x8103_0x0077.SignalChannels[1].OSD); + Assert.Equal(3,jT808_0x8103_0x0077.SignalChannels[1].RTS_EncodeMode); + Assert.Equal(4,jT808_0x8103_0x0077.SignalChannels[1].RTS_KF_Interval); + Assert.Equal(5,jT808_0x8103_0x0077.SignalChannels[1].RTS_Resolution); + Assert.Equal(6u,jT808_0x8103_0x0077.SignalChannels[1].RTS_Target_CodeRate); + Assert.Equal(7,jT808_0x8103_0x0077.SignalChannels[1].RTS_Target_FPS); + Assert.Equal(8,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_EncodeMode); + Assert.Equal(9,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_KF_Interval); + Assert.Equal(10,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Resolution); + Assert.Equal(11u,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Target_CodeRate); + Assert.Equal(12,jT808_0x8103_0x0077.SignalChannels[1].StreamStore_Target_FPS); + + break; + case JT808_0x8103_0x0079 jT808_0x8103_0x0079: + Assert.Equal(1,jT808_0x8103_0x0079.BeginMinute); + Assert.Equal(2,jT808_0x8103_0x0079.Duration); + Assert.Equal(3,jT808_0x8103_0x0079.StorageThresholds); + break; + case JT808_0x8103_0x007A jT808_0x8103_0x007A: + Assert.Equal(1u,jT808_0x8103_0x007A.AlarmShielding); + break; + case JT808_0x8103_0x007B jT808_0x8103_0x007B: + Assert.Equal(1,jT808_0x8103_0x007B.NuclearLoadNumber); + Assert.Equal(2,jT808_0x8103_0x007B.FatigueThreshold); + break; + case JT808_0x8103_0x007C jT808_0x8103_0x007C: + Assert.Equal(1,jT808_0x8103_0x007C.SleepWakeMode); + Assert.Equal(2,jT808_0x8103_0x007C.TimerWakeDaySet); + Assert.Equal(3,jT808_0x8103_0x007C.WakeConditionType); + Assert.Equal("12", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod1CloseTime); + Assert.Equal("23",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod1WakeTime); + Assert.Equal("34",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod2CloseTime); + Assert.Equal("45",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod2WakeTime); + Assert.Equal("56",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod3CloseTime); + Assert.Equal("67",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod3WakeTime); + Assert.Equal("78",jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod4CloseTime); + Assert.Equal("89", jT808_0x8103_0x007C.TimerWakeDayParamter.TimePeriod4WakeTime); + Assert.Equal(10,jT808_0x8103_0x007C.TimerWakeDayParamter.TimerWakeEnableFlag); + break; + default: + break; + } + } } } class DefaultGlobalConfig : GlobalConfigBase diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs index 015cce8..a342b13 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9105Test.cs @@ -40,9 +40,8 @@ namespace JT808.Protocol.Extensions.JT1078.Test JT808_0x9105 jT808_0x9105 = new JT808_0x9105() { LogicChannelNo=1, - DropRate=2 + DropRate=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9105); var hex = JT808Serializer.Serialize(jT808_0x9105).ToHexString(); Assert.Equal("0102", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":1,\"DropRate\":2,\"SkipSerialization\":false}"; var jT808_0x9105 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9105), str); + Assert.Equal(1, jT808_0x9105.LogicChannelNo); + Assert.Equal(2, jT808_0x9105.DropRate); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs index 5ba4195..3321c23 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9201Test.cs @@ -42,18 +42,17 @@ namespace JT808.Protocol.Extensions.JT1078.Test LogicChannelNo = 1, AVItemType = 2, BeginTime = Convert.ToDateTime("2019-07-16 10:10:10"), - EndTime = Convert.ToDateTime("2019-07-16 10:10:10"), - FastForwardOrFastRewindMultiples1=3, - FastForwardOrFastRewindMultiples2=4, - MemType=5, - PlayBackWay=6, - ServerIp="127.0.0.1", - ServerIpLength=9, - StreamType=7, - TcpPort=80, - UdpPort=8080 + EndTime = Convert.ToDateTime("2019-07-16 10:10:10"), + FastForwardOrFastRewindMultiples1=3, + FastForwardOrFastRewindMultiples2=4, + MemType=5, + PlayBackWay=6, + ServerIp="127.0.0.1", + ServerIpLength=9, + StreamType=7, + TcpPort=80, + UdpPort=8080 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9201); var hex = JT808Serializer.Serialize(jT808_0x9201).ToHexString(); Assert.Equal("093132372E302E302E3100501F9001020705060304190716101010190716101010", hex); } @@ -61,9 +60,20 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"ServerIpLength\":9,\"ServerIp\":\"127.0.0.1\",\"TcpPort\":80,\"UdpPort\":8080,\"LogicChannelNo\":1,\"AVItemType\":2,\"StreamType\":7,\"MemType\":5,\"PlayBackWay\":6,\"FastForwardOrFastRewindMultiples1\":3,\"FastForwardOrFastRewindMultiples2\":4,\"BeginTime\":\"2019-07-16 10:10:10\",\"EndTime\":\"2019-07-16 10:10:10\",\"SkipSerialization\":false}"; var jT808_0x9201 = JT808Serializer.Deserialize("093132372E302E302E3100501F9001020705060304190716101010190716101010".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9201), str); + Assert.Equal(1, jT808_0x9201.LogicChannelNo); + Assert.Equal(2, jT808_0x9201.AVItemType); + 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.FastForwardOrFastRewindMultiples1); + Assert.Equal(4, jT808_0x9201.FastForwardOrFastRewindMultiples2); + Assert.Equal(5, jT808_0x9201.MemType); + 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); + Assert.Equal(80, jT808_0x9201.TcpPort); + Assert.Equal(8080, jT808_0x9201.UdpPort); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs index d4cf0cc..0e369dc 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9202Test.cs @@ -39,12 +39,11 @@ 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 + AVChannelNo=1, + DragPlaybackPosition=Convert.ToDateTime("2019-07-16 10:10:10"), + FastForwardOrFastRewindMultiples=2, + PlayBackControl=3 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9202); var hex = JT808Serializer.Serialize(jT808_0x9202).ToHexString(); Assert.Equal("010302190716101010", hex); } @@ -52,9 +51,11 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"AVChannelNo\":1,\"PlayBackControl\":3,\"FastForwardOrFastRewindMultiples\":2,\"DragPlaybackPosition\":\"2019-07-16 10:10:10\",\"SkipSerialization\":false}"; var jT808_0x9202 = JT808Serializer.Deserialize("010302190716101010".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9202), str); + 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); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs index 4f41352..35c1ea6 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9205Test.cs @@ -39,15 +39,14 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9205 jT808_0x9205 = new JT808_0x9205() { - AlarmFlag=1, - AVResourceType=2, - BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), - EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), - LogicChannelNo=3, - MemoryType=4, + AlarmFlag=1, + AVResourceType=2, + BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), + EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), + LogicChannelNo=3, + MemoryType=4, StreamType =5 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9205); var hex = JT808Serializer.Serialize(jT808_0x9205).ToHexString(); Assert.Equal("0319071610101019071610101100000001020504", hex); } @@ -55,9 +54,14 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":3,\"BeginTime\":\"2019-07-16 10:10:10\",\"EndTime\":\"2019-07-16 10:10:11\",\"AlarmFlag\":1,\"AVResourceType\":2,\"StreamType\":5,\"MemoryType\":4,\"SkipSerialization\":false}"; var jT808_0x9205 = JT808Serializer.Deserialize("0319071610101019071610101100000001020504".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9205), str); + Assert.Equal(1u, jT808_0x9205.AlarmFlag); + Assert.Equal(2, jT808_0x9205.AVResourceType); + 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(4, jT808_0x9205.MemoryType); + Assert.Equal(5, jT808_0x9205.StreamType); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs index 6f745bf..412a52a 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9206Test.cs @@ -39,24 +39,24 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9206 jT808_0x9206 = new JT808_0x9206() { - AlarmFlag=1, - AVResourceType=2, - BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), - EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), - LogicChannelNo=3, - StreamType =5, FileUploadPath="D://1112", - FileUploadPathLength=8, - MemoryPositon=4, - Password="123456", - PasswordLength=6, - Port=808, - ServerIp="127.0.0.1", - ServerIpLength=9, - TaskExcuteCondition=7, - UserName="tk", - UserNameLength=2 + AlarmFlag=1, + AVResourceType=2, + BeginTime= Convert.ToDateTime("2019-07-16 10:10:10"), + EndTime= Convert.ToDateTime("2019-07-16 10:10:11"), + LogicChannelNo=3, + StreamType =5, + FileUploadPath ="D://1112", + FileUploadPathLength=8, + MemoryPositon=4, + Password="123456", + PasswordLength=6, + Port=808, + ServerIp="127.0.0.1", + ServerIpLength=9, + TaskExcuteCondition=7, + UserName="tk", + UserNameLength=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9206); var hex = JT808Serializer.Serialize(jT808_0x9206).ToHexString(); Assert.Equal("093132372E302E302E31032802746B0631323334353608443A2F2F31313132031907161010101907161010110000000102050407", hex); } @@ -64,9 +64,24 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"ServerIpLength\":9,\"ServerIp\":\"127.0.0.1\",\"Port\":808,\"UserNameLength\":2,\"UserName\":\"tk\",\"PasswordLength\":6,\"Password\":\"123456\",\"FileUploadPathLength\":8,\"FileUploadPath\":\"D://1112\",\"LogicChannelNo\":3,\"BeginTime\":\"2019-07-16 10:10:10\",\"EndTime\":\"2019-07-16 10:10:11\",\"AlarmFlag\":1,\"AVResourceType\":2,\"StreamType\":5,\"MemoryPositon\":4,\"TaskExcuteCondition\":7,\"SkipSerialization\":false}"; var jT808_0x9206 = JT808Serializer.Deserialize("093132372E302E302E31032802746B0631323334353608443A2F2F31313132031907161010101907161010110000000102050407".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9206), str); + Assert.Equal(1u, jT808_0x9206.AlarmFlag); + Assert.Equal(2, jT808_0x9206.AVResourceType); + 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(5, jT808_0x9206.StreamType); + Assert.Equal("D://1112", jT808_0x9206.FileUploadPath); + Assert.Equal(8, jT808_0x9206.FileUploadPathLength); + Assert.Equal(4, jT808_0x9206.MemoryPositon); + Assert.Equal("123456", jT808_0x9206.Password); + Assert.Equal(6, jT808_0x9206.PasswordLength); + Assert.Equal(808, jT808_0x9206.Port); + Assert.Equal("127.0.0.1", jT808_0x9206.ServerIp); + Assert.Equal(9, jT808_0x9206.ServerIpLength); + Assert.Equal(7, jT808_0x9206.TaskExcuteCondition); + Assert.Equal("tk", jT808_0x9206.UserName); + Assert.Equal(2, jT808_0x9206.UserNameLength); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9207Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9207Test.cs index 6c43b7f..bc0a88a 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9207Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9207Test.cs @@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9207 jT808_0x9207 = new JT808_0x9207() { - MgsNum=1, - UploadControl=2 + MgsNum=1, + UploadControl=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9207); var hex = JT808Serializer.Serialize(jT808_0x9207).ToHexString(); Assert.Equal("000102", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"MgsNum\":1,\"UploadControl\":2,\"SkipSerialization\":false}"; var jT808_0x9207 = JT808Serializer.Deserialize("000102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9207), str); + Assert.Equal(1, jT808_0x9207.MgsNum); + Assert.Equal(2, jT808_0x9207.UploadControl); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs index 14e5175..2b35558 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9301Test.cs @@ -39,11 +39,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9301 jT808_0x9301 = new JT808_0x9301() { - LogicChannelNo=1, - Speed=2, - Direction=3 + LogicChannelNo=1, + Speed=2, + Direction=3 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9301); var hex = JT808Serializer.Serialize(jT808_0x9301).ToHexString(); Assert.Equal("010302", hex); } @@ -51,9 +50,10 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":1,\"Direction\":3,\"Speed\":2,\"SkipSerialization\":false}"; var jT808_0x9301 = JT808Serializer.Deserialize("010302".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9301), str); + Assert.Equal(1, jT808_0x9301.LogicChannelNo); + Assert.Equal(2, jT808_0x9301.Speed); + Assert.Equal(3, jT808_0x9301.Direction); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9302Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9302Test.cs index a9aa6d5..71f3277 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9302Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9302Test.cs @@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9302 jT808_0x9302 = new JT808_0x9302() { - LogicChannelNo=1, - FocusAdjustmentDirection=2 + LogicChannelNo=1, + FocusAdjustmentDirection=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9302); var hex = JT808Serializer.Serialize(jT808_0x9302).ToHexString(); Assert.Equal("0102", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":1,\"FocusAdjustmentDirection\":2,\"SkipSerialization\":false}"; var jT808_0x9302 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9302), str); + Assert.Equal(1, jT808_0x9302.LogicChannelNo); + Assert.Equal(2, jT808_0x9302.FocusAdjustmentDirection); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs index bd69497..eb75fde 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9303Test.cs @@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9303 jT808_0x9303 = new JT808_0x9303() { - LogicChannelNo=1, - IrisAdjustment=2 + LogicChannelNo=1, + IrisAdjustment=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9303); var hex = JT808Serializer.Serialize(jT808_0x9303).ToHexString(); Assert.Equal("0102", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":1,\"IrisAdjustment\":2,\"SkipSerialization\":false}"; var jT808_0x9303 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9303), str); + Assert.Equal(1, jT808_0x9303.LogicChannelNo); + Assert.Equal(2, jT808_0x9303.IrisAdjustment); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs index 5210503..ea3c3c1 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9304Test.cs @@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9304 jT808_0x9304 = new JT808_0x9304() { - LogicChannelNo=1, - StartOrStop=2 + LogicChannelNo=1, + StartOrStop=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9304); var hex = JT808Serializer.Serialize(jT808_0x9304).ToHexString(); Assert.Equal("0102", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":1,\"StartOrStop\":2,\"SkipSerialization\":false}"; var jT808_0x9304 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9304), str); + Assert.Equal(1, jT808_0x9304.LogicChannelNo); + Assert.Equal(2, jT808_0x9304.StartOrStop); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs index ebcd587..2a84ff9 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9305Test.cs @@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9305 jT808_0x9305 = new JT808_0x9305() { - LogicChannelNo=1, - StartOrStop=2 + LogicChannelNo=1, + StartOrStop=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9305); var hex = JT808Serializer.Serialize(jT808_0x9305).ToHexString(); Assert.Equal("0102", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":1,\"StartOrStop\":2,\"SkipSerialization\":false}"; var jT808_0x9305 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9305), str); + Assert.Equal(1, jT808_0x9305.LogicChannelNo); + Assert.Equal(2, jT808_0x9305.StartOrStop); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs index 7b6ee5c..a2157a1 100644 --- a/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs +++ b/src/JT808.Protocol.Extensions.JT1078.Test/JT808_0x9306Test.cs @@ -39,10 +39,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test { JT808_0x9306 jT808_0x9306 = new JT808_0x9306() { - LogicChannelNo=1, - ChangeMultipleControl=2 + LogicChannelNo=1, + ChangeMultipleControl=2 }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9306); var hex = JT808Serializer.Serialize(jT808_0x9306).ToHexString(); Assert.Equal("0102", hex); } @@ -50,9 +49,9 @@ namespace JT808.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"LogicChannelNo\":1,\"ChangeMultipleControl\":2,\"SkipSerialization\":false}"; var jT808_0x9306 = JT808Serializer.Deserialize("0102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT808_0x9306), str); + Assert.Equal(1, jT808_0x9306.LogicChannelNo); + Assert.Equal(2, jT808_0x9306.ChangeMultipleControl); } } } \ No newline at end of file diff --git a/src/JT808.Protocol.Extensions.JT1078/DependencyInjectionExtensions.cs b/src/JT808.Protocol.Extensions.JT1078/DependencyInjectionExtensions.cs index 1dc1b87..39ebdfa 100644 --- a/src/JT808.Protocol.Extensions.JT1078/DependencyInjectionExtensions.cs +++ b/src/JT808.Protocol.Extensions.JT1078/DependencyInjectionExtensions.cs @@ -1,4 +1,5 @@ -using JT808.Protocol.Extensions.JT1078.MessageBody; +using JT808.Protocol.Extensions.JT1078.Enums; +using JT808.Protocol.Extensions.JT1078.MessageBody; using JT808.Protocol.Interfaces; using Microsoft.Extensions.DependencyInjection; using System; @@ -13,25 +14,37 @@ namespace JT808.Protocol.Extensions.JT1078 public static IJT808Builder AddJT1078Configure(this IJT808Builder jT808Builder) { jT808Builder.Config.Register(Assembly.GetExecutingAssembly()); - jT808Builder.Config.MsgIdFactory.SetMap(0x1003, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x1005, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x1205, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x1206, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9003, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9101, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9102, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9105, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9201, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9202, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9205, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9206, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9207, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9301, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9302, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9303, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9304, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9305, ""); - jT808Builder.Config.MsgIdFactory.SetMap(0x9306, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.终端上传音视频属性, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.终端上传乘客流量, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.终端上传音视频资源列表, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.文件上传完成通知, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.查询终端音视频属性, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.实时音视频传输请求, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.音视频实时传输控制, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.实时音视频传输状态通知, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.平台下发远程录像回放请求, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.平台下发远程录像回放控制, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.查询资源列表, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.文件上传指令, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.文件上传控制, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.云台旋转, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.云台调整焦距控制, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.云台调整光圈控制, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.云台雨刷控制, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.红外补光控制, ""); + jT808Builder.Config.MsgIdFactory.SetMap((ushort)JT808_JT1078_MsgId.云台变倍控制, ""); + jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x14, typeof(JT808_0x0200_0x14)); + jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x15, typeof(JT808_0x0200_0x15)); + jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x16, typeof(JT808_0x0200_0x16)); + jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x17, typeof(JT808_0x0200_0x17)); + jT808Builder.Config.JT808_0X0200_Factory.JT808LocationAttachMethod.Add(JT808_JT1078_Constants.JT808_0X0200_0x18, typeof(JT808_0x0200_0x18)); + jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0075, typeof(JT808_0x8103_0x0075)); + jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0076, typeof(JT808_0x8103_0x0076)); + jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0077, typeof(JT808_0x8103_0x0077)); + jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x0079, typeof(JT808_0x8103_0x0079)); + jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x007A, typeof(JT808_0x8103_0x007A)); + jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x007B, typeof(JT808_0x8103_0x007B)); + jT808Builder.Config.JT808_0X8103_Factory.ParamMethods.Add(JT808_JT1078_Constants.JT808_0X8103_0x007C, typeof(JT808_0x8103_0x007C)); return jT808Builder; } } diff --git a/src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs b/src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs new file mode 100644 index 0000000..abe8e49 --- /dev/null +++ b/src/JT808.Protocol.Extensions.JT1078/Enums/JT808_JT1078_MsgId.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT808.Protocol.Extensions.JT1078.Enums +{ + public enum JT808_JT1078_MsgId:ushort + { + 终端上传音视频属性 = 0x1003, + 终端上传乘客流量 = 0x1005, + 终端上传音视频资源列表 = 0x1205, + 文件上传完成通知 = 0x1206, + 查询终端音视频属性 = 0x9003, + 实时音视频传输请求 = 0x9101, + 音视频实时传输控制 = 0x9102, + 实时音视频传输状态通知 = 0x9105, + 平台下发远程录像回放请求 = 0x9201, + 平台下发远程录像回放控制 = 0x9202, + 查询资源列表 = 0x9205, + 文件上传指令 = 0x9206, + 文件上传控制 = 0x9207, + 云台旋转 = 0x9301, + 云台调整焦距控制 = 0x9302, + 云台调整光圈控制 = 0x9303, + 云台雨刷控制 = 0x9304, + 红外补光控制 = 0x9305, + 云台变倍控制 = 0x9306 + } +} diff --git a/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x0077_Formatter.cs b/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x0077_Formatter.cs index 4d87d95..411af86 100644 --- a/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x0077_Formatter.cs +++ b/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x0077_Formatter.cs @@ -18,11 +18,11 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters jT808_0X8103_0X0077.ParamLength = reader.ReadByte(); jT808_0X8103_0X0077.NeedSetChannelTotal = reader.ReadByte(); if (jT808_0X8103_0X0077.NeedSetChannelTotal > 0) { - jT808_0X8103_0X0077.jT808_0X8103_0X0077_SignalChannels = new List(); + jT808_0X8103_0X0077.SignalChannels = new List(); var formatter = config.GetMessagePackFormatter(); for (int i = 0; i < jT808_0X8103_0X0077.NeedSetChannelTotal; i++) { - jT808_0X8103_0X0077.jT808_0X8103_0X0077_SignalChannels.Add(formatter.Deserialize(ref reader, config)); + jT808_0X8103_0X0077.SignalChannels.Add(formatter.Deserialize(ref reader, config)); } } return jT808_0X8103_0X0077; @@ -33,9 +33,9 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters writer.WriteUInt32(value.ParamId); writer.Skip(1,out var position); writer.WriteByte(value.NeedSetChannelTotal); - if (value.jT808_0X8103_0X0077_SignalChannels.Any()) { + if (value.SignalChannels.Any()) { var formatter = config.GetMessagePackFormatter(); - foreach (var signalChannel in value.jT808_0X8103_0X0077_SignalChannels) + foreach (var signalChannel in value.SignalChannels) { formatter.Serialize(ref writer, signalChannel, config); } diff --git a/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x007C_Formatter.cs b/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x007C_Formatter.cs index 6835353..34ef5e2 100644 --- a/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x007C_Formatter.cs +++ b/src/JT808.Protocol.Extensions.JT1078/Formatters/JT808_0x8103_0x007C_Formatter.cs @@ -19,7 +19,7 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters jT808_0x8103_0x007C.SleepWakeMode = reader.ReadByte(); jT808_0x8103_0x007C.WakeConditionType = reader.ReadByte(); jT808_0x8103_0x007C.TimerWakeDaySet = reader.ReadByte(); - jT808_0x8103_0x007C.jT808_0X8103_0X007C_TimerWakeDayParamter = config.GetMessagePackFormatter().Deserialize(ref reader, config); + jT808_0x8103_0x007C.TimerWakeDayParamter = config.GetMessagePackFormatter().Deserialize(ref reader, config); return jT808_0x8103_0x007C; } @@ -30,7 +30,7 @@ namespace JT808.Protocol.Extensions.JT1078.Formatters writer.WriteByte(value.SleepWakeMode); writer.WriteByte(value.WakeConditionType); writer.WriteByte(value.TimerWakeDaySet); - config.GetMessagePackFormatter().Serialize(ref writer, value.jT808_0X8103_0X007C_TimerWakeDayParamter, config); + config.GetMessagePackFormatter().Serialize(ref writer, value.TimerWakeDayParamter, config); writer.WriteByteReturn((byte)(writer.GetCurrentPosition()-position-1),position); } } diff --git a/src/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.csproj b/src/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.csproj index 1afa490..4aaed46 100644 --- a/src/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.csproj +++ b/src/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.csproj @@ -15,12 +15,16 @@ https://github.com/SmallChi/JT1078/blob/master/LICENSE https://github.com/SmallChi/JT1078/blob/master/LICENSE false - 1.0.0 + 1.0.1 LICENSE + + \JT808.Protocol.Extensions.JT1078\JT808.Protocol.Extensions.JT1078.xml + + - + diff --git a/src/JT808.Protocol.Extensions.JT1078/JT808_JT1078_Constants.cs b/src/JT808.Protocol.Extensions.JT1078/JT808_JT1078_Constants.cs new file mode 100644 index 0000000..40406b2 --- /dev/null +++ b/src/JT808.Protocol.Extensions.JT1078/JT808_JT1078_Constants.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT808.Protocol.Extensions.JT1078 +{ + public static class JT808_JT1078_Constants + { + /// + /// 视频相关报警 + /// + public const byte JT808_0X0200_0x14 = 0x14; + /// + /// 视频信号丢失报警状态 + /// + public const byte JT808_0X0200_0x15 = 0x15; + /// + /// 视频信号遮挡报警状态 + /// + public const byte JT808_0X0200_0x16 = 0x16; + /// + /// 存储器故障报警状态 + /// + public const byte JT808_0X0200_0x17 = 0x17; + /// + /// 异常驾驶行为报警详细描述 + /// + public const byte JT808_0X0200_0x18 = 0x18; + + /// + /// 音视频参数设置 + /// + public const uint JT808_0X8103_0x0075 = 0x0075; + /// + /// 音视频通道列表设置 + /// + public const uint JT808_0X8103_0x0076 = 0x0076; + /// + /// 单独视频通道参数设置 + /// + public const uint JT808_0X8103_0x0077 = 0x0077; + /// + /// 特殊报警录像参数设置 + /// + public const uint JT808_0X8103_0x0079 = 0x0079; + /// + /// 视频相关报警屏蔽字 + /// + public const uint JT808_0X8103_0x007A = 0x007A; + /// + /// 图像分析报警参数设置 + /// + public const uint JT808_0X8103_0x007B = 0x007B; + /// + /// 终端休眠模式唤醒设置 + /// + public const uint JT808_0X8103_0x007C = 0x007C; + } +} diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs index 4f58a6c..8d19913 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x14.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x0200_0x14 /// [JT808Formatter(typeof(JT808_0x0200_0x14_Formatter))] - public class JT808_0x0200_0x14 : JT808_0x0200_CustomBodyBase + public class JT808_0x0200_0x14 : JT808_0x0200_BodyBase { public override byte AttachInfoId { get; set; } = 0x14; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs index 4f08631..a193972 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x15.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x0200_0x15 /// [JT808Formatter(typeof(JT808_0x0200_0x15_Formatter))] - public class JT808_0x0200_0x15 : JT808_0x0200_CustomBodyBase + public class JT808_0x0200_0x15 : JT808_0x0200_BodyBase { public override byte AttachInfoId { get; set; } = 0x15; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs index 01c2600..af7f542 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x16.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x0200_0x16 /// [JT808Formatter(typeof(JT808_0x0200_0x16_Formatter))] - public class JT808_0x0200_0x16 : JT808_0x0200_CustomBodyBase + public class JT808_0x0200_0x16 : JT808_0x0200_BodyBase { public override byte AttachInfoId { get; set; } = 0x16; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs index 1229569..374cfc7 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x17.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x0200_0x17 /// [JT808Formatter(typeof(JT808_0x0200_0x17_Formatter))] - public class JT808_0x0200_0x17 : JT808_0x0200_CustomBodyBase + public class JT808_0x0200_0x17 : JT808_0x0200_BodyBase { public override byte AttachInfoId { get; set; } = 0x17; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs index 8693257..111cc4f 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x0200_0x18.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x0200_0x18 /// [JT808Formatter(typeof(JT808_0x0200_0x18_Formatter))] - public class JT808_0x0200_0x18 : JT808_0x0200_CustomBodyBase + public class JT808_0x0200_0x18 : JT808_0x0200_BodyBase { public override byte AttachInfoId { get; set; } = 0x18; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0075.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0075.cs index e29c808..d4a16b3 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0075.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0075.cs @@ -9,7 +9,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x8103_0x0075 /// [JT808Formatter(typeof(JT808_0x8103_0x0075_Formatter))] - public class JT808_0x8103_0x0075 : JT808_0x8103_CustomBodyBase + public class JT808_0x8103_0x0075 : JT808_0x8103_BodyBase { public override uint ParamId { get; set; } = 0x0075; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0076.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0076.cs index 01e6471..a05b74a 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0076.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0076.cs @@ -11,7 +11,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x8103_0x0076 /// [JT808Formatter(typeof(JT808_0x8103_0x0076_Formatter))] - public class JT808_0x8103_0x0076 : JT808_0x8103_CustomBodyBase + public class JT808_0x8103_0x0076 : JT808_0x8103_BodyBase { public override uint ParamId { get; set; } = 0x0076; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0077.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0077.cs index d1884f5..cc1b21b 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0077.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0077.cs @@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x8103_0x0077 /// [JT808Formatter(typeof(JT808_0x8103_0x0077_Formatter))] - public class JT808_0x8103_0x0077 : JT808_0x8103_CustomBodyBase + public class JT808_0x8103_0x0077 : JT808_0x8103_BodyBase { public override uint ParamId { get; set; } = 0x0077; /// @@ -22,6 +22,6 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// public byte NeedSetChannelTotal { get; set; } - public List jT808_0X8103_0X0077_SignalChannels { get; set; } + public List SignalChannels { get; set; } } } diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0079.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0079.cs index 98aede9..0d68be1 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0079.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x0079.cs @@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x8103_0x0079 /// [JT808Formatter(typeof(JT808_0x8103_0x0079_Formatter))] - public class JT808_0x8103_0x0079 : JT808_0x8103_CustomBodyBase + public class JT808_0x8103_0x0079 : JT808_0x8103_BodyBase { public override uint ParamId { get; set; } = 0x0079; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007A.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007A.cs index 19faabf..a911ca5 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007A.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007A.cs @@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x8103_0x007A /// [JT808Formatter(typeof(JT808_0x8103_0x007A_Formatter))] - public class JT808_0x8103_0x007A : JT808_0x8103_CustomBodyBase + public class JT808_0x8103_0x007A : JT808_0x8103_BodyBase { public override uint ParamId { get; set; } = 0x007A; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007B.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007B.cs index eeca542..38d99f6 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007B.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007B.cs @@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x8103_0x007B /// [JT808Formatter(typeof(JT808_0x8103_0x007B_Formatter))] - public class JT808_0x8103_0x007B : JT808_0x8103_CustomBodyBase + public class JT808_0x8103_0x007B : JT808_0x8103_BodyBase { public override uint ParamId { get; set; } = 0x007B; /// diff --git a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007C.cs b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007C.cs index f4c881d..e2b1214 100644 --- a/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007C.cs +++ b/src/JT808.Protocol.Extensions.JT1078/MessageBody/JT808_0x8103_0x007C.cs @@ -10,7 +10,7 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// 0x8103_0x007C /// [JT808Formatter(typeof(JT808_0x8103_0x007C_Formatter))] - public class JT808_0x8103_0x007C : JT808_0x8103_CustomBodyBase + public class JT808_0x8103_0x007C : JT808_0x8103_BodyBase { public override uint ParamId { get; set; } = 0x007C; /// @@ -32,6 +32,6 @@ namespace JT808.Protocol.Extensions.JT1078.MessageBody /// /// 日定时唤醒参数列表 /// - public JT808_0x8103_0x007C_TimerWakeDayParamter jT808_0X8103_0X007C_TimerWakeDayParamter { get; set; } + public JT808_0x8103_0x007C_TimerWakeDayParamter TimerWakeDayParamter { get; set; } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1700Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1700Test.cs index 24fcbc3..4cd0afa 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1700Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1700Test.cs @@ -27,26 +27,21 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test1() { - var PlateFormIds = new byte[11]; - var AuthorizeCode1s = new byte[64]; - var AuthorizeCode2s= new byte[64]; - - PlateFormIds = Enumerable.Range(0, 11).Select(s => (byte)s).ToArray(); - AuthorizeCode1s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); - AuthorizeCode2s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); + var PlateFormIds = Enumerable.Range(0, 11).Select(s => (byte)s).ToArray(); + var AuthorizeCode1s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); + var AuthorizeCode2s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); JT809_JT1078_0x1700 jT809_JT1078_0x1700 = new JT809_JT1078_0x1700() { - VehicleNo="粤B12345", - VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, - SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.时效口令上报消息, - SubBodies= new JT809_JT1078_0x1700_0x1701() { - PlateFormId= PlateFormIds, - AuthorizeCode1= AuthorizeCode1s, + VehicleNo="粤B12345", + VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, + SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.时效口令上报消息, + SubBodies= new JT809_JT1078_0x1700_0x1701() { + PlateFormId= PlateFormIds, + AuthorizeCode1= AuthorizeCode1s, AuthorizeCode2= AuthorizeCode2s - } + } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1700).ToHexString(); Assert.Equal("D4C1423132333435000000000000000000000000000217010000008B000102030405060708090A000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F", hex); } @@ -54,9 +49,17 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":5889,\"DataLength\":139,\"SubBodies\":{\"PlateFormId\":\"AAECAwQFBgcICQo=\",\"AuthorizeCode1\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"AuthorizeCode2\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\"}}"; + var PlateFormIds = Enumerable.Range(0, 11).Select(s => (byte)s).ToArray(); + var AuthorizeCode1s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); + var AuthorizeCode2s = Enumerable.Range(0, 64).Select(s => (byte)s).ToArray(); var jT809_JT1078_0x1700 = JT809Serializer.Deserialize("D4C1423132333435000000000000000000000000000217010000008B000102030405060708090A000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1700.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1700.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.时效口令上报消息, jT809_JT1078_0x1700.SubBusinessType); + var jT809_JT1078_0x1700_0x1701 = jT809_JT1078_0x1700.SubBodies as JT809_JT1078_0x1700_0x1701; + Assert.Equal(PlateFormIds, jT809_JT1078_0x1700_0x1701.PlateFormId); + Assert.Equal(AuthorizeCode1s, jT809_JT1078_0x1700_0x1701.AuthorizeCode1); + Assert.Equal(AuthorizeCode2s, jT809_JT1078_0x1700_0x1701.AuthorizeCode2); } [Fact] @@ -69,7 +72,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.时效口令请求消息, SubBodies = new JT809_JT1078_0x1700_0x1702() }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1700).ToHexString(); Assert.Equal("D4C14231323334350000000000000000000000000002170200000000", hex); } @@ -77,9 +79,10 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":5890,\"DataLength\":0,\"SubBodies\":{}}"; var jT809_JT1078_0x1700 = JT809Serializer.Deserialize("D4C14231323334350000000000000000000000000002170200000000".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1700), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1700.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1700.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.时效口令请求消息, jT809_JT1078_0x1700.SubBusinessType); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1800Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1800Test.cs index 814f522..812fc46 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1800Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1800Test.cs @@ -29,16 +29,15 @@ namespace JT809.Protocol.Extensions.JT1078.Test { JT809_JT1078_0x1800 jT809_JT1078_0x1800 = new JT809_JT1078_0x1800() { - VehicleNo="粤B12345", - VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, + VehicleNo="粤B12345", + VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.实时音视频请求应答消息, - SubBodies= new JT809_JT1078_0x1800_0x1801() { - ServerIp="127.0.0.1", - ServerPort=8080, - Result=1 + SubBodies= new JT809_JT1078_0x1800_0x1801() { + ServerIp="127.0.0.1", + ServerPort=8080, + Result=1 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1800).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000021801000000230100000000000000000000000000000000000000000000003132372E302E302E311F90", hex); } @@ -46,9 +45,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6145,\"DataLength\":35,\"SubBodies\":{\"Result\":1,\"ServerIp\":\"127.0.0.1\",\"ServerPort\":8080}}"; var jT809_JT1078_0x1800 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000021801000000230100000000000000000000000000000000000000000000003132372E302E302E311F90".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1800.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1800.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.实时音视频请求应答消息, jT809_JT1078_0x1800.SubBusinessType); + var jT809_JT1078_0x1800_0x1801 = jT809_JT1078_0x1800.SubBodies as JT809_JT1078_0x1800_0x1801; + Assert.Equal("127.0.0.1", jT809_JT1078_0x1800_0x1801.ServerIp); + Assert.Equal(8080, jT809_JT1078_0x1800_0x1801.ServerPort); + Assert.Equal(1, jT809_JT1078_0x1800_0x1801.Result); } [Fact] @@ -63,7 +67,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test Result=1 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1800).ToHexString(); Assert.Equal("D4C1423132333435000000000000000000000000000218020000000101", hex); } @@ -71,9 +74,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6146,\"DataLength\":1,\"SubBodies\":{\"Result\":1}}"; var jT809_JT1078_0x1800 = JT809Serializer.Deserialize("D4C1423132333435000000000000000000000000000218020000000101".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1800), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1800.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1800.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输应答消息, jT809_JT1078_0x1800.SubBusinessType); + var jT809_JT1078_0x1800_0x1802 = jT809_JT1078_0x1800.SubBodies as JT809_JT1078_0x1800_0x1802; + Assert.Equal(1, jT809_JT1078_0x1800_0x1802.Result); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1900Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1900Test.cs index ee56033..33e1544 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1900Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1900Test.cs @@ -33,7 +33,7 @@ namespace JT809.Protocol.Extensions.JT1078.Test }); } - + public object jT809_JT1078_0x1800 { get; private set; } [Fact] public void Test1() @@ -47,29 +47,28 @@ namespace JT809.Protocol.Extensions.JT1078.Test ItemNum=2, ItemList=new List { new JT809_JT1078_0x1900_Record{ - AlarmType=1, + AlarmType=1, AVItemType=2, - ChannelId=3, - EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), - FileSize=4, - MemType=5, - StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), - StreamType=6 + ChannelId=3, + FileSize=4, + MemType=5, + StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), + EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), + StreamType=6 }, new JT809_JT1078_0x1900_Record{ - AlarmType=11, + AlarmType=11, AVItemType=21, - ChannelId=31, - EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), - FileSize=41, - MemType=51, - StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), - StreamType=61 + ChannelId=31, + FileSize=41, + MemType=51, + StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), + EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), + StreamType=61 } } } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1900).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000021901000000440000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029", hex); } @@ -77,9 +76,30 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6401,\"DataLength\":68,\"SubBodies\":{\"ItemNum\":2,\"ItemList\":[{\"ChannelId\":3,\"StartTime\":\"2019-07-15 10:10:10\",\"EndTime\":\"2019-07-16 10:10:10\",\"AlarmType\":1,\"AVItemType\":2,\"StreamType\":6,\"MemType\":5,\"FileSize\":4},{\"ChannelId\":31,\"StartTime\":\"2019-06-15 10:10:10\",\"EndTime\":\"2019-06-16 10:10:10\",\"AlarmType\":11,\"AVItemType\":21,\"StreamType\":61,\"MemType\":51,\"FileSize\":41}]}}"; var jT809_JT1078_0x1900 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000021901000000440000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1900.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1900.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息消息, jT809_JT1078_0x1900.SubBusinessType); + var jT809_JT1078_0x1900_0x1901 = jT809_JT1078_0x1900.SubBodies as JT809_JT1078_0x1900_0x1901; + Assert.Equal(2u, jT809_JT1078_0x1900_0x1901.ItemNum); + + Assert.Equal(1u, jT809_JT1078_0x1900_0x1901.ItemList[0].AlarmType); + Assert.Equal(2, jT809_JT1078_0x1900_0x1901.ItemList[0].AVItemType); + Assert.Equal(3, jT809_JT1078_0x1900_0x1901.ItemList[0].ChannelId); + Assert.Equal(4u, jT809_JT1078_0x1900_0x1901.ItemList[0].FileSize); + Assert.Equal(5, jT809_JT1078_0x1900_0x1901.ItemList[0].MemType); + Assert.Equal(Convert.ToDateTime("2019-07-15 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[0].StartTime); + Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[0].EndTime); + Assert.Equal(6, jT809_JT1078_0x1900_0x1901.ItemList[0].StreamType); + + Assert.Equal(11u, jT809_JT1078_0x1900_0x1901.ItemList[1].AlarmType); + Assert.Equal(21, jT809_JT1078_0x1900_0x1901.ItemList[1].AVItemType); + Assert.Equal(31, jT809_JT1078_0x1900_0x1901.ItemList[1].ChannelId); + Assert.Equal(41u, jT809_JT1078_0x1900_0x1901.ItemList[1].FileSize); + Assert.Equal(51, jT809_JT1078_0x1900_0x1901.ItemList[1].MemType); + Assert.Equal(Convert.ToDateTime("2019-06-15 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[1].StartTime); + Assert.Equal(Convert.ToDateTime("2019-06-16 10:10:10"), jT809_JT1078_0x1900_0x1901.ItemList[1].EndTime); + Assert.Equal(61, jT809_JT1078_0x1900_0x1901.ItemList[1].StreamType); } [Fact] @@ -91,33 +111,32 @@ namespace JT809.Protocol.Extensions.JT1078.Test VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录应答消息, SubBodies = new JT809_JT1078_0x1900_0x1902() { - Result=1, - ItemNum=2, - ItemList = new List { - new JT809_JT1078_0x1900_Record{ - AlarmType=1, - AVItemType=2, - ChannelId=3, - EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), - FileSize=4, - MemType=5, - StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), - StreamType=6 - }, - new JT809_JT1078_0x1900_Record{ - AlarmType=11, - AVItemType=21, - ChannelId=31, - EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), - FileSize=41, - MemType=51, - StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), - StreamType=61 - } + Result=1, + ItemNum=2, + ItemList = new List { + new JT809_JT1078_0x1900_Record{ + AlarmType=1, + AVItemType=2, + ChannelId=3, + FileSize=4, + MemType=5, + StartTime=Convert.ToDateTime("2019-07-15 10:10:10"), + EndTime=Convert.ToDateTime("2019-07-16 10:10:10"), + StreamType=6 + }, + new JT809_JT1078_0x1900_Record{ + AlarmType=11, + AVItemType=21, + ChannelId=31, + FileSize=41, + MemType=51, + StartTime=Convert.ToDateTime("2019-06-15 10:10:10"), + EndTime=Convert.ToDateTime("2019-06-16 10:10:10"), + StreamType=61 + } } } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1900).ToHexString(); Assert.Equal("D4C14231323334350000000000000000000000000002190200000045010000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029", hex); } @@ -125,9 +144,31 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6402,\"DataLength\":69,\"SubBodies\":{\"Result\":1,\"ItemNum\":2,\"ItemList\":[{\"ChannelId\":3,\"StartTime\":\"2019-07-15 10:10:10\",\"EndTime\":\"2019-07-16 10:10:10\",\"AlarmType\":1,\"AVItemType\":2,\"StreamType\":6,\"MemType\":5,\"FileSize\":4},{\"ChannelId\":31,\"StartTime\":\"2019-06-15 10:10:10\",\"EndTime\":\"2019-06-16 10:10:10\",\"AlarmType\":11,\"AVItemType\":21,\"StreamType\":61,\"MemType\":51,\"FileSize\":41}]}}"; var jT809_JT1078_0x1900 = JT809Serializer.Deserialize("D4C14231323334350000000000000000000000000002190200000045010000000203000000005D2BE082000000005D2D32020000000000000001020605000000041F000000005D045382000000005D05A502000000000000000B153D3300000029".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1900.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1900.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录应答消息, jT809_JT1078_0x1900.SubBusinessType); + var jT809_JT1078_0x1900_0x1902 = jT809_JT1078_0x1900.SubBodies as JT809_JT1078_0x1900_0x1902; + Assert.Equal(2u, jT809_JT1078_0x1900_0x1902.ItemNum); + Assert.Equal(1, jT809_JT1078_0x1900_0x1902.Result); + + Assert.Equal(1u, jT809_JT1078_0x1900_0x1902.ItemList[0].AlarmType); + Assert.Equal(2, jT809_JT1078_0x1900_0x1902.ItemList[0].AVItemType); + Assert.Equal(3, jT809_JT1078_0x1900_0x1902.ItemList[0].ChannelId); + Assert.Equal(4u, jT809_JT1078_0x1900_0x1902.ItemList[0].FileSize); + Assert.Equal(5, jT809_JT1078_0x1900_0x1902.ItemList[0].MemType); + Assert.Equal(Convert.ToDateTime("2019-07-15 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[0].StartTime); + Assert.Equal(Convert.ToDateTime("2019-07-16 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[0].EndTime); + Assert.Equal(6, jT809_JT1078_0x1900_0x1902.ItemList[0].StreamType); + + Assert.Equal(11u, jT809_JT1078_0x1900_0x1902.ItemList[1].AlarmType); + Assert.Equal(21, jT809_JT1078_0x1900_0x1902.ItemList[1].AVItemType); + Assert.Equal(31, jT809_JT1078_0x1900_0x1902.ItemList[1].ChannelId); + Assert.Equal(41u, jT809_JT1078_0x1900_0x1902.ItemList[1].FileSize); + Assert.Equal(51, jT809_JT1078_0x1900_0x1902.ItemList[1].MemType); + Assert.Equal(Convert.ToDateTime("2019-06-15 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[1].StartTime); + Assert.Equal(Convert.ToDateTime("2019-06-16 10:10:10"), jT809_JT1078_0x1900_0x1902.ItemList[1].EndTime); + Assert.Equal(61, jT809_JT1078_0x1900_0x1902.ItemList[1].StreamType); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1A00Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1A00Test.cs index 8ec78a7..eacbf71 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1A00Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1A00Test.cs @@ -40,17 +40,16 @@ namespace JT809.Protocol.Extensions.JT1078.Test { JT809_JT1078_0x1A00 jT809_JT1078_0x1A00 = new JT809_JT1078_0x1A00() { - VehicleNo="粤B12345", - VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, - SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像回放请求应答消息, + VehicleNo="粤B12345", + VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, + SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像回放请求应答消息, SubBodies= new JT809_JT1078_0x1A00_0x1A01() { - Result=1, - ServerIp="127.0.0.1", - ServerPort=8080 + Result=1, + ServerIp="127.0.0.1", + ServerPort=8080 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1A00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000021A010000002300000000000000000000000000000000000000000000003132372E302E302E311F9001", hex); } @@ -58,9 +57,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6657,\"DataLength\":35,\"SubBodies\":{\"ServerIp\":\"127.0.0.1\",\"ServerPort\":8080,\"Result\":1}}"; var jT809_JT1078_0x1A00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000021A010000002300000000000000000000000000000000000000000000003132372E302E302E311F9001".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1A00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1A00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放请求应答消息, jT809_JT1078_0x1A00.SubBusinessType); + var jT809_JT1078_0x1A00_0x1A01 = jT809_JT1078_0x1A00.SubBodies as JT809_JT1078_0x1A00_0x1A01; + Assert.Equal(1, jT809_JT1078_0x1A00_0x1A01.Result); + Assert.Equal("127.0.0.1", jT809_JT1078_0x1A00_0x1A01.ServerIp); + Assert.Equal(8080, jT809_JT1078_0x1A00_0x1A01.ServerPort); } [Fact] @@ -75,7 +79,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test Result=1 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1A00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000021A020000000101", hex); } @@ -83,9 +86,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6658,\"DataLength\":1,\"SubBodies\":{\"Result\":1}}"; var jT809_JT1078_0x1A00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000021A020000000101".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1A00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1A00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1A00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放控制应答消息, jT809_JT1078_0x1A00.SubBusinessType); + var jT809_JT1078_0x1A00_0x1A02 = jT809_JT1078_0x1A00.SubBodies as JT809_JT1078_0x1A00_0x1A02; + Assert.Equal(1, jT809_JT1078_0x1A00_0x1A02.Result); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1B00Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1B00Test.cs index e82145a..64ecce7 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1B00Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x1B00Test.cs @@ -40,16 +40,15 @@ namespace JT809.Protocol.Extensions.JT1078.Test { JT809_JT1078_0x1B00 jT809_JT1078_0x1B00 = new JT809_JT1078_0x1B00() { - VehicleNo="粤B12345", - VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, - SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像下载请求应答消息, + VehicleNo="粤B12345", + VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, + SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.远程录像下载请求应答消息, SubBodies= new JT809_JT1078_0x1B00_0x1B01() { - Result=1, - SessionId=2 + Result=1, + SessionId=2 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1B00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000021B0100000003010002", hex); } @@ -57,9 +56,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6913,\"DataLength\":3,\"SubBodies\":{\"Result\":1,\"SessionId\":2}}"; var jT809_JT1078_0x1B00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000021B0100000003010002".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1B00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1B00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载请求应答消息, jT809_JT1078_0x1B00.SubBusinessType); + var jT809_JT1078_0x1B00_0x1B01 = jT809_JT1078_0x1B00.SubBodies as JT809_JT1078_0x1B00_0x1B01; + Assert.Equal(1, jT809_JT1078_0x1B00_0x1B01.Result); + Assert.Equal(2, jT809_JT1078_0x1B00_0x1B01.SessionId); } [Fact] @@ -71,16 +74,15 @@ namespace JT809.Protocol.Extensions.JT1078.Test VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.远程录像下载通知消息, SubBodies = new JT809_JT1078_0x1B00_0x1B02() { - Result=1, - UserName="tk", + Result=1, + UserName="tk", SessionId=2, - ServerIp="127.0.0.1", - FilePath="D://123/456", - Password="tk123456", - TcpPort=8080 + ServerIp="127.0.0.1", + FilePath="D://123/456", + Password="tk123456", + TcpPort=8080 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1B00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000021B020000013401000200000000000000000000000000000000000000000000003132372E302E302E311F900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000746B0000000000000000000000000000746B313233343536000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443A2F2F3132332F343536", hex); } @@ -88,9 +90,18 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6914,\"DataLength\":308,\"SubBodies\":{\"Result\":1,\"SessionId\":2,\"ServerIp\":\"127.0.0.1\",\"TcpPort\":8080,\"UserName\":\"tk\",\"Password\":\"tk123456\",\"FilePath\":\"D://123/456\"}}"; var jT809_JT1078_0x1B00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000021B020000013401000200000000000000000000000000000000000000000000003132372E302E302E311F900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000746B0000000000000000000000000000746B313233343536000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000443A2F2F3132332F343536".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1B00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1B00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载通知消息, jT809_JT1078_0x1B00.SubBusinessType); + var jT809_JT1078_0x1B00_0x1B02 = jT809_JT1078_0x1B00.SubBodies as JT809_JT1078_0x1B00_0x1B02; + Assert.Equal(1, jT809_JT1078_0x1B00_0x1B02.Result); + Assert.Equal("tk", jT809_JT1078_0x1B00_0x1B02.UserName); + Assert.Equal(2, jT809_JT1078_0x1B00_0x1B02.SessionId); + Assert.Equal("127.0.0.1", jT809_JT1078_0x1B00_0x1B02.ServerIp); + Assert.Equal("D://123/456", jT809_JT1078_0x1B00_0x1B02.FilePath); + Assert.Equal("tk123456", jT809_JT1078_0x1B00_0x1B02.Password); + Assert.Equal(8080, jT809_JT1078_0x1B00_0x1B02.TcpPort); } [Fact] @@ -106,7 +117,6 @@ namespace JT809.Protocol.Extensions.JT1078.Test Result = 1 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x1B00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000021B030000000101", hex); } @@ -114,9 +124,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test6() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":6915,\"DataLength\":1,\"SubBodies\":{\"Result\":1}}"; var jT809_JT1078_0x1B00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000021B030000000101".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1B00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1B00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1B00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载控制应答消息, jT809_JT1078_0x1B00.SubBusinessType); + var jT809_JT1078_0x1B00_0x1B03 = jT809_JT1078_0x1B00.SubBodies as JT809_JT1078_0x1B00_0x1B03; + Assert.Equal(1, jT809_JT1078_0x1B00_0x1B03.Result); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9700Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9700Test.cs index 9fbe653..181c325 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9700Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9700Test.cs @@ -29,12 +29,11 @@ namespace JT809.Protocol.Extensions.JT1078.Test { JT809_JT1078_0x9700 jT809_JT1078_0x9700 = new JT809_JT1078_0x9700() { - VehicleNo="粤B12345", - VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, + VehicleNo="粤B12345", + VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.时效口令请求应答消息, - SubBodies= new JT809_JT1078_0x9700_0x9702() + SubBodies= new JT809_JT1078_0x9700_0x9702() }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9700); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9700).ToHexString(); Assert.Equal("D4C14231323334350000000000000000000000000002970200000000", hex); } @@ -42,9 +41,10 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":38658,\"DataLength\":0,\"SubBodies\":{}}"; var jT809_JT1078_0x9700 = JT809Serializer.Deserialize("D4C14231323334350000000000000000000000000002970200000000".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9700), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9700.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9700.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.时效口令请求应答消息, jT809_JT1078_0x9700.SubBusinessType); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9800Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9800Test.cs index b4a7f89..af69277 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9800Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9800Test.cs @@ -28,20 +28,19 @@ namespace JT809.Protocol.Extensions.JT1078.Test public void Test1() { var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); - var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); + var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); JT809_JT1078_0x9800 jT809_JT1078_0x9800 = new JT809_JT1078_0x9800() { - VehicleNo="粤B12345", - VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, + VehicleNo="粤B12345", + VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.实时音视频请求消息, - SubBodies= new JT809_JT1078_0x9800_0x9801() { - AVitemType=1, - ChannelId=2, - GnssData= GnssDatas, - AuthorizeCode= AuthorizeCodes + SubBodies= new JT809_JT1078_0x9800_0x9801() { + AVitemType=1, + ChannelId=2, + GnssData= GnssDatas, + AuthorizeCode= AuthorizeCodes } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9800); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9800).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029801000000660201000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); } @@ -49,9 +48,17 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":38913,\"DataLength\":102,\"SubBodies\":{\"ChannelId\":2,\"AVitemType\":1,\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; + var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); + var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); var jT809_JT1078_0x1900 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029801000000660201000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x1900), str); + Assert.Equal("粤B12345", jT809_JT1078_0x1900.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x1900.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.实时音视频请求消息, jT809_JT1078_0x1900.SubBusinessType); + var jT809_JT1078_0x9800_0x9801 = jT809_JT1078_0x1900.SubBodies as JT809_JT1078_0x9800_0x9801; + Assert.Equal(1, jT809_JT1078_0x9800_0x9801.AVitemType); + Assert.Equal(2, jT809_JT1078_0x9800_0x9801.ChannelId); + Assert.Equal(GnssDatas, jT809_JT1078_0x9800_0x9801.GnssData); + Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9800_0x9801.AuthorizeCode); } [Fact] @@ -64,10 +71,9 @@ namespace JT809.Protocol.Extensions.JT1078.Test SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输消息, SubBodies = new JT809_JT1078_0x9800_0x9802() { ChannelId=1, - AVitemType=2 + AVitemType=2 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9800); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9800).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029802000000020102", hex); } @@ -75,9 +81,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":38914,\"DataLength\":2,\"SubBodies\":{\"ChannelId\":1,\"AVitemType\":2}}"; var jT809_JT1078_0x9800 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029802000000020102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9800), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9800.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9800.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动请求停止实时音视频传输消息, jT809_JT1078_0x9800.SubBusinessType); + var jT809_JT1078_0x9800_0x9802 = jT809_JT1078_0x9800.SubBodies as JT809_JT1078_0x9800_0x9802; + Assert.Equal(1, jT809_JT1078_0x9800_0x9802.ChannelId); + Assert.Equal(2, jT809_JT1078_0x9800_0x9802.AVitemType); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9900Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9900Test.cs index 55958de..3e11256 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9900Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9900Test.cs @@ -40,15 +40,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test { JT809_JT1078_0x9900 jT809_JT1078_0x9900 = new JT809_JT1078_0x9900() { - VehicleNo="粤B12345", - VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, + VehicleNo="粤B12345", + VehicleColor= Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType= (ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息, - SubBodies= new JT809_JT1078_0x9900_0x9901() { + SubBodies= new JT809_JT1078_0x9900_0x9901() { Result=1, - ItemNumber=2 + ItemNumber=2 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029901000000020102", hex); } @@ -56,9 +55,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39169,\"DataLength\":2,\"SubBodies\":{\"Result\":1,\"ItemNumber\":2}}"; var jT809_JT1078_0x9900 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029901000000020102".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.主动上传音视频资源目录信息应答消息, jT809_JT1078_0x9900.SubBusinessType); + var jT809_JT1078_0x9900_0x9901 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9901; + Assert.Equal(1, jT809_JT1078_0x9900_0x9901.Result); + Assert.Equal(2, jT809_JT1078_0x9900_0x9901.ItemNumber); } [Fact] @@ -75,15 +78,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test ChannelId = 1, AlarmType = 2, AVItemType = 3, - EndTime = Convert.ToDateTime("2017-07-16 10:10:10"), MemType = 4, StartTime = Convert.ToDateTime("2017-07-15 10:10:10"), - StreamType=5, - AuthorizeCode= AuthorizeCodes, - GnssData= GnssDatas + EndTime = Convert.ToDateTime("2017-07-16 10:10:10"), + StreamType =5, + AuthorizeCode= AuthorizeCodes, + GnssData= GnssDatas } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9900).ToHexString(); Assert.Equal("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); } @@ -91,9 +93,22 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39170,\"DataLength\":128,\"SubBodies\":{\"ChannelId\":1,\"StartTime\":\"2017-07-15 10:10:10\",\"EndTime\":\"2017-07-16 10:10:10\",\"AlarmType\":2,\"AVItemType\":3,\"StreamType\":5,\"MemType\":4,\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; + var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); + var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); var jT809_JT1078_0x9900 = JT809Serializer.Deserialize("D4C1423132333435000000000000000000000000000299020000008001000000005969798200000000596ACB020000000000000002030504000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9900), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9900.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9900.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.查询音视频资源目录请求消息, jT809_JT1078_0x9900.SubBusinessType); + var jT809_JT1078_0x9900_0x9902 = jT809_JT1078_0x9900.SubBodies as JT809_JT1078_0x9900_0x9902; + Assert.Equal(1, jT809_JT1078_0x9900_0x9902.ChannelId); + Assert.Equal(2u, jT809_JT1078_0x9900_0x9902.AlarmType); + Assert.Equal(3, jT809_JT1078_0x9900_0x9902.AVItemType); + Assert.Equal(4, jT809_JT1078_0x9900_0x9902.MemType); + Assert.Equal(Convert.ToDateTime("2017-07-15 10:10:10"), jT809_JT1078_0x9900_0x9902.StartTime); + Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9900_0x9902.EndTime); + Assert.Equal(5, jT809_JT1078_0x9900_0x9902.StreamType); + Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9900_0x9902.AuthorizeCode); + Assert.Equal(GnssDatas, jT809_JT1078_0x9900_0x9902.GnssData); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9A00Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9A00Test.cs index 4acf7ea..77e8578 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9A00Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9A00Test.cs @@ -53,10 +53,9 @@ namespace JT809.Protocol.Extensions.JT1078.Test MemType = 3, StreamType = 4, PlayBackStartTime = Convert.ToDateTime("2017-07-16 10:10:10"), - PlayBackEndTime = Convert.ToDateTime("2017-07-17 10:10:10") - } + PlayBackEndTime = Convert.ToDateTime("2017-07-17 10:10:10") + } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9A00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029A01000000780201040300000000596ACB0200000000596C1C82000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); } @@ -64,9 +63,21 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39425,\"DataLength\":120,\"SubBodies\":{\"ChannelId\":2,\"AVItemType\":1,\"StreamType\":4,\"MemType\":3,\"PlayBackStartTime\":\"2017-07-16 10:10:10\",\"PlayBackEndTime\":\"2017-07-17 10:10:10\",\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; + var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); + var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); var jT809_JT1078_0x9A00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029A01000000780201040300000000596ACB0200000000596C1C82000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9A00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9A00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放请求消息, jT809_JT1078_0x9A00.SubBusinessType); + var jT809_JT1078_0x9A00_0x9A01 = jT809_JT1078_0x9A00.SubBodies as JT809_JT1078_0x9A00_0x9A01; + Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9A00_0x9A01.AuthorizeCode); + Assert.Equal(GnssDatas, jT809_JT1078_0x9A00_0x9A01.GnssData); + Assert.Equal(1,jT809_JT1078_0x9A00_0x9A01.AVItemType); + Assert.Equal(2,jT809_JT1078_0x9A00_0x9A01.ChannelId); + Assert.Equal(3,jT809_JT1078_0x9A00_0x9A01.MemType); + Assert.Equal(4,jT809_JT1078_0x9A00_0x9A01.StreamType); + Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9A00_0x9A01.PlayBackStartTime); + Assert.Equal(Convert.ToDateTime("2017-07-17 10:10:10"), jT809_JT1078_0x9A00_0x9A01.PlayBackEndTime); } [Fact] @@ -80,12 +91,11 @@ namespace JT809.Protocol.Extensions.JT1078.Test VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.远程录像回放控制消息, SubBodies = new JT809_JT1078_0x9A00_0x9A02() { - ControlType=1, - DateTime= Convert.ToDateTime("2017-07-17 10:10:10"), - FastTime=1 + ControlType=1, + DateTime= Convert.ToDateTime("2017-07-17 10:10:10"), + FastTime=1 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9A00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029A020000000A010100000000596C1C82", hex); } @@ -93,9 +103,14 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39426,\"DataLength\":10,\"SubBodies\":{\"ControlType\":1,\"FastTime\":1,\"DateTime\":\"2017-07-17 10:10:10\"}}"; var jT809_JT1078_0x9A00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029A020000000A010100000000596C1C82".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9A00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9A00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9A00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像回放控制消息, jT809_JT1078_0x9A00.SubBusinessType); + var jT809_JT1078_0x9A00_0x9A02 = jT809_JT1078_0x9A00.SubBodies as JT809_JT1078_0x9A00_0x9A02; + Assert.Equal(1, jT809_JT1078_0x9A00_0x9A02.ControlType); + Assert.Equal(Convert.ToDateTime("2017-07-17 10:10:10"), jT809_JT1078_0x9A00_0x9A02.DateTime); + Assert.Equal(1, jT809_JT1078_0x9A00_0x9A02.FastTime); } } } diff --git a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9B00Test.cs b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9B00Test.cs index 73e8398..92a82d7 100644 --- a/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9B00Test.cs +++ b/src/JT809.Protocol.Extensions.JT1078.Test/JT809_JT1078_0x9B00Test.cs @@ -52,13 +52,12 @@ namespace JT809.Protocol.Extensions.JT1078.Test ChannelId = 2, MemType = 3, StreamType = 4, - StartTime = Convert.ToDateTime("2017-07-16 10:10:10"), - EndTime = Convert.ToDateTime("2017-07-17 10:10:10"), - AlarmType=5, - FileSize=6 - } + StartTime = Convert.ToDateTime("2017-07-16 10:10:10"), + EndTime = Convert.ToDateTime("2017-07-17 10:10:10"), + AlarmType=5, + FileSize=6 + } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9B00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029B01000000840200000000596ACB0200000000596C1C82000000000000000501040300000006000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223", hex); } @@ -66,9 +65,23 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test2() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39681,\"DataLength\":132,\"SubBodies\":{\"ChannelId\":2,\"StartTime\":\"2017-07-16 10:10:10\",\"EndTime\":\"2017-07-17 10:10:10\",\"AlarmType\":5,\"AVItemType\":1,\"StreamType\":4,\"MemType\":3,\"FileSize\":6,\"AuthorizeCode\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==\",\"GnssData\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj\"}}"; + var GnssDatas = Enumerable.Range(0, 36).Select(m => (byte)m).ToArray(); + var AuthorizeCodes = Enumerable.Range(0, 64).Select(m => (byte)m).ToArray(); var jT809_JT1078_0x9B00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029B01000000840200000000596ACB0200000000596C1C82000000000000000501040300000006000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9B00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9B00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载请求消息, jT809_JT1078_0x9B00.SubBusinessType); + var jT809_JT1078_0x9B00_0x9B01 = jT809_JT1078_0x9B00.SubBodies as JT809_JT1078_0x9B00_0x9B01; + Assert.Equal(AuthorizeCodes, jT809_JT1078_0x9B00_0x9B01.AuthorizeCode); + Assert.Equal(GnssDatas, jT809_JT1078_0x9B00_0x9B01.GnssData); + Assert.Equal(1, jT809_JT1078_0x9B00_0x9B01.AVItemType); + Assert.Equal(2, jT809_JT1078_0x9B00_0x9B01.ChannelId); + Assert.Equal(3, jT809_JT1078_0x9B00_0x9B01.MemType); + Assert.Equal(4, jT809_JT1078_0x9B00_0x9B01.StreamType); + Assert.Equal(Convert.ToDateTime("2017-07-16 10:10:10"), jT809_JT1078_0x9B00_0x9B01.StartTime); + Assert.Equal(Convert.ToDateTime("2017-07-17 10:10:10"), jT809_JT1078_0x9B00_0x9B01.EndTime); + Assert.Equal(5u, jT809_JT1078_0x9B00_0x9B01.AlarmType); + Assert.Equal(6u, jT809_JT1078_0x9B00_0x9B01.FileSize); } [Fact] @@ -80,11 +93,10 @@ namespace JT809.Protocol.Extensions.JT1078.Test VehicleColor = Protocol.Enums.JT809VehicleColorType.黄色, SubBusinessType = (ushort)JT809_JT1078_SubBusinessType.远程录像下载完成通知应答消息, SubBodies = new JT809_JT1078_0x9B00_0x9B02() { - Result=1, - SessionId=2 + Result=1, + SessionId=2 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9B00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029B0200000003010002", hex); } @@ -92,9 +104,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test4() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39682,\"DataLength\":3,\"SubBodies\":{\"Result\":1,\"SessionId\":2}}"; var jT809_JT1078_0x9B00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029B0200000003010002".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9B00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9B00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载完成通知应答消息, jT809_JT1078_0x9B00.SubBusinessType); + var jT809_JT1078_0x9B00_0x9B02 = jT809_JT1078_0x9B00.SubBodies as JT809_JT1078_0x9B00_0x9B02; + Assert.Equal(1, jT809_JT1078_0x9B00_0x9B02.Result); + Assert.Equal(2, jT809_JT1078_0x9B00_0x9B02.SessionId); } [Fact] public void Test5() @@ -107,10 +123,9 @@ namespace JT809.Protocol.Extensions.JT1078.Test SubBodies = new JT809_JT1078_0x9B00_0x9B03() { Type=1, - SessionId = 2 + SessionId = 2 } }; - var str = Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00); var hex = JT809Serializer.Serialize(jT809_JT1078_0x9B00).ToHexString(); Assert.Equal("D4C142313233343500000000000000000000000000029B0300000003000201", hex); } @@ -118,9 +133,13 @@ namespace JT809.Protocol.Extensions.JT1078.Test [Fact] public void Test6() { - var str = "{\"VehicleNo\":\"粤B12345\",\"VehicleColor\":2,\"SubBusinessType\":39683,\"DataLength\":3,\"SubBodies\":{\"SessionId\":2,\"Type\":1}}"; var jT809_JT1078_0x9B00 = JT809Serializer.Deserialize("D4C142313233343500000000000000000000000000029B0300000003000201".ToHexBytes()); - Assert.Equal(Newtonsoft.Json.JsonConvert.SerializeObject(jT809_JT1078_0x9B00), str); + Assert.Equal("粤B12345", jT809_JT1078_0x9B00.VehicleNo); + Assert.Equal(Protocol.Enums.JT809VehicleColorType.黄色, jT809_JT1078_0x9B00.VehicleColor); + Assert.Equal((ushort)JT809_JT1078_SubBusinessType.远程录像下载控制消息, jT809_JT1078_0x9B00.SubBusinessType); + var jT809_JT1078_0x9B00_0x9B03 = jT809_JT1078_0x9B00.SubBodies as JT809_JT1078_0x9B00_0x9B03; + Assert.Equal(1, jT809_JT1078_0x9B00_0x9B03.Type); + Assert.Equal(2, jT809_JT1078_0x9B00_0x9B03.SessionId); } } }