@@ -1,4 +1,5 @@ | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.Enums; | |||||
using JT808.Protocol.Extensions; | |||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using Xunit; | using Xunit; | ||||
@@ -10,23 +11,40 @@ namespace JT808.Protocol.Test.MessageBody | |||||
[Fact] | [Fact] | ||||
public void Test1() | public void Test1() | ||||
{ | { | ||||
JT808_0x8800 jT808_0X8800 = new JT808_0x8800 | |||||
JT808Package jT808Package = new JT808Package | |||||
{ | { | ||||
MultimediaId = 129, | |||||
RetransmitPackageIds = new byte[] { 0x01, 0x02, 0x03, 0x04 } | |||||
Header = new JT808Header | |||||
{ | |||||
MsgId= (ushort)JT808MsgId.多媒体数据上传应答, | |||||
TerminalPhoneNo="123456789", | |||||
}, | |||||
Bodies = new JT808_0x8800 | |||||
{ | |||||
MultimediaId = 129, | |||||
RetransmitPackageIds = new byte[] { 0x01, 0x02, 0x03, 0x04 } | |||||
} | |||||
}; | }; | ||||
string hex = JT808Serializer.Serialize(jT808_0X8800).ToHexString(); | |||||
Assert.Equal("000000810201020304", hex); | |||||
string hex = JT808Serializer.Serialize(jT808Package).ToHexString(); | |||||
Assert.Equal("7E8800000900012345678900010000008102010203048E7E", hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Test2() | public void Test2() | ||||
{ | { | ||||
byte[] bytes = "000000810201020304".ToHexBytes(); | |||||
JT808_0x8800 jT808_0X8800 = JT808Serializer.Deserialize<JT808_0x8800>(bytes); | |||||
byte[] bytes = "7E8800000900012345678900010000008102010203048E7E".ToHexBytes(); | |||||
var jt808Package = JT808Serializer.Deserialize<JT808Package>(bytes); | |||||
JT808_0x8800 jT808_0X8800 = jt808Package.Bodies as JT808_0x8800; | |||||
Assert.Equal((uint)129, jT808_0X8800.MultimediaId); | Assert.Equal((uint)129, jT808_0X8800.MultimediaId); | ||||
Assert.Equal(2, jT808_0X8800.RetransmitPackageCount); | Assert.Equal(2, jT808_0X8800.RetransmitPackageCount); | ||||
Assert.Equal(new byte[] { 0x01, 0x02, 0x03, 0x04 }, jT808_0X8800.RetransmitPackageIds); | Assert.Equal(new byte[] { 0x01, 0x02, 0x03, 0x04 }, jT808_0X8800.RetransmitPackageIds); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "7E8800000900012345678900010000008102010203048E7E".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808Package>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -43,5 +43,11 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(9, jT808_0X8801.VideoQuality); | Assert.Equal(9, jT808_0X8801.VideoQuality); | ||||
Assert.Equal(2686, jT808_0X8801.VideoTime); | Assert.Equal(2686, jT808_0X8801.VideoTime); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "8000000A7E010809EB7E78F5".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808_0x8801>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -35,5 +35,11 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-11-16 21:00:08"), jT808_0X8802.StartTime); | Assert.Equal(DateTime.Parse("2018-11-16 21:00:08"), jT808_0X8802.StartTime); | ||||
Assert.Equal(DateTime.Parse("2018-11-16 22:00:08"), jT808_0X8802.EndTime); | Assert.Equal(DateTime.Parse("2018-11-16 22:00:08"), jT808_0X8802.EndTime); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "027B03181116210008181116220008".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808_0x8802>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -37,5 +37,11 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(DateTime.Parse("2018-11-16 22:00:21"), jT808_0X8803.StartTime); | Assert.Equal(DateTime.Parse("2018-11-16 22:00:21"), jT808_0X8803.StartTime); | ||||
Assert.Equal(DateTime.Parse("2018-11-16 23:00:21"), jT808_0X8803.EndTime); | Assert.Equal(DateTime.Parse("2018-11-16 23:00:21"), jT808_0X8803.EndTime); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "00800018111622002118111623002101".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808_0x8803>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -33,5 +33,11 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(JT808RecordSave.实时上传, jT808_0X8804.RecordSave); | Assert.Equal(JT808RecordSave.实时上传, jT808_0X8804.RecordSave); | ||||
Assert.Equal(1, jT808_0X8804.AudioSampleRate); | Assert.Equal(1, jT808_0X8804.AudioSampleRate); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "00001E0001".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808_0x8804>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -27,5 +27,11 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(Enums.JT808MultimediaDeleted.保留.ToByteValue(), jT808_0X8805.MultimediaDeleted); | Assert.Equal(Enums.JT808MultimediaDeleted.保留.ToByteValue(), jT808_0X8805.MultimediaDeleted); | ||||
Assert.Equal((uint)10000, jT808_0X8805.MultimediaId); | Assert.Equal((uint)10000, jT808_0X8805.MultimediaId); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "0000271000".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808_0x8805>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -44,5 +44,11 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal((uint)12345, jT808_0X8900_Test_BodiesImpl.Id); | Assert.Equal((uint)12345, jT808_0X8900_Test_BodiesImpl.Id); | ||||
Assert.Equal(0x01, jT808_0X8900_Test_BodiesImpl.Sex); | Assert.Equal(0x01, jT808_0X8900_Test_BodiesImpl.Sex); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "0B0000303901".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808_0x8900>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -36,5 +36,11 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal((uint)128, jT808_0X8A00.E); | Assert.Equal((uint)128, jT808_0X8A00.E); | ||||
Assert.Equal(N, jT808_0X8A00.N); | Assert.Equal(N, jT808_0X8A00.N); | ||||
} | } | ||||
[Fact] | |||||
public void Test3() | |||||
{ | |||||
byte[] bytes = "00000080000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F".ToHexBytes(); | |||||
string json = JT808Serializer.Analyze<JT808_0x8A00>(bytes); | |||||
} | |||||
} | } | ||||
} | } |
@@ -71,7 +71,7 @@ namespace JT808.Protocol.Extensions | |||||
return hex; | return hex; | ||||
} | } | ||||
public static string ReadNumber(this byte value, string format = "X1") | |||||
public static string ReadNumber(this byte value, string format = "X2") | |||||
{ | { | ||||
return value.ToString(format); | return value.ToString(format); | ||||
} | } | ||||
@@ -59,7 +59,7 @@ namespace JT808.Protocol.MessageBody | |||||
ReadOnlySpan<byte> tmp = value.RetransmitPackageIds; | ReadOnlySpan<byte> tmp = value.RetransmitPackageIds; | ||||
for(int i=0; i< value.RetransmitPackageCount; i++) | for(int i=0; i< value.RetransmitPackageCount; i++) | ||||
{ | { | ||||
writer.WriteString($"ID{i+1}", tmp.Slice(i * 2, 2).ToArray().ToHexString()); | |||||
writer.WriteStringValue($"{tmp.Slice(i*2 , 2).ToArray().ToHexString()}"); | |||||
} | } | ||||
writer.WriteEndArray(); | writer.WriteEndArray(); | ||||
} | } | ||||
@@ -43,7 +43,7 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8805.MultimediaId = reader.ReadUInt32(); | jT808_0X8805.MultimediaId = reader.ReadUInt32(); | ||||
jT808_0X8805.MultimediaDeleted = reader.ReadByte(); | jT808_0X8805.MultimediaDeleted = reader.ReadByte(); | ||||
writer.WriteNumber($"[{jT808_0X8805.MultimediaId.ReadNumber()}]多媒体ID", jT808_0X8805.MultimediaId); | writer.WriteNumber($"[{jT808_0X8805.MultimediaId.ReadNumber()}]多媒体ID", jT808_0X8805.MultimediaId); | ||||
writer.WriteNumber($"[{jT808_0X8805.MultimediaId.ReadNumber()}]删除标志", jT808_0X8805.MultimediaDeleted); | |||||
writer.WriteNumber($"[{jT808_0X8805.MultimediaDeleted.ReadNumber()}]删除标志", jT808_0X8805.MultimediaDeleted); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -50,7 +50,7 @@ namespace JT808.Protocol.MessageBody | |||||
jT808_0X8A00.E = reader.ReadUInt32(); | jT808_0X8A00.E = reader.ReadUInt32(); | ||||
jT808_0X8A00.N = reader.ReadArray(128).ToArray(); | jT808_0X8A00.N = reader.ReadArray(128).ToArray(); | ||||
writer.WriteNumber($"[{jT808_0X8A00.E.ReadNumber()}]RSA公钥e", jT808_0X8A00.E); | writer.WriteNumber($"[{jT808_0X8A00.E.ReadNumber()}]RSA公钥e", jT808_0X8A00.E); | ||||
writer.WriteString($"RSA公钥n", jT808_0X8A00.N.ToHexString()); | |||||
writer.WriteString($"RSA公钥N", jT808_0X8A00.N.ToHexString()); | |||||
} | } | ||||
} | } | ||||
} | } |