diff --git a/src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj b/src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj
index 39267b4..75f0f94 100644
--- a/src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj
+++ b/src/JTActiveSafety.Protocol.Test/JTActiveSafety.Protocol.Test.csproj
@@ -15,4 +15,8 @@
+
+
+
+
diff --git a/src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs b/src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs
new file mode 100644
index 0000000..a92bb6d
--- /dev/null
+++ b/src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs
@@ -0,0 +1,40 @@
+using System;
+using Xunit;
+using JTActiveSafety.Protocol;
+using JTActiveSafety.Protocol.Extensions;
+
+namespace JTActiveSafety.Protocol.Test
+{
+ public class JTActiveSafetySerializerTest
+ {
+ [Fact]
+ public void SerializeTest1()
+ {
+ JTActiveSafetyPackage package = new JTActiveSafetyPackage();
+ package.FileName = "alarm.xlsx";
+ package.Offset = 1;
+ package.Bodies = new byte[5] { 1, 2, 3, 4, 5 };
+ var hex = JTActiveSafetySerializer.Serialize(package).ToHexString();
+ Assert.Equal("3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405", hex);
+ }
+
+ [Fact]
+ public void DeserializeTest1()
+ {
+ var data = "3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405".ToHexBytes();
+ var package = JTActiveSafetySerializer.Deserialize(data);
+ Assert.Equal(JTActiveSafetyPackage.FH, package.FH_Flag);
+ Assert.Equal("alarm.xlsx", package.FileName.TrimStart('\0'));
+ Assert.Equal(1u, package.Offset);
+ Assert.Equal(5u, package.Length);
+ Assert.Equal(new byte[5] { 1, 2, 3, 4, 5 }, package.Bodies);
+ }
+
+ [Fact]
+ public void AnalyzeTest1()
+ {
+ var data = "3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405".ToHexBytes();
+ var json = JTActiveSafetySerializer.Analyze(data);
+ }
+ }
+}
diff --git a/src/JTActiveSafety.Protocol.Test/UnitTest1.cs b/src/JTActiveSafety.Protocol.Test/UnitTest1.cs
deleted file mode 100644
index d2308e8..0000000
--- a/src/JTActiveSafety.Protocol.Test/UnitTest1.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using System;
-using Xunit;
-
-namespace JTActiveSafety.Protocol.Test
-{
- public class UnitTest1
- {
- [Fact]
- public void Test1()
- {
-
- }
- }
-}
diff --git a/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.csproj b/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.csproj
index 4cb48a3..c63c67e 100644
--- a/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.csproj
+++ b/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.csproj
@@ -15,9 +15,17 @@
https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE
https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE
false
- 1.0.0
+ 1.0.0-preview1
LICENSE
+
+
+ JTActiveSafety.Protocol.xml
+
+
+
+ JTActiveSafety.Protocol.xml
+
diff --git a/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml b/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml
new file mode 100644
index 0000000..b8694f0
--- /dev/null
+++ b/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml
@@ -0,0 +1,77 @@
+
+
+
+ JTActiveSafety.Protocol
+
+
+
+
+
+
+
+
+
+
+ ref:"www.codeproject.com/tips/447938/high-performance-csharp-byte-array-to-hex-string-t"
+
+
+
+
+ 16进制字符串转16进制数组
+
+
+
+
+
+
+
+ 帧头标识
+
+
+
+
+ 帧头标识
+
+
+
+
+ 帧头标识
+ 固定为0x30 0x31 0x63 0x64
+
+
+
+
+ 文件名称
+
+
+
+
+ 数据偏移量
+
+
+
+
+ 数据长度
+
+
+
+
+ 数据体
+ 默认长度64K,文件小于64K 则为实际长度
+
+
+
+
+ 数字编码 大端模式、高位在前
+
+
+
+
+
+ 数字编码 大端模式、高位在前
+
+
+
+
+
+
diff --git a/src/JTActiveSafety.Protocol/JTActiveSafetySerializer.cs b/src/JTActiveSafety.Protocol/JTActiveSafetySerializer.cs
index 4751de2..dd93894 100644
--- a/src/JTActiveSafety.Protocol/JTActiveSafetySerializer.cs
+++ b/src/JTActiveSafety.Protocol/JTActiveSafetySerializer.cs
@@ -19,7 +19,7 @@ namespace JTActiveSafety.Protocol
{
JTActiveSafetyMessagePackWriter writer = new JTActiveSafetyMessagePackWriter(buffer);
writer.WriteUInt32(package.FH_Flag);
- writer.WriteString(package.FileName);
+ writer.WriteString(package.FileName.PadLeft(50, '\0'));
writer.WriteUInt32(package.Offset);
writer.WriteUInt32((uint)package.Bodies.Length);
writer.WriteArray(package.Bodies);
@@ -51,13 +51,13 @@ namespace JTActiveSafety.Protocol
{
writer.WriteStartObject();
var header = reader.ReadUInt32();
- writer.WriteString($"[{header}]头部", header.ReadNumber());
+ writer.WriteNumber($"[{ header.ReadNumber()}]头部", header);
var FileName = reader.ReadString(50);
writer.WriteString($"[文件名称]", FileName);
var offset = reader.ReadUInt32();
- writer.WriteNumber($"{offset}[数据偏移量]", offset);
+ writer.WriteNumber($"{offset.ReadNumber()}[数据偏移量]", offset);
var length = reader.ReadUInt32();
- writer.WriteNumber($"{length}[数据长度]", length);
+ writer.WriteNumber($"{length.ReadNumber()}[数据长度]", length);
var bodies = reader.ReadRemainArray().ToArray();
writer.WriteString("[数据体]", string.Join(" ", (bodies).Select(p => p.ToString("X2"))));
writer.WriteEndObject();