Просмотр исходного кода

增加扩展车辆信号状态位枚举及对应解析器的描述修改

增加IO状态位枚举及对应解析器的描述修改
tags/v2.4.3
SmallChi(Koike) 3 лет назад
Родитель
Сommit
3573028ccf
6 измененных файлов: 235 добавлений и 4 удалений
  1. +7
    -0
      src/JT808.Protocol.Test/MessageBody/JT808_0x0200Test.cs
  2. +72
    -0
      src/JT808.Protocol/Enums/JT808CarSignalStatus.cs
  3. +22
    -0
      src/JT808.Protocol/Enums/JT808IOStatus.cs
  4. +98
    -0
      src/JT808.Protocol/JT808.Protocol.xml
  5. +26
    -4
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x25.cs
  6. +10
    -0
      src/JT808.Protocol/MessageBody/JT808_0x0200_0x2A.cs

+ 7
- 0
src/JT808.Protocol.Test/MessageBody/JT808_0x0200Test.cs Просмотреть файл

@@ -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()
{


+ 72
- 0
src/JT808.Protocol/Enums/JT808CarSignalStatus.cs Просмотреть файл

@@ -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,
}
}

+ 22
- 0
src/JT808.Protocol/Enums/JT808IOStatus.cs Просмотреть файл

@@ -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
}
}

+ 98
- 0
src/JT808.Protocol/JT808.Protocol.xml Просмотреть файл

@@ -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">


+ 26
- 4
src/JT808.Protocol/MessageBody/JT808_0x0200_0x25.cs Просмотреть файл

@@ -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);
}
}
}

+ 10
- 0
src/JT808.Protocol/MessageBody/JT808_0x0200_0x2A.cs Просмотреть файл

@@ -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>
///


Загрузка…
Отмена
Сохранить