From 3c8abc978de2f1935a1693fead14c683d2f2cf11 Mon Sep 17 00:00:00 2001 From: "SmallChi(Koike)" <564952747@qq.com> Date: Sat, 7 Sep 2019 21:22:24 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0ASCII=E8=AF=BB=E5=86=99?= =?UTF-8?q?=E5=99=A8=E5=8F=8A=E5=AF=B9=E5=BA=94=E6=B5=8B=E8=AF=95=202.?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + .../MessagePack/JT808MessagePackReaderTest.cs | 8 ++++++++ .../MessagePack/JT808MessagePackWriterTest.cs | 11 +++++++++++ .../MessagePack/JT808MessagePackReader.cs | 6 ++++++ .../MessagePack/JT808MessagePackWriter.cs | 8 ++++++++ 5 files changed, 34 insertions(+) diff --git a/README.md b/README.md index 9de7bd1..5d25d36 100644 --- a/README.md +++ b/README.md @@ -261,6 +261,7 @@ JT808Serializer JT808Serializer = new JT808Serializer(jT808Coonfig); | Package Name | Version | Downloads | | --------------------- | -------------------------------------------------- | --------------------------------------------------- | | Install-Package JT808 | ![JT808](https://img.shields.io/nuget/v/JT808.svg) | ![JT808](https://img.shields.io/nuget/dt/JT808.svg) | +| Install-Package JT808.Protocol.Extensions.JT1078 | ![JT808.Protocol.Extensions.JT1078](https://img.shields.io/nuget/v/JT808.Protocol.Extensions.JT1078.svg) | ![JT808](https://img.shields.io/nuget/dt/JT808.Protocol.Extensions.JT1078.svg) | ## 使用BenchmarkDotNet性能测试报告(只是玩玩,不能当真) diff --git a/src/JT808.Protocol.Test/MessagePack/JT808MessagePackReaderTest.cs b/src/JT808.Protocol.Test/MessagePack/JT808MessagePackReaderTest.cs index 1f59d22..1987ec7 100644 --- a/src/JT808.Protocol.Test/MessagePack/JT808MessagePackReaderTest.cs +++ b/src/JT808.Protocol.Test/MessagePack/JT808MessagePackReaderTest.cs @@ -83,6 +83,14 @@ namespace JT808.Protocol.Test.MessagePack Assert.Equal(JT808Package.EndFlag, jT808MessagePackReader.ReadEnd()); } + [Fact] + public void ReadASCIITest() + { + byte[] array1 = new byte[] { 0x53, 0x56, 0x31, 0x2E, 0x31, 0x2E, 0x30 }; + JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(array1); + Assert.Equal("SV1.1.0", jT808MessagePackReader.ReadASCII(7)); + } + [Theory] [InlineData("0000000000000000000000ABCDEF1234")] public void ReadHexTest(string hexStr) diff --git a/src/JT808.Protocol.Test/MessagePack/JT808MessagePackWriterTest.cs b/src/JT808.Protocol.Test/MessagePack/JT808MessagePackWriterTest.cs index 4cd821e..bd65a07 100644 --- a/src/JT808.Protocol.Test/MessagePack/JT808MessagePackWriterTest.cs +++ b/src/JT808.Protocol.Test/MessagePack/JT808MessagePackWriterTest.cs @@ -402,6 +402,17 @@ namespace JT808.Protocol.Test.MessagePack } } + [Fact] + public void WriteASCII() + { + byte[] array = new byte[4096]; + byte[] array1 = new byte[] { 0x53,0x56,0x31,0x2E,0x31,0x2E,0x30 }; + var msgpackWriter = new JT808MessagePackWriter(array); + msgpackWriter.WirteASCII("SV1.1.0"); + var writeRealBytes = msgpackWriter.FlushAndGetRealArray(); + Assert.Equal(array1, writeRealBytes); + } + [Fact] public void CompositeTest1() { diff --git a/src/JT808.Protocol/MessagePack/JT808MessagePackReader.cs b/src/JT808.Protocol/MessagePack/JT808MessagePackReader.cs index 20a3e28..5851cbf 100644 --- a/src/JT808.Protocol/MessagePack/JT808MessagePackReader.cs +++ b/src/JT808.Protocol/MessagePack/JT808MessagePackReader.cs @@ -205,6 +205,12 @@ namespace JT808.Protocol.MessagePack string value = JT808Constants.Encoding.GetString(readOnlySpan.Slice(0, len).ToArray()); return value.Trim('\0'); } + public string ReadASCII(int len) + { + var readOnlySpan = GetReadOnlySpan(len); + string value = Encoding.ASCII.GetString(readOnlySpan.Slice(0, len).ToArray()); + return value; + } public string ReadRemainStringContent() { var readOnlySpan = ReadContent(0); diff --git a/src/JT808.Protocol/MessagePack/JT808MessagePackWriter.cs b/src/JT808.Protocol/MessagePack/JT808MessagePackWriter.cs index e7e3ccf..3e58477 100644 --- a/src/JT808.Protocol/MessagePack/JT808MessagePackWriter.cs +++ b/src/JT808.Protocol/MessagePack/JT808MessagePackWriter.cs @@ -2,6 +2,7 @@ using System; using System.Buffers; using System.Buffers.Binary; +using System.Text; namespace JT808.Protocol.MessagePack { @@ -285,6 +286,13 @@ namespace JT808.Protocol.MessagePack } writer.Advance(byteIndex); } + public void WirteASCII(string value) + { + var spanFree = writer.Free; + var bytes = Encoding.ASCII.GetBytes(value).AsSpan(); + bytes.CopyTo(spanFree); + writer.Advance(bytes.Length); + } public void WriteFullEncode() { var tmpSpan = writer.Written;