diff --git a/.github/workflows/dotnetcore.yml b/.github/workflows/dotnetcore.yml
index 51fa38b..44b83d3 100755
--- a/.github/workflows/dotnetcore.yml
+++ b/.github/workflows/dotnetcore.yml
@@ -12,7 +12,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@master
with:
- dotnet-version: 3.1.101
+ dotnet-version: 3.1.401
- name: dotnet info
run: dotnet --info
- name: dotnet restore
diff --git a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj
index 5f65789..d64dcd8 100644
--- a/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj
+++ b/src/JT808.Protocol.Test/JT808.Protocol.Test.csproj
@@ -107,22 +107,22 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
all
runtime; build; native; contentfiles; analyzers
-
+
all
runtime; build; native; contentfiles; analyzers
diff --git a/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs b/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs
index 446b33f..8925a07 100644
--- a/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs
+++ b/src/JT808.Protocol.Test/MessageBody/JT808_0x0100Test.cs
@@ -110,6 +110,48 @@ namespace JT808.Protocol.Test.MessageBody
{
byte[] bytes = "7E010040540100000000000123456789000A00280032303030303030303132333430303030303030303030303030303030303030736D616C6C63686931323330303030303030303030303030303030303030303030303043484931323301D4C1413132333435B27E".ToHexBytes();
string json = JT808Serializer.Analyze(bytes);
+ }
+ [Fact]
+ public void Test2019_4_1()
+ {
+ var package = JT808MsgId.终端注册.Create2019("22222222222", new JT808_0x0100()
+ {
+ PlateNo = "粤A12346",
+ PlateColor = 2,
+ AreaID = 0,
+ CityOrCountyId = 0,
+ MakerId = "Koike002",
+ TerminalId = "Koike002",
+ TerminalModel = "Koike002"
+ });
+ var data = JT808Serializer.Serialize(package);
+ var hex = data.ToHexString();
+ Assert.Equal("7e0100405401000000000222222222220001000000003030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b6530303202d4c1413132333436107e".ToUpper(), hex);
+ }
+
+ [Fact]
+ public void Test2019_4_2()
+ {
+ byte[] bytes = "7e0100405401000000000222222222220001000000003030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b6530303202d4c1413132333436107e".ToHexBytes();
+ JT808Package jT808_0X0100 = JT808Serializer.Deserialize(bytes);
+ Assert.Equal("22222222222", jT808_0X0100.Header.TerminalPhoneNo);
+ Assert.Equal(1, jT808_0X0100.Header.ProtocolVersion);
+ Assert.NotNull(jT808_0X0100.Bodies);
+ JT808_0x0100 body = jT808_0X0100.Bodies as JT808_0x0100;
+ Assert.Equal(0, body.AreaID);
+ Assert.Equal(2, body.PlateColor);
+ Assert.Equal(0, body.CityOrCountyId);
+ Assert.Equal("粤A12346", body.PlateNo.TrimStart());
+ Assert.Equal("Koike002", body.MakerId.TrimStart('0'));
+ Assert.Equal("Koike002", body.TerminalId.TrimStart('0'));
+ Assert.Equal("Koike002", body.TerminalModel.TrimStart('0'));
+ }
+
+ [Fact]
+ public void Test2019_4_3()
+ {
+ byte[] bytes = "7e0100405401000000000222222222220001000000003030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b65303032303030303030303030303030303030303030303030304b6f696b6530303202d4c1413132333436107e".ToHexBytes();
+ string json = JT808Serializer.Analyze(bytes);
}
}
}
diff --git a/src/JT808.Protocol/JT808.Protocol.csproj b/src/JT808.Protocol/JT808.Protocol.csproj
index 6a6691c..794fef9 100644
--- a/src/JT808.Protocol/JT808.Protocol.csproj
+++ b/src/JT808.Protocol/JT808.Protocol.csproj
@@ -14,7 +14,7 @@
https://github.com/SmallChi/JT808/blob/master/LICENSE
https://github.com/SmallChi/JT808/blob/master/LICENSE
false
- 2.2.10
+ 2.2.11
LICENSE
@@ -65,14 +65,14 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
diff --git a/src/JT808.Protocol/JT808Package.cs b/src/JT808.Protocol/JT808Package.cs
index 55d3414..bce4ae7 100644
--- a/src/JT808.Protocol/JT808Package.cs
+++ b/src/JT808.Protocol/JT808Package.cs
@@ -269,6 +269,7 @@ namespace JT808.Protocol
writer.WriteNumber($"[{messageBodyPropertyReadOnlySpan.ToString()}]消息体属性", messageBodyPropertyValue);
if (headerMessageBodyProperty.VersionFlag)
{
+ reader.Version = JT808Version.JTT2019;
writer.WriteNumber( "[bit15]保留", 0);
writer.WriteBoolean("[bit14]协议版本标识", headerMessageBodyProperty.VersionFlag);
writer.WriteBoolean("[bit13]是否分包", headerMessageBodyProperty.IsPackage);
@@ -285,6 +286,7 @@ namespace JT808.Protocol
}
else
{
+ reader.Version = JT808Version.JTT2013;
writer.WriteNumber("[bit15]保留", 0);
writer.WriteNumber("[bit14]保留", 0);
writer.WriteBoolean("[bit13]是否分包", headerMessageBodyProperty.IsPackage);
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x0200.cs b/src/JT808.Protocol/MessageBody/JT808_0x0200.cs
index 370fc3c..70201e8 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x0200.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x0200.cs
@@ -210,7 +210,7 @@ namespace JT808.Protocol.MessageBody
{
JT808_0x0200 value = new JT808_0x0200();
value.AlarmFlag = reader.ReadUInt32();
- writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag);
+ writer.WriteNumber($"[{value.AlarmFlag.ReadBinary().ToString()}]报警标志", value.AlarmFlag);
value.StatusFlag = reader.ReadUInt32();
var alarmFlagBits = Convert.ToString(value.AlarmFlag, 2).PadLeft(32, '0').AsSpan();
writer.WriteStartObject("报警标志对象");
@@ -261,7 +261,7 @@ namespace JT808.Protocol.MessageBody
writer.WriteString($"[bit1]超速报警", $"{alarmFlagBits[1]}");
writer.WriteString($"[bit0]紧急报警,触动报警开关后触发", $"{alarmFlagBits[0]}");
writer.WriteEndObject();
- writer.WriteNumber($"[{value.StatusFlag.ReadNumber()}]状态位标志", value.StatusFlag);
+ writer.WriteNumber($"[{value.StatusFlag.ReadBinary().ToString()}]状态位标志", value.StatusFlag);
var StatusFlagBits = Convert.ToString(value.StatusFlag, 2).PadLeft(32, '0').AsSpan();
writer.WriteStartObject("状态标志对象");
if (reader.Version == JT808Version.JTT2019)