@@ -43,7 +43,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||
//00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 | |||
//00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32 | |||
//D4C1413132333435000000000000000000000000000112010000003D00000000000000423A35C700000000000000423A35C7313131313131313100000000000000000000000031313131314141323232323232323232323232 | |||
Assert.Equal("D4C1413132333435000000000000000000000000000112010000003D00000000000000423A35C700000000000000423A35C7313131313131313100000000000000000000000031313131314141323232323232323232323232", hex); | |||
Assert.Equal("D4C1413132333435000000000000000000000000000112010000003D31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232", hex); | |||
//"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32" | |||
//"D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 61 61 32 32 32 32 32 32 32 32 32 32 32 32" | |||
} | |||
@@ -51,7 +51,7 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var bytes = "D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 01 12 01 00 00 00 3D 00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32".ToHexBytes(); | |||
var bytes = "D4C1413132333435000000000000000000000000000112010000003D31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232".ToHexBytes(); | |||
JT809_0x1200 jT809_0X9001 = JT809Serializer.Deserialize<JT809_0x1200>(bytes); | |||
Assert.Equal("粤A12345", jT809_0X9001.VehicleNo); | |||
Assert.Equal(JT809VehicleColorType.蓝色, jT809_0X9001.VehicleColor); | |||
@@ -84,13 +84,13 @@ namespace JT809.Protocol.Test.JT809MessageBody | |||
}; | |||
jT809_0X1200.SubBodies = jT809_0X1200_0X1201; | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0X1200).ToHexString(); | |||
Assert.Equal("D4C1413132333435000000000000000000000000000112010000006E00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232", hex); | |||
Assert.Equal("D4C1413132333435000000000000000000000000000112010000006E3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
var bytes = "D4C1413132333435000000000000000000000000000112010000006E00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232".ToHexBytes(); | |||
var bytes = "D4C1413132333435000000000000000000000000000112010000006E3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200".ToHexBytes(); | |||
JT809_0x1200 jT809_0X9001 = JT809_2019_Serializer.Deserialize<JT809_0x1200>(bytes); | |||
Assert.Equal("粤A12345", jT809_0X9001.VehicleNo); | |||
Assert.Equal(JT809VehicleColorType.蓝色, jT809_0X9001.VehicleColor); | |||
@@ -31,13 +31,13 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
}; | |||
var hex = JT809Serializer.Serialize(jT809_0X1200_0X1201).ToHexString(); | |||
//"00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32" | |||
Assert.Equal("00000000000000423A35C700000000000000423A35C7313131313131313100000000000000000000000031313131314141323232323232323232323232",hex); | |||
Assert.Equal("31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232", hex); | |||
} | |||
[Fact] | |||
public void Test2() | |||
{ | |||
var bytes = "00 00 00 00 00 00 00 42 3A 35 C7 00 00 00 00 00 00 00 42 3A 35 C7 31 31 31 31 31 31 31 31 00 00 00 00 00 00 00 00 00 00 00 00 31 31 31 31 31 41 41 32 32 32 32 32 32 32 32 32 32 32 32".ToHexBytes(); | |||
var bytes = "31313131313131313131003131313131313131313100313131313131313100000000000000000000000031313131314141323232323232323232323232".ToHexBytes(); | |||
JT809_0x1200_0x1201 jT809_0X1200_0X1201 = JT809Serializer.Deserialize<JT809_0x1200_0x1201>(bytes); | |||
Assert.Equal("1111111111", jT809_0X1200_0X1201.PlateformId); | |||
Assert.Equal("1111111111", jT809_0X1200_0X1201.ProducerId); | |||
@@ -59,13 +59,13 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
IMIEId="123456789" | |||
}; | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X1201).ToHexString(); | |||
Assert.Equal("00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232", hex); | |||
Assert.Equal("3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
var bytes = "00000000000000423A35C700000000000000423A35C731313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000000323232323232323232323232".ToHexBytes(); | |||
var bytes = "3131313131313131313100313131313131313131310031313131313131310000000000000000000000000000000000000000000031323334353637383900000000000031313131314141000000000000000000000000000000000000000000000032323232323232323232323200".ToHexBytes(); | |||
JT809_0x1200_0x1201 jT809_0X1200_0X1201 = JT809_2019_Serializer.Deserialize<JT809_0x1200_0x1201>(bytes); | |||
Assert.Equal("1111111111", jT809_0X1200_0X1201.PlateformId); | |||
Assert.Equal("1111111111", jT809_0X1200_0X1201.ProducerId); | |||
@@ -22,6 +22,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
public void Test1() | |||
{ | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202 = new JT809_0x1200_0x1202(); | |||
jT809_0X1200_0X1202.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); | |||
jT809_0X1200_0X1202.VehiclePosition.Day = 19; | |||
jT809_0X1200_0X1202.VehiclePosition.Month = 7; | |||
jT809_0X1200_0X1202.VehiclePosition.Year = 2012; | |||
@@ -66,13 +67,33 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
[Fact] | |||
public void Test_2019_1() | |||
{ | |||
// todo:JT809VehiclePositionProperties_2019 | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202 = new JT809_0x1200_0x1202(); | |||
jT809_0X1200_0X1202.GNSSData = new Metadata.JT809VehiclePositionProperties_2019(); | |||
jT809_0X1200_0X1202.GNSSData.Encrypt = JT809_VehiclePositionEncrypt.已加密; | |||
//jT809_0X1200_0X1202.GNSSData.GnssData = new byte[20]; | |||
jT809_0X1200_0X1202.GNSSData.PlatformId1 = "11111111111"; | |||
jT809_0X1200_0X1202.GNSSData.Alarm1 = 1; | |||
jT809_0X1200_0X1202.GNSSData.PlatformId2 = "22222222222"; | |||
jT809_0X1200_0X1202.GNSSData.Alarm2 = 2; | |||
jT809_0X1200_0X1202.GNSSData.PlatformId3 = "33333333333"; | |||
jT809_0X1200_0X1202.GNSSData.Alarm3 = 3; | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X1202).ToHexString(); | |||
Assert.Equal("0100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
// todo:JT809VehiclePositionProperties_2019 | |||
var bytes = "0100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003".ToHexBytes(); | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202 = JT809_2019_Serializer.Deserialize<JT809_0x1200_0x1202>(bytes); | |||
Assert.Equal( JT809_VehiclePositionEncrypt.已加密, jT809_0X1200_0X1202.GNSSData.Encrypt); | |||
Assert.Equal("11111111111", jT809_0X1200_0X1202.GNSSData.PlatformId1); | |||
Assert.Equal(1u, jT809_0X1200_0X1202.GNSSData.Alarm1); | |||
Assert.Equal("22222222222", jT809_0X1200_0X1202.GNSSData.PlatformId2); | |||
Assert.Equal(2u, jT809_0X1200_0X1202.GNSSData.Alarm2); | |||
Assert.Equal("33333333333", jT809_0X1200_0X1202.GNSSData.PlatformId3); | |||
Assert.Equal(3u, jT809_0X1200_0X1202.GNSSData.Alarm3); | |||
} | |||
} | |||
@@ -7,12 +7,15 @@ using JT809.Protocol.Extensions; | |||
using JT809.Protocol.MessageBody; | |||
using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.SubMessageBody; | |||
using JT809.Protocol.Enums; | |||
using JT809.Protocol.Internal; | |||
namespace JT809.Protocol.Test.JT809SubMessageBody | |||
{ | |||
public class JT809_0x1200_0x1203Test | |||
{ | |||
private JT809Serializer JT809Serializer = new JT809Serializer(); | |||
private JT809Serializer JT809_2019_Serializer = new JT809Serializer(new DefaultGlobalConfig() { Version = JT809Version.JTT2019 }); | |||
[Fact] | |||
public void Test1() | |||
{ | |||
@@ -20,6 +23,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
jT809_0X1200_0X1203.GNSS = new List<JT809_0x1200_0x1202>(); | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202_1 = new JT809_0x1200_0x1202(); | |||
jT809_0X1200_0X1202_1.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); | |||
jT809_0X1200_0X1202_1.VehiclePosition.Day = 19; | |||
jT809_0X1200_0X1202_1.VehiclePosition.Month = 7; | |||
jT809_0X1200_0X1202_1.VehiclePosition.Year = 2012; | |||
@@ -37,6 +41,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
jT809_0X1200_0X1202_1.VehiclePosition.Alarm = 257; | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202_2 = new JT809_0x1200_0x1202(); | |||
jT809_0X1200_0X1202_2.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); | |||
jT809_0X1200_0X1202_2.VehiclePosition.Day = 19; | |||
jT809_0X1200_0X1202_2.VehiclePosition.Month = 7; | |||
jT809_0X1200_0X1202_2.VehiclePosition.Year = 2012; | |||
@@ -54,6 +59,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
jT809_0X1200_0X1202_2.VehiclePosition.Alarm = 257; | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202_3 = new JT809_0x1200_0x1202(); | |||
jT809_0X1200_0X1202_3.VehiclePosition = new Metadata.JT809VehiclePositionProperties(); | |||
jT809_0X1200_0X1202_3.VehiclePosition.Day = 19; | |||
jT809_0X1200_0X1202_3.VehiclePosition.Month = 7; | |||
jT809_0X1200_0X1202_3.VehiclePosition.Year = 2012; | |||
@@ -134,5 +140,58 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
Assert.Equal((uint)3, jT809_0X1200_0X1203.GNSS[2].VehiclePosition.State); | |||
Assert.Equal((uint)257, jT809_0X1200_0X1203.GNSS[2].VehiclePosition.Alarm); | |||
} | |||
[Fact] | |||
public void Test_2019_1() | |||
{ | |||
JT809_0x1200_0x1203 jT809_0X1200_0X1203 = new JT809_0x1200_0x1203(); | |||
jT809_0X1200_0X1203.GNSS = new List<JT809_0x1200_0x1202>(); | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202 = new JT809_0x1200_0x1202(); | |||
jT809_0X1200_0X1202.GNSSData = new Metadata.JT809VehiclePositionProperties_2019(); | |||
jT809_0X1200_0X1202.GNSSData.Encrypt = JT809_VehiclePositionEncrypt.已加密; | |||
//jT809_0X1200_0X1202.GNSSData.GnssData = new byte[20]; | |||
jT809_0X1200_0X1202.GNSSData.PlatformId1 = "11111111111"; | |||
jT809_0X1200_0X1202.GNSSData.Alarm1 = 1; | |||
jT809_0X1200_0X1202.GNSSData.PlatformId2 = "22222222222"; | |||
jT809_0X1200_0X1202.GNSSData.Alarm2 = 2; | |||
jT809_0X1200_0X1202.GNSSData.PlatformId3 = "33333333333"; | |||
jT809_0X1200_0X1202.GNSSData.Alarm3 = 3; | |||
jT809_0X1200_0X1203.GNSS.Add(jT809_0X1200_0X1202); | |||
JT809_0x1200_0x1202 jT809_0X1200_0X1202_1 = new JT809_0x1200_0x1202(); | |||
jT809_0X1200_0X1202_1.GNSSData = new Metadata.JT809VehiclePositionProperties_2019(); | |||
jT809_0X1200_0X1202_1.GNSSData.Encrypt = JT809_VehiclePositionEncrypt.已加密; | |||
jT809_0X1200_0X1202_1.GNSSData.PlatformId1 = "11111111111"; | |||
jT809_0X1200_0X1202_1.GNSSData.Alarm1 = 1; | |||
jT809_0X1200_0X1202_1.GNSSData.PlatformId2 = "22222222222"; | |||
jT809_0X1200_0X1202_1.GNSSData.Alarm2 = 2; | |||
jT809_0X1200_0X1202_1.GNSSData.PlatformId3 = "33333333333"; | |||
jT809_0X1200_0X1202_1.GNSSData.Alarm3 = 3; | |||
jT809_0X1200_0X1203.GNSS.Add(jT809_0X1200_0X1202_1); | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0X1200_0X1203).ToHexString(); | |||
Assert.Equal("0201000000003131313131313131313131000000013232323232323232323232000000023333333333333333333333000000030100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
var bytes = "0201000000003131313131313131313131000000013232323232323232323232000000023333333333333333333333000000030100000000313131313131313131313100000001323232323232323232323200000002333333333333333333333300000003".ToHexBytes(); | |||
JT809_0x1200_0x1203 jT809_0X1200_0X1203 = JT809_2019_Serializer.Deserialize<JT809_0x1200_0x1203>(bytes); | |||
Assert.Equal(JT809_VehiclePositionEncrypt.已加密, jT809_0X1200_0X1203.GNSS[0].GNSSData.Encrypt); | |||
Assert.Equal("11111111111", jT809_0X1200_0X1203.GNSS[0].GNSSData.PlatformId1); | |||
Assert.Equal(1u, jT809_0X1200_0X1203.GNSS[0].GNSSData.Alarm1); | |||
Assert.Equal("22222222222", jT809_0X1200_0X1203.GNSS[0].GNSSData.PlatformId2); | |||
Assert.Equal(2u, jT809_0X1200_0X1203.GNSS[0].GNSSData.Alarm2); | |||
Assert.Equal("33333333333", jT809_0X1200_0X1203.GNSS[0].GNSSData.PlatformId3); | |||
Assert.Equal(3u, jT809_0X1200_0X1203.GNSS[0].GNSSData.Alarm3); | |||
Assert.Equal(JT809_VehiclePositionEncrypt.已加密, jT809_0X1200_0X1203.GNSS[1].GNSSData.Encrypt); | |||
Assert.Equal("11111111111", jT809_0X1200_0X1203.GNSS[1].GNSSData.PlatformId1); | |||
Assert.Equal(1u, jT809_0X1200_0X1203.GNSS[1].GNSSData.Alarm1); | |||
Assert.Equal("22222222222", jT809_0X1200_0X1203.GNSS[1].GNSSData.PlatformId2); | |||
Assert.Equal(2u, jT809_0X1200_0X1203.GNSS[1].GNSSData.Alarm2); | |||
Assert.Equal("33333333333", jT809_0X1200_0X1203.GNSS[1].GNSSData.PlatformId3); | |||
Assert.Equal(3u, jT809_0X1200_0X1203.GNSS[1].GNSSData.Alarm3); | |||
} | |||
} | |||
} |
@@ -50,26 +50,26 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
{ | |||
JT809_0x1400_0x1402 jT809_0x1400_0x1402 = new JT809_0x1400_0x1402 | |||
{ | |||
SourcePlatformId = "30313233343536373839", | |||
SourcePlatformId = "12345678900", | |||
WarnType = JT809WarnType.偏离路线报警, | |||
WarnTime = DateTime.Parse("2020-04-23"), | |||
StartTime= DateTime.Parse("2020-04-23"), | |||
EndTime= DateTime.Parse("2020-04-24"), | |||
VehicleNo="粤A11111", | |||
VehicleColor= JT809VehicleColorType.蓝色, | |||
DestinationPlatformId = "30313233343536373839", | |||
DestinationPlatformId = "12345678900", | |||
InfoContent = "gfdf454553", | |||
}; | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0x1400_0x1402).ToHexString(); | |||
Assert.Equal("0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000000000000A67666466343534353533", hex); | |||
Assert.Equal("3132333435363738393030000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000013132333435363738393030000000000000000A67666466343534353533", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
var bytes = "0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000000000000A67666466343534353533".ToHexBytes(); | |||
var bytes = "3132333435363738393030000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000013132333435363738393030000000000000000A67666466343534353533".ToHexBytes(); | |||
JT809_0x1400_0x1402 jT809_0x1400_0x1402 = JT809_2019_Serializer.Deserialize<JT809_0x1400_0x1402>(bytes); | |||
Assert.Equal("30313233343536373839", jT809_0x1400_0x1402.SourcePlatformId); | |||
Assert.Equal("12345678900", jT809_0x1400_0x1402.SourcePlatformId); | |||
Assert.Equal("gfdf454553", jT809_0x1400_0x1402.InfoContent); | |||
Assert.Equal(JT809WarnType.偏离路线报警, jT809_0x1400_0x1402.WarnType); | |||
Assert.Equal((uint)10, jT809_0x1400_0x1402.InfoLength); | |||
@@ -78,7 +78,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
Assert.Equal(DateTime.Parse("2020-04-24"), jT809_0x1400_0x1402.EndTime); | |||
Assert.Equal("粤A11111", jT809_0x1400_0x1402.VehicleNo); | |||
Assert.Equal(JT809VehicleColorType.蓝色, jT809_0x1400_0x1402.VehicleColor); | |||
Assert.Equal("30313233343536373839", jT809_0x1400_0x1402.DestinationPlatformId); | |||
Assert.Equal("12345678900", jT809_0x1400_0x1402.DestinationPlatformId); | |||
} | |||
} | |||
} |
@@ -43,27 +43,27 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
{ | |||
JT809_0x1400_0x1403 jT809_0x1400_0x1403 = new JT809_0x1400_0x1403 | |||
{ | |||
SourcePlatformId = "30313233343536373839", | |||
SourcePlatformId = "12345678900", | |||
WarnType = JT809WarnType.偏离路线报警, | |||
WarnTime = DateTime.Parse("2020-04-23"), | |||
StartTime = DateTime.Parse("2020-04-23"), | |||
EndTime = DateTime.Parse("2020-04-24"), | |||
VehicleNo = "粤A11111", | |||
VehicleColor = JT809VehicleColorType.蓝色, | |||
DestinationPlatformId = "30313233343536373839", | |||
DestinationPlatformId = "12345678900", | |||
InfoContent = "gfdf454553", | |||
DRVLineId=55 | |||
}; | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0x1400_0x1403).ToHexString(); | |||
Assert.Equal("0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000370000000A67666466343534353533", hex); | |||
Assert.Equal("00000000000002DFDC1C34000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C1413131313131000000000000000000000000000100000000000002DFDC1C34000000370000000A67666466343534353533", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
var bytes = "0000000000000000000000000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C141313131313100000000000000000000000000010000000000000000000000000000370000000A67666466343534353533".ToHexBytes(); | |||
var bytes = "00000000000002DFDC1C34000B000000005EA06A00000000005EA06A00000000005EA1BB80D4C1413131313131000000000000000000000000000100000000000002DFDC1C34000000370000000A67666466343534353533".ToHexBytes(); | |||
JT809_0x1400_0x1403 jT809_0x1400_0x1403 = JT809_2019_Serializer.Deserialize<JT809_0x1400_0x1403>(bytes); | |||
Assert.Equal("30313233343536373839", jT809_0x1400_0x1403.SourcePlatformId); | |||
Assert.Equal("12345678900", jT809_0x1400_0x1403.SourcePlatformId); | |||
Assert.Equal("gfdf454553", jT809_0x1400_0x1403.InfoContent); | |||
Assert.Equal(JT809WarnType.偏离路线报警, jT809_0x1400_0x1403.WarnType); | |||
Assert.Equal((uint)10, jT809_0x1400_0x1403.InfoLength); | |||
@@ -72,7 +72,7 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
Assert.Equal(DateTime.Parse("2020-04-24"), jT809_0x1400_0x1403.EndTime); | |||
Assert.Equal("粤A11111", jT809_0x1400_0x1403.VehicleNo); | |||
Assert.Equal(JT809VehicleColorType.蓝色, jT809_0x1400_0x1403.VehicleColor); | |||
Assert.Equal("30313233343536373839", jT809_0x1400_0x1403.DestinationPlatformId); | |||
Assert.Equal("12345678900", jT809_0x1400_0x1403.DestinationPlatformId); | |||
Assert.Equal(55u, jT809_0x1400_0x1403.DRVLineId); | |||
} | |||
} | |||
@@ -47,25 +47,25 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
{ | |||
JT809_0x9400_0x9402 jT809_0x9400_0x9402 = new JT809_0x9400_0x9402 | |||
{ | |||
SourcePlatformId = "30313233343536373839", | |||
SourcePlatformId = "12345678901", | |||
WarnType = JT809WarnType.劫警, | |||
WarnTime = DateTime.Parse("2020-04-26 18:23:00"), | |||
StartTime = DateTime.Parse("2020-04-26 18:23:00"), | |||
EndTime = DateTime.Parse("2020-04-26 19:23:00"), | |||
VehicleNo= "粤A12345", | |||
VehicleColor= JT809VehicleColorType.蓝色, | |||
DestinationPlatformId = "30313233343536373839", | |||
DestinationPlatformId = "12345678901", | |||
DRVLineId=22, | |||
WarnContent = "劫警", | |||
}; | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0x9400_0x9402).ToHexString(); | |||
Assert.Equal("0000000000000000000000000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000000000000000000001600000004BDD9BEAF", hex); | |||
Assert.Equal("00000000000002DFDC1C35000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000002DFDC1C350000001600000004BDD9BEAF", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
var bytes = "0000000000000000000000000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000000000000000000001600000004BDD9BEAF".ToHexBytes(); | |||
var bytes = "00000000000002DFDC1C35000A000000005EA56104000000005EA56104000000005EA56F14D4C1413132333435000000000000000000000000000100000000000002DFDC1C350000001600000004BDD9BEAF".ToHexBytes(); | |||
JT809_0x9400_0x9402 jT809_0x9400_0x9402 = JT809_2019_Serializer.Deserialize<JT809_0x9400_0x9402>(bytes); | |||
Assert.Equal(JT809WarnType.劫警, jT809_0x9400_0x9402.WarnType); | |||
Assert.Equal(DateTime.Parse("2020-04-26 18:23:00"), jT809_0x9400_0x9402.WarnTime); | |||
@@ -74,8 +74,8 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
Assert.Equal(DateTime.Parse("2020-04-26 19:23:00"), jT809_0x9400_0x9402.EndTime); | |||
Assert.Equal("粤A12345", jT809_0x9400_0x9402.VehicleNo); | |||
Assert.Equal(JT809VehicleColorType.蓝色, jT809_0x9400_0x9402.VehicleColor); | |||
Assert.Equal("30313233343536373839", jT809_0x9400_0x9402.DestinationPlatformId); | |||
Assert.Equal("30313233343536373839", jT809_0x9400_0x9402.SourcePlatformId); | |||
Assert.Equal("12345678901", jT809_0x9400_0x9402.DestinationPlatformId); | |||
Assert.Equal("12345678901", jT809_0x9400_0x9402.SourcePlatformId); | |||
Assert.Equal(22u, jT809_0x9400_0x9402.DRVLineId); | |||
Assert.Equal(4u, jT809_0x9400_0x9402.WarnLength); | |||
} | |||
@@ -47,24 +47,24 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
{ | |||
JT809_0x9400_0x9403 jT809_0x9400_0x9403 = new JT809_0x9400_0x9403 | |||
{ | |||
SourcePlatformId = "30313233343536373839", | |||
SourcePlatformId = "12345678901", | |||
WarnType = JT809WarnType.疲劳驾驶报警, | |||
WarnTime = DateTime.Parse("2020-04-26 18:24:00"), | |||
StartTime = DateTime.Parse("2020-04-26 18:24:00"), | |||
EndTime = DateTime.Parse("2020-04-26 19:24:00"), | |||
VehicleNo = "粤A5647", | |||
VehicleColor = JT809VehicleColorType.黄色, | |||
DestinationPlatformId = "30313233343536373839", | |||
DestinationPlatformId = "12345678901", | |||
WarnContent = "疲劳驾驶报警", | |||
}; | |||
var hex = JT809_2019_Serializer.Serialize(jT809_0x9400_0x9403).ToHexString(); | |||
Assert.Equal("00000000000000000000000002000000005EA56140000000005EA56140000000005EA56F50D4C141353634370000000000000000000000000000020000000000000000000000000000000000000CC6A3C0CDBCDDCABBB1A8BEAF", hex); | |||
Assert.Equal("00000000000002DFDC1C350002000000005EA56140000000005EA56140000000005EA56F50D4C1413536343700000000000000000000000000000200000000000002DFDC1C35000000000000000CC6A3C0CDBCDDCABBB1A8BEAF", hex); | |||
} | |||
[Fact] | |||
public void Test_2019_2() | |||
{ | |||
var bytes = "00000000000000000000000002000000005EA56140000000005EA56140000000005EA56F50D4C141353634370000000000000000000000000000020000000000000000000000000000000000000CC6A3C0CDBCDDCABBB1A8BEAF".ToHexBytes(); | |||
var bytes = "00000000000002DFDC1C350002000000005EA56140000000005EA56140000000005EA56F50D4C1413536343700000000000000000000000000000200000000000002DFDC1C35000000000000000CC6A3C0CDBCDDCABBB1A8BEAF".ToHexBytes(); | |||
JT809_0x9400_0x9403 jT809_0x9400_0x9403 = JT809_2019_Serializer.Deserialize<JT809_0x9400_0x9403>(bytes); | |||
Assert.Equal(JT809WarnType.疲劳驾驶报警, jT809_0x9400_0x9403.WarnType); | |||
Assert.Equal(DateTime.Parse("2020-04-26 18:24:00"), jT809_0x9400_0x9403.WarnTime); | |||
@@ -72,8 +72,8 @@ namespace JT809.Protocol.Test.JT809SubMessageBody | |||
Assert.Equal(DateTime.Parse("2020-04-26 19:24:00"), jT809_0x9400_0x9403.EndTime); | |||
Assert.Equal("疲劳驾驶报警", jT809_0x9400_0x9403.WarnContent); | |||
Assert.Equal((uint)12, jT809_0x9400_0x9403.WarnLength); | |||
Assert.Equal("30313233343536373839", jT809_0x9400_0x9403.DestinationPlatformId); | |||
Assert.Equal("30313233343536373839", jT809_0x9400_0x9403.SourcePlatformId); | |||
Assert.Equal("12345678901", jT809_0x9400_0x9403.DestinationPlatformId); | |||
Assert.Equal("12345678901", jT809_0x9400_0x9403.SourcePlatformId); | |||
} | |||
} | |||
} |
@@ -4,6 +4,7 @@ using JT809.Protocol.Exceptions; | |||
using JT809.Protocol.Extensions; | |||
using JT809.Protocol.Formatters; | |||
using JT809.Protocol.MessagePack; | |||
using System; | |||
namespace JT809.Protocol.MessageBody | |||
{ | |||
@@ -70,7 +71,7 @@ namespace JT809.Protocol.MessageBody | |||
} | |||
writer.WriteInt32Return(writer.GetCurrentPosition() - subContentLengthPosition - 4, subContentLengthPosition); | |||
} | |||
catch | |||
catch(Exception ex) | |||
{ | |||
throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}"); | |||
} | |||
@@ -49,21 +49,21 @@ namespace JT809.Protocol.SubMessageBody | |||
JT809_0x1200_0x1201 value = new JT809_0x1200_0x1201(); | |||
if(config.Version== JT809Version.JTT2011) | |||
{ | |||
value.PlateformId = reader.ReadBigNumber(11); | |||
value.ProducerId = reader.ReadBigNumber(11); | |||
value.PlateformId = reader.ReadString(11); | |||
value.ProducerId = reader.ReadString(11); | |||
#warning 此处应该改成大端模式读取数据吧 | |||
value.TerminalModelType = reader.ReadBigNumber(20); | |||
value.TerminalId = reader.ReadBigNumber(7); | |||
value.TerminalModelType = reader.ReadString(20); | |||
value.TerminalId = reader.ReadString(7); | |||
value.TerminalId = value.TerminalId.ToUpper(); | |||
value.TerminalSimCode = reader.ReadString(12); | |||
} | |||
else | |||
{ | |||
value.PlateformId = reader.ReadBigNumber(11); | |||
value.ProducerId = reader.ReadBigNumber(11); | |||
value.TerminalModelType = reader.ReadBigNumber(30); | |||
value.PlateformId = reader.ReadString(11); | |||
value.ProducerId = reader.ReadString(11); | |||
value.TerminalModelType = reader.ReadString(30); | |||
value.IMIEId = reader.ReadString(15); | |||
value.TerminalId = reader.ReadBigNumber(30); | |||
value.TerminalId = reader.ReadString(30); | |||
value.TerminalId = value.TerminalId.ToUpper(); | |||
value.TerminalSimCode = reader.ReadString(13); | |||
} | |||
@@ -74,21 +74,21 @@ namespace JT809.Protocol.SubMessageBody | |||
{ | |||
if(config.Version== JT809Version.JTT2011) | |||
{ | |||
writer.WriteBigNumber(value.PlateformId, 11); | |||
writer.WriteBigNumber(value.ProducerId, 11); | |||
writer.WriteStringPadRight(value.PlateformId, 11); | |||
writer.WriteStringPadRight(value.ProducerId, 11); | |||
#warning 此处应该改成大端模式读取数据吧 | |||
writer.WriteBigNumber(value.TerminalModelType, 20); | |||
writer.WriteBigNumber(value.TerminalId.ToUpper(), 7); | |||
writer.WriteStringPadRight(value.TerminalModelType, 20); | |||
writer.WriteStringPadRight(value.TerminalId.ToUpper(), 7); | |||
writer.WriteStringPadLeft(value.TerminalSimCode, 12); | |||
} | |||
else | |||
{ | |||
writer.WriteBigNumber(value.PlateformId, 11); | |||
writer.WriteBigNumber(value.ProducerId, 11); | |||
writer.WriteBigNumber(value.TerminalModelType, 30); | |||
writer.WriteStringPadRight(value.PlateformId, 11); | |||
writer.WriteStringPadRight(value.ProducerId, 11); | |||
writer.WriteStringPadRight(value.TerminalModelType, 30); | |||
writer.WriteStringPadRight(value.IMIEId, 15); | |||
writer.WriteBigNumber(value.TerminalId.ToUpper(), 30); | |||
writer.WriteStringPadLeft(value.TerminalSimCode, 13); | |||
writer.WriteStringPadRight(value.TerminalId.ToUpper(), 30); | |||
writer.WriteStringPadRight(value.TerminalSimCode, 13); | |||
} | |||
} | |||
} | |||
@@ -54,11 +54,11 @@ namespace JT809.Protocol.SubMessageBody | |||
value.GNSSData.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte(); | |||
value.GNSSData.DataLength = reader.ReadUInt32(); | |||
value.GNSSData.GnssData = reader.ReadArray((int)value.GNSSData.DataLength).ToArray(); | |||
value.GNSSData.PlatformId1 = reader.ReadBigNumber(11); | |||
value.GNSSData.PlatformId1 = reader.ReadString(11); | |||
value.GNSSData.Alarm1 = reader.ReadUInt32(); | |||
value.GNSSData.PlatformId2 = reader.ReadBigNumber(11); | |||
value.GNSSData.PlatformId2 = reader.ReadString(11); | |||
value.GNSSData.Alarm2 = reader.ReadUInt32(); | |||
value.GNSSData.PlatformId3 = reader.ReadBigNumber(11); | |||
value.GNSSData.PlatformId3 = reader.ReadString(11); | |||
value.GNSSData.Alarm3 = reader.ReadUInt32(); | |||
} | |||
return value; | |||
@@ -90,13 +90,13 @@ namespace JT809.Protocol.SubMessageBody | |||
writer.WriteByte((byte)value.GNSSData.Encrypt); | |||
writer.Skip(4, out int position); | |||
writer.WriteArray(value.GNSSData.GnssData); | |||
writer.WriteBigNumber(value.GNSSData.PlatformId1,11); | |||
writer.WriteUInt32Return((uint)(writer.GetCurrentPosition() - position - 4), position); | |||
writer.WriteStringPadRight(value.GNSSData.PlatformId1,11); | |||
writer.WriteUInt32(value.GNSSData.Alarm1); | |||
writer.WriteBigNumber(value.GNSSData.PlatformId2,11); | |||
writer.WriteStringPadRight(value.GNSSData.PlatformId2,11); | |||
writer.WriteUInt32(value.GNSSData.Alarm2); | |||
writer.WriteBigNumber(value.GNSSData.PlatformId3,11); | |||
writer.WriteStringPadRight(value.GNSSData.PlatformId3,11); | |||
writer.WriteUInt32(value.GNSSData.Alarm3); | |||
writer.WriteUInt32Return((uint)(writer.GetCurrentPosition() - position - 4), position); | |||
} | |||
} | |||
} | |||
@@ -80,7 +80,7 @@ namespace JT809.Protocol.SubMessageBody | |||
} | |||
else | |||
{ | |||
value.SourcePlatformId = reader.ReadBigNumber(11); | |||
value.SourcePlatformId = reader.ReadString(11); | |||
} | |||
value.WarnType = (JT809WarnType)reader.ReadUInt16(); | |||
value.WarnTime = reader.ReadUTCDateTime(); | |||
@@ -95,7 +95,7 @@ namespace JT809.Protocol.SubMessageBody | |||
#warning 此处车牌号文档长度有误,使用旧版长度21 | |||
value.VehicleNo = reader.ReadString(21); | |||
value.VehicleColor = (JT809VehicleColorType)reader.ReadByte(); | |||
value.DestinationPlatformId = reader.ReadBigNumber(11); | |||
value.DestinationPlatformId = reader.ReadString(11); | |||
value.DRVLineId = reader.ReadUInt32(); | |||
} | |||
value.InfoLength = reader.ReadUInt32(); | |||
@@ -111,7 +111,7 @@ namespace JT809.Protocol.SubMessageBody | |||
} | |||
else | |||
{ | |||
writer.WriteBigNumber(value.SourcePlatformId,11); | |||
writer.WriteStringPadRight(value.SourcePlatformId,11); | |||
} | |||
writer.WriteUInt16((ushort)value.WarnType); | |||
writer.WriteUTCDateTime(value.WarnTime); | |||
@@ -125,7 +125,7 @@ namespace JT809.Protocol.SubMessageBody | |||
writer.WriteUTCDateTime(value.EndTime); | |||
writer.WriteStringPadRight(value.VehicleNo,21); | |||
writer.WriteByte((byte)value.VehicleColor); | |||
writer.WriteBigNumber(value.DestinationPlatformId,11); | |||
writer.WriteStringPadRight(value.DestinationPlatformId,11); | |||
writer.WriteUInt32(value.DRVLineId); | |||
} | |||
// 先计算内容长度(汉字为两个字节) | |||