@@ -534,6 +534,13 @@ namespace JT808.Protocol.Test.MessageBody | |||
//7E | |||
} | |||
[Fact] | |||
public void Test_all_attcahids_json() | |||
{ | |||
var data = "7E0200005C11223344556622B8000000010000000200BA7F0E07E4F11C0028003C00001807151010100104000000640202003703020038040200011105010000000112060100000001011307000000020022012504000000172A0200F42B04000000F2300102310105167E".ToHexBytes(); | |||
var hex = JT808Serializer.Analyze(data); | |||
} | |||
[Fact] | |||
public void Test_JT808_0x0200_0x07_1() | |||
{ | |||
@@ -0,0 +1,72 @@ | |||
using System; | |||
namespace JT808.Protocol.Enums | |||
{ | |||
/// <summary> | |||
/// 扩展车辆信号状态位 | |||
/// </summary> | |||
[Flags] | |||
public enum JT808CarSignalStatus : uint | |||
{ | |||
/// <summary> | |||
/// 开启近光信号灯 | |||
/// </summary> | |||
近光灯信号 = 1, | |||
/// <summary> | |||
/// 远光灯信号 | |||
/// </summary> | |||
远光灯信号 = 2, | |||
/// <summary> | |||
/// 右转向灯信号 | |||
/// </summary> | |||
右转向灯信号 = 4, | |||
/// <summary> | |||
/// 左转向灯信号 | |||
/// </summary> | |||
左转向灯信号 = 8, | |||
/// <summary> | |||
/// 制动信号 | |||
/// </summary> | |||
制动信号 = 16, | |||
/// <summary> | |||
/// 倒档信号 | |||
/// </summary> | |||
倒档信号 = 32, | |||
/// <summary> | |||
/// 雾灯信号 | |||
/// </summary> | |||
雾灯信号 = 64, | |||
/// <summary> | |||
/// 示廓灯 | |||
/// </summary> | |||
示廓灯 = 128, | |||
/// <summary> | |||
/// 喇叭信号 | |||
/// </summary> | |||
喇叭信号 = 256, | |||
/// <summary> | |||
/// 空调状态 | |||
/// </summary> | |||
空调状态 = 512, | |||
/// <summary> | |||
/// 空挡信号 | |||
/// </summary> | |||
空挡信号 = 1024, | |||
/// <summary> | |||
/// 缓速器工作 | |||
/// </summary> | |||
缓速器工作 = 2048, | |||
/// <summary> | |||
/// ABS工作 | |||
/// </summary> | |||
ABS工作 = 4096, | |||
/// <summary> | |||
/// 加热器工作 | |||
/// </summary> | |||
加热器工作 = 8192, | |||
/// <summary> | |||
/// 离合器状态 | |||
/// </summary> | |||
离合器状态 = 16384, | |||
} | |||
} |
@@ -0,0 +1,22 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Text; | |||
namespace JT808.Protocol.Enums | |||
{ | |||
/// <summary> | |||
/// IO状态位 | |||
/// </summary> | |||
[Flags] | |||
public enum JT808IOStatus:ushort | |||
{ | |||
/// <summary> | |||
/// 深度休眠状态 | |||
/// </summary> | |||
深度休眠状态 = 1, | |||
/// <summary> | |||
/// 休眠状态 | |||
/// </summary> | |||
休眠状态 = 2 | |||
} | |||
} |
@@ -453,6 +453,86 @@ | |||
返回正常工作状态 | |||
</summary> | |||
</member> | |||
<member name="T:JT808.Protocol.Enums.JT808CarSignalStatus"> | |||
<summary> | |||
扩展车辆信号状态位 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.近光灯信号"> | |||
<summary> | |||
开启近光信号灯 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.远光灯信号"> | |||
<summary> | |||
远光灯信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.右转向灯信号"> | |||
<summary> | |||
右转向灯信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.左转向灯信号"> | |||
<summary> | |||
左转向灯信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.制动信号"> | |||
<summary> | |||
制动信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.倒档信号"> | |||
<summary> | |||
倒档信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.雾灯信号"> | |||
<summary> | |||
雾灯信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.示廓灯"> | |||
<summary> | |||
示廓灯 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.喇叭信号"> | |||
<summary> | |||
喇叭信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.空调状态"> | |||
<summary> | |||
空调状态 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.空挡信号"> | |||
<summary> | |||
空挡信号 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.缓速器工作"> | |||
<summary> | |||
缓速器工作 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.ABS工作"> | |||
<summary> | |||
ABS工作 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.加热器工作"> | |||
<summary> | |||
加热器工作 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808CarSignalStatus.离合器状态"> | |||
<summary> | |||
离合器状态 | |||
</summary> | |||
</member> | |||
<member name="T:JT808.Protocol.Enums.JT808DirectionType"> | |||
<summary> | |||
方向类型 | |||
@@ -674,6 +754,21 @@ | |||
修改菜单 | |||
</summary> | |||
</member> | |||
<member name="T:JT808.Protocol.Enums.JT808IOStatus"> | |||
<summary> | |||
IO状态位 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808IOStatus.深度休眠状态"> | |||
<summary> | |||
深度休眠状态 | |||
</summary> | |||
</member> | |||
<member name="F:JT808.Protocol.Enums.JT808IOStatus.休眠状态"> | |||
<summary> | |||
休眠状态 | |||
</summary> | |||
</member> | |||
<member name="T:JT808.Protocol.Enums.JT808MsgId"> | |||
<summary> | |||
JT808消息 | |||
@@ -9615,6 +9710,7 @@ | |||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x25.CarSignalStatus"> | |||
<summary> | |||
扩展车辆信号状态位 | |||
<seealso cref="T:JT808.Protocol.Enums.JT808CarSignalStatus"/> | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x25.AttachInfoId"> | |||
@@ -9659,6 +9755,8 @@ | |||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x2A.IOStatus"> | |||
<summary> | |||
IO状态位 | |||
Flags | |||
<see cref="T:JT808.Protocol.Enums.JT808IOStatus"/> | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x2A.AttachInfoId"> | |||
@@ -2,6 +2,7 @@ | |||
using JT808.Protocol.Formatters; | |||
using JT808.Protocol.Interfaces; | |||
using JT808.Protocol.MessagePack; | |||
using System; | |||
using System.Text.Json; | |||
namespace JT808.Protocol.MessageBody | |||
@@ -13,8 +14,9 @@ namespace JT808.Protocol.MessageBody | |||
{ | |||
/// <summary> | |||
/// 扩展车辆信号状态位 | |||
/// <seealso cref="JT808.Protocol.Enums.JT808CarSignalStatus"/> | |||
/// </summary> | |||
public int CarSignalStatus { get; set; } | |||
public uint CarSignalStatus { get; set; } | |||
/// <summary> | |||
/// JT808_0x0200_0x25 | |||
/// </summary> | |||
@@ -36,8 +38,28 @@ namespace JT808.Protocol.MessageBody | |||
writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); | |||
value.AttachInfoLength = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | |||
value.CarSignalStatus = reader.ReadInt32(); | |||
value.CarSignalStatus = reader.ReadUInt32(); | |||
writer.WriteNumber($"[{value.CarSignalStatus.ReadNumber()}]扩展车辆信号状态位", value.CarSignalStatus); | |||
writer.WriteStartObject("扩展车辆信号状态位对象信息"); | |||
var carSignalStatus = Convert.ToString(value.CarSignalStatus, 2).PadLeft(32, '0').AsSpan(); | |||
writer.WriteString("值", Convert.ToString(value.CarSignalStatus, 2).PadLeft(32, '0')); | |||
writer.WriteString("bit15~31", "保留"); | |||
writer.WriteString("bit14", (value.CarSignalStatus & 16384) == 16384 ? "离合器状态" : "无"); | |||
writer.WriteString("bit13", (value.CarSignalStatus & 8192) == 8192 ? "加热器工作" : "无"); | |||
writer.WriteString("bit12", (value.CarSignalStatus & 4096) == 4096 ? "ABS工作" : "无"); | |||
writer.WriteString("bit11", (value.CarSignalStatus & 2048) == 2048 ? "缓速器工作" : "无"); | |||
writer.WriteString("bit10", (value.CarSignalStatus & 1024) == 1024 ? "空挡信号" : "无"); | |||
writer.WriteString("bit9", (value.CarSignalStatus & 512) == 512 ? "空调状态" : "无"); | |||
writer.WriteString("bit8", (value.CarSignalStatus & 256) == 256 ? "喇叭信号" : "无"); | |||
writer.WriteString("bit7", (value.CarSignalStatus & 128) == 128 ? "示廓灯" : "无"); | |||
writer.WriteString("bit6", (value.CarSignalStatus & 64) == 64 ? "雾灯信号" : "无"); | |||
writer.WriteString("bit5", (value.CarSignalStatus & 32) == 32 ? "倒档信号" : "无"); | |||
writer.WriteString("bit4", (value.CarSignalStatus & 16) == 16 ? "制动信号" : "无"); | |||
writer.WriteString("bit3", (value.CarSignalStatus & 8) == 8 ? "左转向灯信号" : "无"); | |||
writer.WriteString("bit2", (value.CarSignalStatus & 4) == 4 ? "右转向灯信号" : "无"); | |||
writer.WriteString("bit1", (value.CarSignalStatus & 2) == 2 ? "远光灯信号" : "无"); | |||
writer.WriteString("bit0", (value.CarSignalStatus & 1) ==1?"近光灯信号":"无"); | |||
writer.WriteEndObject(); | |||
} | |||
/// <summary> | |||
/// | |||
@@ -50,7 +72,7 @@ namespace JT808.Protocol.MessageBody | |||
JT808_0x0200_0x25 value = new JT808_0x0200_0x25(); | |||
value.AttachInfoId = reader.ReadByte(); | |||
value.AttachInfoLength = reader.ReadByte(); | |||
value.CarSignalStatus = reader.ReadInt32(); | |||
value.CarSignalStatus = reader.ReadUInt32(); | |||
return value; | |||
} | |||
/// <summary> | |||
@@ -63,7 +85,7 @@ namespace JT808.Protocol.MessageBody | |||
{ | |||
writer.WriteByte(value.AttachInfoId); | |||
writer.WriteByte(value.AttachInfoLength); | |||
writer.WriteInt32(value.CarSignalStatus); | |||
writer.WriteUInt32(value.CarSignalStatus); | |||
} | |||
} | |||
} |
@@ -2,6 +2,7 @@ | |||
using JT808.Protocol.Formatters; | |||
using JT808.Protocol.Interfaces; | |||
using JT808.Protocol.MessagePack; | |||
using System; | |||
using System.Text.Json; | |||
namespace JT808.Protocol.MessageBody | |||
@@ -13,6 +14,8 @@ namespace JT808.Protocol.MessageBody | |||
{ | |||
/// <summary> | |||
/// IO状态位 | |||
/// Flags | |||
/// <see cref="JT808.Protocol.Enums.JT808IOStatus"/> | |||
/// </summary> | |||
public ushort IOStatus { get; set; } | |||
/// <summary> | |||
@@ -38,6 +41,13 @@ namespace JT808.Protocol.MessageBody | |||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | |||
value.IOStatus = reader.ReadUInt16(); | |||
writer.WriteNumber($"[{value.IOStatus.ReadNumber()}]IO状态位", value.IOStatus); | |||
writer.WriteStartObject("IO状态位对象信息"); | |||
var carSignalStatus = Convert.ToString(value.IOStatus, 2).PadLeft(16, '0').AsSpan(); | |||
writer.WriteString("值", Convert.ToString(value.IOStatus, 2).PadLeft(16, '0')); | |||
writer.WriteString("bit2~15", "保留"); | |||
writer.WriteString("bit1", (value.IOStatus & 2) == 2 ? "休眠状态" : "无"); | |||
writer.WriteString("bit0", (value.IOStatus & 1) == 1 ? "深度休眠状态" : "无"); | |||
writer.WriteEndObject(); | |||
} | |||
/// <summary> | |||
/// | |||