@@ -36,13 +36,13 @@ namespace JT808.Protocol.Test.MessageBody | |||||
}; | }; | ||||
jT808Package.Bodies = jT808_0X0107; | jT808Package.Bodies = jT808_0X0107; | ||||
string hex = JT808Serializer.Serialize(jT808Package).ToHexString(); | string hex = JT808Serializer.Serialize(jT808Package).ToHexString(); | ||||
Assert.Equal("7E0107004111223344556622B8000531303630313130343535353435393535313033000000000000346436613133301234567890123456789007616263646566670A706F69757974726577710709DA7E".Replace(" ", ""), hex); | |||||
Assert.Equal("7E0107004111223344556622B8000531303630313130343535353435393535313033000000000000346436613133001234567890123456789007616263646566670A706F69757974726577710709EA7E".Replace(" ", ""), hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Test2() | public void Test2() | ||||
{ | { | ||||
byte[] bytes = "7E0107004111223344556622B8000531303630313130343535353435393535313033000000000000346436613133301234567890123456789007616263646566670A706F69757974726577710709DA7E".ToHexBytes(); | |||||
byte[] bytes = "7E0107004111223344556622B8000531303630313130343535353435393535313033000000000000346436613133001234567890123456789007616263646566670A706F69757974726577710709EA7E".ToHexBytes(); | |||||
JT808Package jT808Package = JT808Serializer.Deserialize(bytes); | JT808Package jT808Package = JT808Serializer.Deserialize(bytes); | ||||
JT808_0x0107 jT808_0X0107 = (JT808_0x0107)jT808Package.Bodies; | JT808_0x0107 jT808_0X0107 = (JT808_0x0107)jT808Package.Bodies; | ||||
Assert.Equal(8888, jT808Package.Header.MsgNum); | Assert.Equal(8888, jT808Package.Header.MsgNum); | ||||
@@ -51,7 +51,7 @@ namespace JT808.Protocol.Test.MessageBody | |||||
Assert.Equal(5, jT808_0X0107.TerminalType); | Assert.Equal(5, jT808_0X0107.TerminalType); | ||||
Assert.Equal("10601", jT808_0X0107.MakerId); | Assert.Equal("10601", jT808_0X0107.MakerId); | ||||
Assert.Equal("10455545955103", jT808_0X0107.TerminalModel); | Assert.Equal("10455545955103", jT808_0X0107.TerminalModel); | ||||
Assert.Equal("4d6a130", jT808_0X0107.TerminalId); | |||||
Assert.Equal("4d6a13", jT808_0X0107.TerminalId); | |||||
Assert.Equal("12345678901234567890", jT808_0X0107.Terminal_SIM_ICCID); | Assert.Equal("12345678901234567890", jT808_0X0107.Terminal_SIM_ICCID); | ||||
Assert.Equal("abcdefg", jT808_0X0107.Terminal_Hardware_Version_Num); | Assert.Equal("abcdefg", jT808_0X0107.Terminal_Hardware_Version_Num); | ||||
Assert.Equal("poiuytrewq", jT808_0X0107.Terminal_Firmware_Version_Num); | Assert.Equal("poiuytrewq", jT808_0X0107.Terminal_Firmware_Version_Num); | ||||
@@ -66,21 +66,21 @@ namespace JT808.Protocol.Test.MessageBody | |||||
LicenseIssuing = "qwertx", | LicenseIssuing = "qwertx", | ||||
CertificateExpiresDate = DateTime.Parse("2018-08-16") | CertificateExpiresDate = DateTime.Parse("2018-08-16") | ||||
}; | }; | ||||
var hex = JT808Serializer.Serialize(jT808_0X0702).ToHexString(); | var hex = JT808Serializer.Serialize(jT808_0X0702).ToHexString(); | ||||
Assert.Equal("01 18 08 16 09 16 16 00 05 6B 6F 69 6B 65 71 77 65 31 32 33 34 35 36 61 61 61 30 30 30 30 30 30 30 30 06 71 77 65 72 74 78 20 18 08 16".Replace(" ", ""), hex); | |||||
//"01 18 08 16 09 16 16 00 05 6B 6F 69 6B 65 71 77 65 31 32 33 34 35 36 61 61 61 30 30 30 30 30 30 30 30 06 71 77 65 72 74 78 20 18 08 16" | |||||
Assert.Equal("0118081609161600056B6F696B6571776531323334353661616100000000000000000671776572747820180816".Replace(" ", ""), hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Test3_1() | public void Test3_1() | ||||
{ | { | ||||
byte[] bytes = "01 18 08 16 09 16 16 00 05 6B 6F 69 6B 65 71 77 65 31 32 33 34 35 36 61 61 61 30 30 30 30 30 30 30 30 06 71 77 65 72 74 78 20 18 08 16".ToHexBytes(); | |||||
byte[] bytes = "0118081609161600056B6F696B6571776531323334353661616100000000000000000671776572747820180816".ToHexBytes(); | |||||
JT808_0x0702 jT808_0X0702 = JT808Serializer.Deserialize<JT808_0x0702>(bytes); | JT808_0x0702 jT808_0X0702 = JT808Serializer.Deserialize<JT808_0x0702>(bytes); | ||||
Assert.Equal(JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班, jT808_0X0702.IC_Card_Status); | Assert.Equal(JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班, jT808_0X0702.IC_Card_Status); | ||||
Assert.Equal(DateTime.Parse("2018-08-16 09:16:16"), jT808_0X0702.IC_Card_PlugDateTime); | Assert.Equal(DateTime.Parse("2018-08-16 09:16:16"), jT808_0X0702.IC_Card_PlugDateTime); | ||||
Assert.Equal(JT808ICCardReadResult.IC卡读卡成功, jT808_0X0702.IC_Card_ReadResult); | Assert.Equal(JT808ICCardReadResult.IC卡读卡成功, jT808_0X0702.IC_Card_ReadResult); | ||||
Assert.Equal("koike", jT808_0X0702.DriverUserName); | Assert.Equal("koike", jT808_0X0702.DriverUserName); | ||||
Assert.Equal("qwe123456aaa00000000", jT808_0X0702.QualificationCode); | |||||
Assert.Equal("qwe123456aaa", jT808_0X0702.QualificationCode); | |||||
Assert.Equal("qwertx", jT808_0X0702.LicenseIssuing); | Assert.Equal("qwertx", jT808_0X0702.LicenseIssuing); | ||||
Assert.Equal(DateTime.Parse("2018-08-16"), jT808_0X0702.CertificateExpiresDate); | Assert.Equal(DateTime.Parse("2018-08-16"), jT808_0X0702.CertificateExpiresDate); | ||||
} | } | ||||
@@ -100,23 +100,23 @@ namespace JT808.Protocol.Test.MessageBody | |||||
DriverIdentityCard="12345678901234567" | DriverIdentityCard="12345678901234567" | ||||
}; | }; | ||||
var hex = JT808Serializer.Serialize(jT808_0X0702, JT808Version.JTT2019).ToHexString(); | var hex = JT808Serializer.Serialize(jT808_0X0702, JT808Version.JTT2019).ToHexString(); | ||||
Assert.Equal("0119120111111100056B6F696B65717765313233343536616161303030303030303006717765727478201912013132333435363738393031323334353637303030", hex); | |||||
Assert.Equal("0119120111111100056B6F696B65717765313233343536616161000000000000000006717765727478201912013132333435363738393031323334353637000000", hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Test_2019_2() | public void Test_2019_2() | ||||
{ | { | ||||
byte[] bytes = "0119120111111100056B6F696B65717765313233343536616161303030303030303006717765727478201912013132333435363738393031323334353637303030".ToHexBytes(); | |||||
byte[] bytes = "0119120111111100056B6F696B65717765313233343536616161000000000000000006717765727478201912013132333435363738393031323334353637000000".ToHexBytes(); | |||||
JT808_0x0702 jT808_0X0702 = JT808Serializer.Deserialize<JT808_0x0702>(bytes, JT808Version.JTT2019); | JT808_0x0702 jT808_0X0702 = JT808Serializer.Deserialize<JT808_0x0702>(bytes, JT808Version.JTT2019); | ||||
Assert.Equal(JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班, jT808_0X0702.IC_Card_Status); | Assert.Equal(JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班, jT808_0X0702.IC_Card_Status); | ||||
Assert.Equal(DateTime.Parse("2019-12-01 11:11:11"), jT808_0X0702.IC_Card_PlugDateTime); | Assert.Equal(DateTime.Parse("2019-12-01 11:11:11"), jT808_0X0702.IC_Card_PlugDateTime); | ||||
Assert.Equal(JT808ICCardReadResult.IC卡读卡成功, jT808_0X0702.IC_Card_ReadResult); | Assert.Equal(JT808ICCardReadResult.IC卡读卡成功, jT808_0X0702.IC_Card_ReadResult); | ||||
Assert.Equal("koike", jT808_0X0702.DriverUserName); | Assert.Equal("koike", jT808_0X0702.DriverUserName); | ||||
Assert.Equal("qwe123456aaa00000000", jT808_0X0702.QualificationCode); | |||||
Assert.Equal("qwe123456aaa", jT808_0X0702.QualificationCode); | |||||
Assert.Equal("qwertx", jT808_0X0702.LicenseIssuing); | Assert.Equal("qwertx", jT808_0X0702.LicenseIssuing); | ||||
Assert.Equal(DateTime.Parse("2019-12-01"), jT808_0X0702.CertificateExpiresDate); | Assert.Equal(DateTime.Parse("2019-12-01"), jT808_0X0702.CertificateExpiresDate); | ||||
Assert.Equal("12345678901234567000", jT808_0X0702.DriverIdentityCard); | |||||
Assert.Equal("12345678901234567", jT808_0X0702.DriverIdentityCard); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
@@ -15,7 +15,7 @@ | |||||
<license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> | <license>https://github.com/SmallChi/JT808/blob/master/LICENSE</license> | ||||
<DocumentationFile>JT808.Protocol.xml</DocumentationFile> | <DocumentationFile>JT808.Protocol.xml</DocumentationFile> | ||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild> | <GeneratePackageOnBuild>false</GeneratePackageOnBuild> | ||||
<Version>2.3.8</Version> | |||||
<Version>2.3.9</Version> | |||||
<PackageLicenseFile>LICENSE</PackageLicenseFile> | <PackageLicenseFile>LICENSE</PackageLicenseFile> | ||||
<AnalysisLevel>latest</AnalysisLevel> | <AnalysisLevel>latest</AnalysisLevel> | ||||
<EnableNETAnalyzers>true</EnableNETAnalyzers> | <EnableNETAnalyzers>true</EnableNETAnalyzers> | ||||
@@ -143,7 +143,7 @@ namespace JT808.Protocol.MessageBody | |||||
{ | { | ||||
writer.WriteString(value.MakerId.PadRight(5, '\0').ValiString(nameof(value.MakerId), 5)); | writer.WriteString(value.MakerId.PadRight(5, '\0').ValiString(nameof(value.MakerId), 5)); | ||||
writer.WriteString(value.TerminalModel.PadRight(20, '\0').ValiString(nameof(value.TerminalModel), 20)); | writer.WriteString(value.TerminalModel.PadRight(20, '\0').ValiString(nameof(value.TerminalModel), 20)); | ||||
writer.WriteString(value.TerminalId.PadRight(7, '0').ValiString(nameof(value.TerminalId), 7)); | |||||
writer.WriteString(value.TerminalId.PadRight(7, '\0').ValiString(nameof(value.TerminalId), 7)); | |||||
} | } | ||||
writer.WriteBCD(value.Terminal_SIM_ICCID.ValiString(nameof(value.Terminal_SIM_ICCID), 20), 20); | writer.WriteBCD(value.Terminal_SIM_ICCID.ValiString(nameof(value.Terminal_SIM_ICCID), 20), 20); | ||||
writer.WriteByte((byte)value.Terminal_Hardware_Version_Num.Length); | writer.WriteByte((byte)value.Terminal_Hardware_Version_Num.Length); | ||||
@@ -163,13 +163,13 @@ namespace JT808.Protocol.MessageBody | |||||
{ | { | ||||
writer.WriteByte((byte)value.DriverUserName.Length); | writer.WriteByte((byte)value.DriverUserName.Length); | ||||
writer.WriteString(value.DriverUserName); | writer.WriteString(value.DriverUserName); | ||||
writer.WriteString(value.QualificationCode.PadRight(20, '0').ValiString(nameof(value.QualificationCode),20)); | |||||
writer.WriteString(value.QualificationCode.PadRight(20, '\0').ValiString(nameof(value.QualificationCode),20)); | |||||
writer.WriteByte((byte)value.LicenseIssuing.Length); | writer.WriteByte((byte)value.LicenseIssuing.Length); | ||||
writer.WriteString(value.LicenseIssuing); | writer.WriteString(value.LicenseIssuing); | ||||
writer.WriteDateTime4(value.CertificateExpiresDate); | writer.WriteDateTime4(value.CertificateExpiresDate); | ||||
if (writer.Version == JT808Version.JTT2019) | if (writer.Version == JT808Version.JTT2019) | ||||
{ | { | ||||
writer.WriteString(value.DriverIdentityCard.PadRight(20,'0').ValiString(nameof(value.DriverIdentityCard), 20)); | |||||
writer.WriteString(value.DriverIdentityCard.PadRight(20,'\0').ValiString(nameof(value.DriverIdentityCard), 20)); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -81,11 +81,11 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteByte((byte)value.UpgradeType); | writer.WriteByte((byte)value.UpgradeType); | ||||
if (writer.Version == JT808Version.JTT2019) | if (writer.Version == JT808Version.JTT2019) | ||||
{ | { | ||||
writer.WriteString(value.MakerId.PadLeft(11, '0')); | |||||
writer.WriteString(value.MakerId.PadLeft(11, '\0')); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
writer.WriteString(value.MakerId.PadRight(5, '0')); | |||||
writer.WriteString(value.MakerId.PadRight(5, '\0')); | |||||
} | } | ||||
writer.WriteByte((byte)value.VersionNum.Length); | writer.WriteByte((byte)value.VersionNum.Length); | ||||
writer.WriteString(value.VersionNum); | writer.WriteString(value.VersionNum); | ||||