@@ -534,6 +534,13 @@ namespace JT808.Protocol.Test.MessageBody | |||||
//7E | //7E | ||||
} | } | ||||
[Fact] | |||||
public void Test_all_attcahids_json() | |||||
{ | |||||
var data = "7E0200005C11223344556622B8000000010000000200BA7F0E07E4F11C0028003C00001807151010100104000000640202003703020038040200011105010000000112060100000001011307000000020022012504000000172A0200F42B04000000F2300102310105167E".ToHexBytes(); | |||||
var hex = JT808Serializer.Analyze(data); | |||||
} | |||||
[Fact] | [Fact] | ||||
public void Test_JT808_0x0200_0x07_1() | 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> | </summary> | ||||
</member> | </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"> | <member name="T:JT808.Protocol.Enums.JT808DirectionType"> | ||||
<summary> | <summary> | ||||
方向类型 | 方向类型 | ||||
@@ -674,6 +754,21 @@ | |||||
修改菜单 | 修改菜单 | ||||
</summary> | </summary> | ||||
</member> | </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"> | <member name="T:JT808.Protocol.Enums.JT808MsgId"> | ||||
<summary> | <summary> | ||||
JT808消息 | JT808消息 | ||||
@@ -9615,6 +9710,7 @@ | |||||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x25.CarSignalStatus"> | <member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x25.CarSignalStatus"> | ||||
<summary> | <summary> | ||||
扩展车辆信号状态位 | 扩展车辆信号状态位 | ||||
<seealso cref="T:JT808.Protocol.Enums.JT808CarSignalStatus"/> | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x25.AttachInfoId"> | <member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x25.AttachInfoId"> | ||||
@@ -9659,6 +9755,8 @@ | |||||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x2A.IOStatus"> | <member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x2A.IOStatus"> | ||||
<summary> | <summary> | ||||
IO状态位 | IO状态位 | ||||
Flags | |||||
<see cref="T:JT808.Protocol.Enums.JT808IOStatus"/> | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x2A.AttachInfoId"> | <member name="P:JT808.Protocol.MessageBody.JT808_0x0200_0x2A.AttachInfoId"> | ||||
@@ -2,6 +2,7 @@ | |||||
using JT808.Protocol.Formatters; | using JT808.Protocol.Formatters; | ||||
using JT808.Protocol.Interfaces; | using JT808.Protocol.Interfaces; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | |||||
using System.Text.Json; | using System.Text.Json; | ||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
@@ -13,8 +14,9 @@ namespace JT808.Protocol.MessageBody | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 扩展车辆信号状态位 | /// 扩展车辆信号状态位 | ||||
/// <seealso cref="JT808.Protocol.Enums.JT808CarSignalStatus"/> | |||||
/// </summary> | /// </summary> | ||||
public int CarSignalStatus { get; set; } | |||||
public uint CarSignalStatus { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// JT808_0x0200_0x25 | /// JT808_0x0200_0x25 | ||||
/// </summary> | /// </summary> | ||||
@@ -36,8 +38,28 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); | writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); | ||||
value.AttachInfoLength = reader.ReadByte(); | value.AttachInfoLength = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | ||||
value.CarSignalStatus = reader.ReadInt32(); | |||||
value.CarSignalStatus = reader.ReadUInt32(); | |||||
writer.WriteNumber($"[{value.CarSignalStatus.ReadNumber()}]扩展车辆信号状态位", value.CarSignalStatus); | 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> | /// <summary> | ||||
/// | /// | ||||
@@ -50,7 +72,7 @@ namespace JT808.Protocol.MessageBody | |||||
JT808_0x0200_0x25 value = new JT808_0x0200_0x25(); | JT808_0x0200_0x25 value = new JT808_0x0200_0x25(); | ||||
value.AttachInfoId = reader.ReadByte(); | value.AttachInfoId = reader.ReadByte(); | ||||
value.AttachInfoLength = reader.ReadByte(); | value.AttachInfoLength = reader.ReadByte(); | ||||
value.CarSignalStatus = reader.ReadInt32(); | |||||
value.CarSignalStatus = reader.ReadUInt32(); | |||||
return value; | return value; | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
@@ -63,7 +85,7 @@ namespace JT808.Protocol.MessageBody | |||||
{ | { | ||||
writer.WriteByte(value.AttachInfoId); | writer.WriteByte(value.AttachInfoId); | ||||
writer.WriteByte(value.AttachInfoLength); | writer.WriteByte(value.AttachInfoLength); | ||||
writer.WriteInt32(value.CarSignalStatus); | |||||
writer.WriteUInt32(value.CarSignalStatus); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -2,6 +2,7 @@ | |||||
using JT808.Protocol.Formatters; | using JT808.Protocol.Formatters; | ||||
using JT808.Protocol.Interfaces; | using JT808.Protocol.Interfaces; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | |||||
using System.Text.Json; | using System.Text.Json; | ||||
namespace JT808.Protocol.MessageBody | namespace JT808.Protocol.MessageBody | ||||
@@ -13,6 +14,8 @@ namespace JT808.Protocol.MessageBody | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// IO状态位 | /// IO状态位 | ||||
/// Flags | |||||
/// <see cref="JT808.Protocol.Enums.JT808IOStatus"/> | |||||
/// </summary> | /// </summary> | ||||
public ushort IOStatus { get; set; } | public ushort IOStatus { get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -38,6 +41,13 @@ namespace JT808.Protocol.MessageBody | |||||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | ||||
value.IOStatus = reader.ReadUInt16(); | value.IOStatus = reader.ReadUInt16(); | ||||
writer.WriteNumber($"[{value.IOStatus.ReadNumber()}]IO状态位", value.IOStatus); | 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> | /// <summary> | ||||
/// | /// | ||||