Browse Source

1.增加报警及状态位枚举

2.增加枚举值的扩展及测试
tags/v1.3.0
SmallChi 6 years ago
parent
commit
3ab926240d
5 changed files with 288 additions and 1 deletions
  1. +37
    -1
      src/JT809.Protocol.Test/JT809Extensions/JT809BinaryExtensionsTest.cs
  2. +2
    -0
      src/JT809.Protocol/JT809.Protocol.csproj
  3. +162
    -0
      src/JT809.Protocol/JT809Enums/JT808_Alarm.cs
  4. +34
    -0
      src/JT809.Protocol/JT809Enums/JT808_Status.cs
  5. +53
    -0
      src/JT809.Protocol/JT809Extensions/JT809EnumExtensions.cs

+ 37
- 1
src/JT809.Protocol.Test/JT809Extensions/JT809BinaryExtensionsTest.cs View File

@@ -1,4 +1,5 @@
using JT809.Protocol.JT809Extensions;
using JT809.Protocol.Enums;
using JT809.Protocol.JT809Extensions;
using System;
using System.Collections.Generic;
using System.Text;
@@ -16,5 +17,40 @@ namespace JT809.Protocol.Test.JT809Extensions
Assert.Equal(7,vno.Length);
Assert.Equal(8, bytes.Length);
}

[Fact]
public void Test2()
{
var jT808_Alarms = JT809EnumExtensions.GetEnumTypes<JT808_Alarm>(24, 32);
var jT808_Alarms1 = JT809EnumExtensions.GetEnumTypes<JT808_Alarm>(5, 32);
var jT808_Alarms2 = JT809EnumExtensions.GetEnumTypes<JT808_Alarm>(16, 32);
var jT808_Alarms3 = JT809EnumExtensions.GetEnumTypes<JT808_Alarm>(18, 32);
var jT808_Alarms4 = JT809EnumExtensions.GetEnumTypes<JT808_Alarm>(31, 32);
var jT808_Alarms5= JT809EnumExtensions.GetEnumTypes<JT808_Alarm>(8388609, 32);
}


[Fact]
public void Test3()
{
var jT808_Status = JT809EnumExtensions.GetEnumTypes<JT808_Status>(24, 32);
var jT808_Status1 = JT809EnumExtensions.GetEnumTypes<JT808_Status>(5, 32);
var jT808_Status2 = JT809EnumExtensions.GetEnumTypes<JT808_Status>(16, 32);
var jT808_Status3 = JT809EnumExtensions.GetEnumTypes<JT808_Status>(18, 32);
var jT808_Status4 = JT809EnumExtensions.GetEnumTypes<JT808_Status>(31, 32);
var jT808_Status5 = JT809EnumExtensions.GetEnumTypes<JT808_Status>(8388609, 32);
}

[Fact]
public void Test4()
{
var jT808_Status5 = JT809EnumExtensions.GetEnumTypes<JT808_Status>(8388609, 32);
}

[Fact]
public void Test5()
{
var jT808_Status5 = JT809EnumExtensions.GetEnumTypes<JT808_Status>(8388609, 32,false);
}
}
}

+ 2
- 0
src/JT809.Protocol/JT809.Protocol.csproj View File

@@ -45,6 +45,8 @@
<ItemGroup>
<Compile Include="JT809Configs\JT809EncryptOptions.cs" />
<Compile Include="JT809Enums\JT808_Alarm.cs" />
<Compile Include="JT809Enums\JT808_Status.cs" />
<Compile Include="JT809Enums\JT809CommandType.cs" />
<Compile Include="JT809Enums\JT809ErrorCode.cs" />
<Compile Include="JT809Enums\JT809BusinessType.cs" />


+ 162
- 0
src/JT809.Protocol/JT809Enums/JT808_Alarm.cs View File

@@ -0,0 +1,162 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace JT809.Protocol.Enums
{
/// <summary>
/// 报警标志
/// </summary>
[Flags]
public enum JT808_Alarm : uint
{
/// <summary>
/// 紧急报警_触动报警开关后触发
/// 收到应答后清零
/// </summary>
紧急报警_触动报警开关后触发 = 1,
/// <summary>
/// 超速报警
/// 标志维持至报警条件解除
/// </summary>
超速报警 = 2,
/// <summary>
/// 标志维持至报警条件解除
/// 疲劳驾驶
/// </summary>
疲劳驾驶 = 4,
/// <summary>
/// 危险预警
/// 收到应答后清零
/// </summary>
危险预警 = 8,
/// <summary>
/// GNSS模块发生故障
/// 标志维持至报警条件解除
/// </summary>
GNSS模块发生故障=16,
/// <summary>
/// GNSS天线未接或被剪断
/// 标志维持至报警条件解除
/// </summary>
GNSS天线未接或被剪断 = 32,
/// <summary>
/// GNSS天线短路
/// 标志维持至报警条件解除
/// </summary>
GNSS天线短路 = 64,
/// <summary>
/// 终端主电源欠压
/// 标志维持至报警条件解除
/// </summary>
终端主电源欠压 = 128,
/// <summary>
/// 终端主电源掉电
/// 标志维持至报警条件解除
/// </summary>
终端主电源掉电 = 256,
/// <summary>
/// 终端LCD或显示器故障
/// 标志维持至报警条件解除
/// </summary>
终端LCD或显示器故障 = 512,
/// <summary>
/// TTS模块故障
/// 标志维持至报警条件解除
/// </summary>
TTS模块故障 = 1024,
/// <summary>
/// 摄像头故障
/// 标志维持至报警条件解除
/// </summary>
摄像头故障 = 2048,
/// <summary>
/// 道路运输证IC卡模块故障
/// 标志维持至报警条件解除
/// </summary>
道路运输证IC卡模块故障 = 4096,
/// <summary>
/// 超速预警
/// 标志维持至报警条件解除
/// </summary>
超速预警 = 8192,
/// <summary>
/// 疲劳驾驶预警
/// 标志维持至报警条件解除
/// </summary>
疲劳驾驶预警 = 16384,
保留1=32768,
保留2=65536,
保留3=131072,
/// <summary>
/// 当天累计驾驶超时
/// 标志维持至报警条件解除
/// </summary>
当天累计驾驶超时 = 262144,
/// <summary>
/// 超时停车
/// 标志维持至报警条件解除
/// </summary>
超时停车 = 524288,
/// <summary>
/// 进出区域
/// 收到应答后清零
/// </summary>
进出区域 = 1048576,
/// <summary>
/// 进出路线
/// 收到应答后清零
/// </summary>
进出路线 = 2097152,
/// <summary>
/// 路段行驶时间不足或过长
/// 收到应答后清零
/// </summary>
路段行驶时间不足或过长= 4194304,
/// <summary>
/// 路线偏离报警
/// 标志维持至报警条件解除
/// </summary>
路线偏离报警 = 8388608,
/// <summary>
/// 车辆VSS故障
/// 标志维持至报警条件解除
/// </summary>
车辆VSS故障= 16777216,
/// <summary>
/// 车辆油量异常
/// 标志维持至报警条件解除
/// </summary>
车辆油量异常 = 33554432,
/// <summary>
/// 车辆被盗通过车辆防盗器
/// 标志维持至报警条件解除
/// </summary>
车辆被盗 = 67108864,
/// <summary>
/// 车辆非法点火
/// </summary>
车辆非法点火 = 134217728,
/// <summary>
/// 车辆非法位移
/// 收到应答后清零
/// </summary>
车辆非法位移 = 268435456,
/// <summary>
/// 碰撞预警
/// 标志维持至报警条件解除
/// </summary>
碰撞预警 = 536870912,
/// <summary>
/// 侧翻预警
/// 标志维持至报警条件解除
/// </summary>
侧翻预警 = 1073741824,
/// <summary>
/// 非法开门报警
/// (终端未设置区域时,不判断非法开门)
/// 收到应答后清零
/// </summary>
非法开门报警 = 2147483648
}
}

+ 34
- 0
src/JT809.Protocol/JT809Enums/JT808_Status.cs View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace JT809.Protocol.Enums
{
[Flags]
public enum JT808_Status : uint
{
ACC开 = 1,
定位 = 2,
南纬 = 4,
西经 = 8,
停运状态 = 16,
经纬度已经保密插件加密 = 32,
//保留 = 64,
//保留 = 128,
半载 = 256,
//保留 = 512,
满载 = 768,
车辆油路断开 = 1024,
车辆电路断开 = 2048,
车门加锁 = 4096,
前门开 = 8192,
中门开 = 16384,
后门开 = 32768,
驾驶席门开 = 65536,
自定义 = 131072,
使用GPS卫星进行定位 = 262144,
使用北斗卫星进行定位 = 524288,
使用GLONASS卫星进行定位 = 1048576,
使用Galileo卫星进行定位 = 2097152
}
}

+ 53
- 0
src/JT809.Protocol/JT809Extensions/JT809EnumExtensions.cs View File

@@ -151,5 +151,58 @@ namespace JT809.Protocol.JT809Extensions
return default;
}
}

/// <summary>
/// 根据值获取对应枚举类型集合
/// </summary>
/// <typeparam name="T">具体枚举类型</typeparam>
/// <param name="value">枚举值</param>
/// <param name="digit">位数(8,16,32)</param>
/// <returns></returns>
public static IEnumerable<T> GetEnumTypes<T>(this int value,int digit) where T : Enum
{
return GetEnumTypes<T>(value, digit,true);
}

/// <summary>
/// 根据值获取对应枚举类型集合
/// </summary>
/// <typeparam name="T">具体枚举类型</typeparam>
/// <param name="value">枚举值</param>
/// <param name="digit">位数(8,16,32)</param>
/// <param name="ignoreUnknown">是否忽略未知数据</param>
/// <returns></returns>
public static IEnumerable<T> GetEnumTypes<T>(this int value, int digit,bool ignoreUnknown) where T : Enum
{
List<T> values = new List<T>();
for (int i = 0; i < digit; i++)
{
if (Math.Pow(2, i) <= value) continue;
values.Add((T)Enum.ToObject(typeof(T), (int)Math.Pow(2, i - 1)));
value = value - (int)Math.Pow(2, i - 1);
i = 0;
if (value <= 0) break;
}
if (ignoreUnknown)
{
List<T> results = new List<T>();
foreach (var item in values)
{
foreach (string itemChild in Enum.GetNames(typeof(T)))
{
if (item.ToString() == itemChild)
{
results.Add(item);
break;
}
}
}
return results;
}
else
{
return values;
}
}
}
}

Loading…
Cancel
Save