diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs
index f411197..ccef77b 100644
--- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs
+++ b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x65_Test.cs
@@ -57,7 +57,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
VehicleState = 19
});
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString();
- Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106520000000010C060512010203041100070000000D0000000E191211183100001334343434343434191210183100030200", hex);
+ Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C0000180715101010652F000000010C060512010203041100070000000D0000000E191211183100001334343434343434191210183100030200", hex);
}
[Fact]
public void Deserialize()
diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj
index 9c94bbb..824d3ee 100644
--- a/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj
+++ b/src/JT808.Protocol.Extensions.JTActiveSafety/JT808.Protocol.Extensions.JTActiveSafety.csproj
@@ -15,7 +15,7 @@
https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE
https://github.com/SmallChi/JTActiveSafety/blob/master/LICENSE
false
- 1.0.5
+ 1.0.6
LICENSE
diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs
index ffddc3a..6460d90 100644
--- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs
+++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x65.cs
@@ -16,7 +16,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
public class JT808_0x0200_0x65 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze
{
public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x65;
- public override byte AttachInfoLength { get; set; } = 32;
+ public override byte AttachInfoLength { get; set; } = 47;
///
/// 报警ID
///
@@ -101,26 +101,22 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
switch (value.AlarmOrEventType)
{
case 0x01:
- alarmOrEventTypeString = "前向碰撞报警";
+ alarmOrEventTypeString = "疲劳驾驶报警";
break;
case 0x02:
- alarmOrEventTypeString = "车道偏离报警";
+ alarmOrEventTypeString = "接打电话报警";
break;
case 0x03:
- alarmOrEventTypeString = "车距过近报警";
+ alarmOrEventTypeString = "抽烟报警";
break;
case 0x04:
- alarmOrEventTypeString = "行人碰撞报警";
+ alarmOrEventTypeString = "分神驾驶报警";
break;
case 0x05:
- alarmOrEventTypeString = "频繁变道报警";
+ alarmOrEventTypeString = "驾驶员异常报警";
break;
case 0x06:
- alarmOrEventTypeString = "道路标识超限报警";
- break;
case 0x07:
- alarmOrEventTypeString = "障碍物报警";
- break;
case 0x08:
case 0x09:
case 0x0A:
@@ -132,10 +128,10 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
alarmOrEventTypeString = "用户自定义";
break;
case 0x10:
- alarmOrEventTypeString = "道路标志识别事件";
+ alarmOrEventTypeString = "自动抓拍事件";
break;
case 0x11:
- alarmOrEventTypeString = "主动抓拍事件";
+ alarmOrEventTypeString = "驾驶员变更事件";
break;
case 0x12:
case 0x13:
diff --git a/src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs b/src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs
index a92bb6d..6a1d46d 100644
--- a/src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs
+++ b/src/JTActiveSafety.Protocol.Test/JTActiveSafetySerializerTest.cs
@@ -15,13 +15,13 @@ namespace JTActiveSafety.Protocol.Test
package.Offset = 1;
package.Bodies = new byte[5] { 1, 2, 3, 4, 5 };
var hex = JTActiveSafetySerializer.Serialize(package).ToHexString();
- Assert.Equal("3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405", hex);
+ Assert.Equal("30 31 63 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 6C 61 72 6D 2E 78 6C 73 78 00 00 00 01 00 00 00 05 01 02 03 04 05", hex);
}
[Fact]
public void DeserializeTest1()
{
- var data = "3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405".ToHexBytes();
+ var data = "30 31 63 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 6C 61 72 6D 2E 78 6C 73 78 00 00 00 01 00 00 00 05 01 02 03 04 05".ToHexBytes();
var package = JTActiveSafetySerializer.Deserialize(data);
Assert.Equal(JTActiveSafetyPackage.FH, package.FH_Flag);
Assert.Equal("alarm.xlsx", package.FileName.TrimStart('\0'));
@@ -33,7 +33,7 @@ namespace JTActiveSafety.Protocol.Test
[Fact]
public void AnalyzeTest1()
{
- var data = "3031636400000000000000000000000000000000000000000000000000000000000000000000000000000000616C61726D2E786C737800000001000000050102030405".ToHexBytes();
+ var data = "30 31 63 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 61 6C 61 72 6D 2E 78 6C 73 78 00 00 00 01 00 00 00 05 01 02 03 04 05".ToHexBytes();
var json = JTActiveSafetySerializer.Analyze(data);
}
}
diff --git a/src/JTActiveSafety.Protocol/Extensions/HexExtensions.cs b/src/JTActiveSafety.Protocol/Extensions/HexExtensions.cs
index ff3420b..a1e94d8 100644
--- a/src/JTActiveSafety.Protocol/Extensions/HexExtensions.cs
+++ b/src/JTActiveSafety.Protocol/Extensions/HexExtensions.cs
@@ -1,4 +1,5 @@
using System;
+using System.Linq;
namespace JTActiveSafety.Protocol.Extensions
{
@@ -8,38 +9,10 @@ namespace JTActiveSafety.Protocol.Extensions
///
public static partial class HexExtensions
{
- public static string ToHexString(this byte[] source)
+ public static string ToHexString(this byte[] source, string separator = " ")
{
- return HexUtil.DoHexDump(source, 0, source.Length).ToUpper();
- }
-
- public static int WriteHexStringLittle(byte[] bytes, int offset, string data, int len)
- {
- if (data == null) data = "";
- data = data.Replace(" ", "");
- int startIndex = 0;
- if (data.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
- {
- startIndex = 2;
- }
- int length = len;
- if (length == -1)
- {
- length = (data.Length - startIndex) / 2;
- }
- int noOfZero = length * 2 + startIndex - data.Length;
- if (noOfZero > 0)
- {
- data = data.Insert(startIndex, new string('0', noOfZero));
- }
- int byteIndex = 0;
- while (startIndex < data.Length && byteIndex < length)
- {
- bytes[offset + byteIndex] = Convert.ToByte(data.Substring(startIndex, 2), 16);
- startIndex += 2;
- byteIndex++;
- }
- return length;
+ var value = source.Select(s => s.ToString("X2"));
+ return string.Join(separator, value);
}
///
@@ -48,9 +21,9 @@ namespace JTActiveSafety.Protocol.Extensions
///
///
///
- public static byte[] ToHexBytes(this string hexString)
+ public static byte[] ToHexBytes(this string hexString,string separator=" ")
{
- hexString = hexString.Replace(" ", "");
+ hexString = hexString.Replace(separator, "");
byte[] buf = new byte[hexString.Length / 2];
ReadOnlySpan readOnlySpan = hexString.AsSpan();
for (int i = 0; i < hexString.Length; i++)
@@ -63,14 +36,6 @@ namespace JTActiveSafety.Protocol.Extensions
return buf;
}
- public static string ReadHexStringLittle(ReadOnlySpan read, ref int offset, int len)
- {
- ReadOnlySpan source = read.Slice(offset, len);
- string hex = HexUtil.DoHexDump(read, offset, len);
- offset += len;
- return hex;
- }
-
public static string ReadNumber(this byte value, string format = "X2")
{
return value.ToString(format);
@@ -121,52 +86,4 @@ namespace JTActiveSafety.Protocol.Extensions
}
}
-
- public static class HexUtil
- {
- static readonly char[] HexdumpTable = new char[256 * 4];
- static HexUtil()
- {
- char[] digits = "0123456789ABCDEF".ToCharArray();
- for (int i = 0; i < 256; i++)
- {
- HexdumpTable[i << 1] = digits[(int)((uint)i >> 4 & 0x0F)];
- HexdumpTable[(i << 1) + 1] = digits[i & 0x0F];
- }
- }
-
- public static string DoHexDump(ReadOnlySpan buffer, int fromIndex, int length)
- {
- if (length == 0)
- {
- return "";
- }
- int endIndex = fromIndex + length;
- var buf = new char[length << 1];
- int srcIdx = fromIndex;
- int dstIdx = 0;
- for (; srcIdx < endIndex; srcIdx++, dstIdx += 2)
- {
- Array.Copy(HexdumpTable, buffer[srcIdx] << 1, buf, dstIdx, 2);
- }
- return new string(buf);
- }
-
- public static string DoHexDump(byte[] array, int fromIndex, int length)
- {
- if (length == 0)
- {
- return "";
- }
- int endIndex = fromIndex + length;
- var buf = new char[length << 1];
- int srcIdx = fromIndex;
- int dstIdx = 0;
- for (; srcIdx < endIndex; srcIdx++, dstIdx += 2)
- {
- Array.Copy(HexdumpTable, (array[srcIdx] & 0xFF) << 1, buf, dstIdx, 2);
- }
- return new string(buf);
- }
- }
}
diff --git a/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml b/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml
index b8694f0..c7cb0a3 100644
--- a/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml
+++ b/src/JTActiveSafety.Protocol/JTActiveSafety.Protocol.xml
@@ -15,7 +15,7 @@
ref:"www.codeproject.com/tips/447938/high-performance-csharp-byte-array-to-hex-string-t"
-
+
16进制字符串转16进制数组