@@ -261,6 +261,7 @@ JT808Serializer JT808Serializer = new JT808Serializer(jT808Coonfig); | |||||
| Package Name | Version | Downloads | | | Package Name | Version | Downloads | | ||||
| --------------------- | -------------------------------------------------- | --------------------------------------------------- | | | --------------------- | -------------------------------------------------- | --------------------------------------------------- | | ||||
| Install-Package JT808 |  |  | | | Install-Package JT808 |  |  | | ||||
| Install-Package JT808.Protocol.Extensions.JT1078 |  |  | | |||||
## 使用BenchmarkDotNet性能测试报告(只是玩玩,不能当真) | ## 使用BenchmarkDotNet性能测试报告(只是玩玩,不能当真) | ||||
@@ -83,6 +83,14 @@ namespace JT808.Protocol.Test.MessagePack | |||||
Assert.Equal(JT808Package.EndFlag, jT808MessagePackReader.ReadEnd()); | 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] | [Theory] | ||||
[InlineData("0000000000000000000000ABCDEF1234")] | [InlineData("0000000000000000000000ABCDEF1234")] | ||||
public void ReadHexTest(string hexStr) | public void ReadHexTest(string hexStr) | ||||
@@ -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] | [Fact] | ||||
public void CompositeTest1() | public void CompositeTest1() | ||||
{ | { | ||||
@@ -205,6 +205,12 @@ namespace JT808.Protocol.MessagePack | |||||
string value = JT808Constants.Encoding.GetString(readOnlySpan.Slice(0, len).ToArray()); | string value = JT808Constants.Encoding.GetString(readOnlySpan.Slice(0, len).ToArray()); | ||||
return value.Trim('\0'); | 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() | public string ReadRemainStringContent() | ||||
{ | { | ||||
var readOnlySpan = ReadContent(0); | var readOnlySpan = ReadContent(0); | ||||
@@ -2,6 +2,7 @@ | |||||
using System; | using System; | ||||
using System.Buffers; | using System.Buffers; | ||||
using System.Buffers.Binary; | using System.Buffers.Binary; | ||||
using System.Text; | |||||
namespace JT808.Protocol.MessagePack | namespace JT808.Protocol.MessagePack | ||||
{ | { | ||||
@@ -285,6 +286,13 @@ namespace JT808.Protocol.MessagePack | |||||
} | } | ||||
writer.Advance(byteIndex); | 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() | public void WriteFullEncode() | ||||
{ | { | ||||
var tmpSpan = writer.Written; | var tmpSpan = writer.Written; | ||||