diff --git a/src/JT809.Protocol.sln b/src/JT809.Protocol.sln new file mode 100644 index 0000000..01c0e59 --- /dev/null +++ b/src/JT809.Protocol.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27428.2005 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT809.Protocol", "JT809.Protocol\JT809.Protocol.csproj", "{4D33A5C9-F583-4230-9791-AB0394EFAD57}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4D33A5C9-F583-4230-9791-AB0394EFAD57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4D33A5C9-F583-4230-9791-AB0394EFAD57}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4D33A5C9-F583-4230-9791-AB0394EFAD57}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4D33A5C9-F583-4230-9791-AB0394EFAD57}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {6159526D-F9A2-4984-A941-B65CA7B0E2EE} + EndGlobalSection +EndGlobal diff --git a/src/JT809.Protocol/Constants.cs b/src/JT809.Protocol/Constants.cs new file mode 100644 index 0000000..6711629 --- /dev/null +++ b/src/JT809.Protocol/Constants.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace JT809.Protocol +{ + /// + /// 常量 + /// + public static class Constants + { + /// + /// 报警类型 + /// + public readonly static Dictionary AlramType = new Dictionary() + { + {0x0001,"超速报警"}, + {0x0002,"疲劳驾驶报警"}, + {0x0003,"紧急报警"}, + {0x0004,"进入指定区域报警"}, + {0x0005,"离开指定区域报警"}, + {0x0006,"路段赌赛报警"}, + {0x0007,"危险路段报警"}, + {0x0008,"越界报警"}, + {0x0009,"盗警"}, + {0x000A,"劫警"}, + {0x000B,"偏离路线报警"}, + {0x000C,"车辆移动报警"}, + {0x000D,"超时驾驶报警"}, + {0x000E,"其他报警"} + }; + + /// + /// 车牌颜色 + /// + public readonly static Dictionary CarColor = new Dictionary() + { + {1,"蓝色"}, + {2,"黄色"}, + {3,"黄色"}, + {4,"白色"}, + {5,"绿"}, + {6,"黄绿"}, + {8,"农黄"}, + {9,"其他"} + }; + } +} diff --git a/src/JT809.Protocol/Enums/BusinessType.cs b/src/JT809.Protocol/Enums/BusinessType.cs new file mode 100644 index 0000000..4e735d2 --- /dev/null +++ b/src/JT809.Protocol/Enums/BusinessType.cs @@ -0,0 +1,163 @@ +using System.ComponentModel; + +namespace JT809.Protocol.Enums +{ + /// + /// 业务数据类型标识 + /// 数据交换一协议规定的业务数据类型名称和标识常量定义见表 73。业务数据类型标识的命名规则如下: + /// a) 上级平台向下级平台发送的请求消息,一般以“DOWN_”开头,以后缀_REQ 结尾;而下级平台向上级平台发送的请求消息一般以“UP_”开头,以后缀_REQ 结尾; + /// b) 当上下级平台之间有应答消息情况下,应答消息可继续沿用对应的请求消息开头标识符,而通过后缀 RSP 来标识结尾。 + /// + public enum BusinessType : ushort + { + #region 链路管理类 + /// + ///主链路登录请求消息 + /// + [Description("主链路登录请求消息")] + UP_CONNECT_REQ = 0x1001, + /// + ///主链路登录应答消息 + /// + [Description("主链路登录应答消息")] + UP_CONNECT_RSP = 0x1002, + /// + ///主链路注销请求消息 + /// + [Description("主链路注销请求消息")] + UP_DISCONNECT_REQ = 0x1003, + /// + ///主链路注销应答消息 + /// + [Description("主链路注销应答消息")] + UP_DISCONNECT_RSP = 0x1004, + /// + ///主链路连接保持请求消息 + /// + [Description("主链路连接保持请求消息")] + UP_LINKTEST_REQ = 0x1005, + /// + ///主链路连接保持应答消息 + /// + [Description("主链路连接保持应答消息")] + UP_LINKTEST_RSP = 0x1006, + /// + ///主链路断开通知消息 + /// + [Description("主链路断开通知消息")] + UP_DISCONNECT_INFORM = 0x1007, + /// + ///下级平台主动关闭链路通知消息 + /// + [Description("下级平台主动关闭链路通知消息")] + UP_CLOSELINK_INFORM = 0x1008, + /// + ///从链路连接请求消息 + /// + [Description("从链路连接请求消息")] + DOWN_CONNECT_REQ = 0x9001, + /// + ///从链路连接应答消息 + /// + [Description("从链路连接应答消息")] + DOWN_CONNECT_RSP = 0x9002, + /// + ///从链路注销请求消息 + /// + [Description("从链路注销请求消息")] + DOWN_DISCONNECT_REQ = 0x9003, + /// + ///从链路注销应答消息 + /// + [Description("从链路注销应答消息")] + DOWN_DISCONNECT_RSP = 0x9004, + /// + ///从链路连接保持请求消息 + /// + [Description("从链路连接保持请求消息")] + DOWN_LINKTEST_REQ = 0x9005, + /// + ///从链路连接保持应答消息 + /// + [Description("从链路连接保持应答消息")] + DOWN_LINKTEST_RSP = 0x9006, + /// + ///从链路断开通知消息 + /// + [Description("从链路断开通知消息")] + DOWN_DISCONNECT_INFORM = 0x9007, + /// + ///上级平台主动关闭链路通知消息 + /// + [Description("上级平台主动关闭链路通知消息")] + DOWN_CLOSELINK_INFORM = 0x9008, + #endregion + #region 信息统计类 + /// + ///接收定位信息数量通知消息 + /// + [Description("接收定位信息数量通知消息")] + DOWN_TOTAL_RECV_BACK_MSG = 0x9101, + #endregion + #region 车辆动态信息交换 + /// + ///主链路动态信息交换消息 + /// + [Description("主链路动态信息交换消息")] + UP_EXG_MSG = 0x1200, + /// + ///从链路动态信息交换消息 + /// + [Description("从链路动态信息交换消息")] + DOWN_EXG_MSG = 0x9200, + #endregion + #region 平台间信息交互类 + /// + ///主链路平台间信息交互消息 + /// + [Description("主链路平台间信息交互消息")] + UP_PLATFORM_MSG = 0x1300, + /// + ///从链路平台间信息交互消息 + /// + [Description("从链路平台间信息交互消息")] + DOWN_PLATFORM_MSG = 0x9300, + #endregion + #region 车辆报警信息交互类 + /// + ///主链路报警信息交互消息 + /// + [Description("主链路报警信息交互消息")] + UP_WARN_MSG = 0x1400, + /// + ///从链路报警信息交互消息 + /// + [Description("从链路报警信息交互消息")] + DOWN_WARN_MSG = 0x9400, + #endregion + #region 车辆监管类 + /// + ///主链路车辆监管消息 + /// + [Description("主链路车辆监管消息")] + UP_CTRL_MSG = 0x1500, + /// + ///从链路车辆监管消息 + /// + [Description("从链路车辆监管消息")] + DOWN_CTRL_MSG = 0x9500, + #endregion + #region 车辆静态信息交换类 + /// + ///主链路静态信息交换消息 + /// + [Description("主链路静态信息交换消息")] + UP_BASE_MSG = 0x1600, + /// + ///从链路静态信息交换消息 + /// + [Description("从链路静态信息交换消息")] + DOWN_BASE_MSG = 0x9600, + #endregion + } +} diff --git a/src/JT809.Protocol/Enums/SubBusinessType.cs b/src/JT809.Protocol/Enums/SubBusinessType.cs new file mode 100644 index 0000000..18ca14a --- /dev/null +++ b/src/JT809.Protocol/Enums/SubBusinessType.cs @@ -0,0 +1,260 @@ +using System.ComponentModel; + +namespace JT809.Protocol.Enums +{ + /// + ///子业务类型标识 + /// + public enum SubBusinessType : ushort + { + #region 主链路动态信息交换消息 UP_EXG_MSG + /// + /// 上传车辆注册信息 + /// + [Description("上传车辆注册信息")] + UP_EXG_MSG_REGISTER = 0x1201, + /// + ///实时上传车辆定位信息 + /// + [Description("实时上传车辆定位信息")] + UP_EXG_MSG_REAL_LOCATION = 0x1202, + /// + ///车辆定位信息自动补报 + /// + [Description("车辆定位信息自动补报")] + UP_EXG_MSG_HISTORY_LOCATION = 0x1203, + /// + ///启动车辆定位信息交换应答 + /// + [Description("启动车辆定位信息交换应答")] + UP_EXG_MSG_RETURN_STARTUP_ACK = 0x1205, + /// + ///结束车辆定位信息交换应答 + /// + [Description("结束车辆定位信息交换应答")] + UP_EXG_MSG_RETURN_END_ACK = 0x1206, + /// + ///申请交换指定车辆定位信息请求 + /// + [Description("申请交换指定车辆定位信息请求")] + UP_EXG_MSG_APPLY_FOR_MONITOR_STARTUP = 0x1207, + /// + ///取消交换指定车辆定位信息请求 + /// + [Description("取消交换指定车辆定位信息请求")] + UP_EXG_MSG_APPLY_FOR_MONITOR_END = 0x1208, + /// + ///补发车辆定位信息请求 + /// + [Description("补发车辆定位信息请求")] + UP_EXG_MSG_APPLY_HISGNSSDATA_REQ = 0x1209, + /// + ///上报车辆驾驶员身份识别信息应答 + /// + [Description("上报车辆驾驶员身份识别信息应答")] + UP_EXG_MSG_REPORT_DRIVER_INFO_ACK = 0x120A, + /// + ///上报车辆电子运单应答 + /// + [Description("上报车辆电子运单应答")] + UP_EXG_MSG_TAKE_EWAYBILL_ACK = 0x120B, + /// + ///主动上报驾驶员身份信息 + /// + [Description("主动上报驾驶员身份信息")] + UP_EXG_MSG_REPORT_DRIVER_INFO = 0x120C, + /// + ///主动上报车辆电子运单信息 + /// + [Description("主动上报车辆电子运单信息")] + UP_EXG_MSG_REPORT_EWAYBILL_INFO = 0x120D, + #endregion + + #region 从链路动态信息交换消息 DOWN_EXG_MSG + /// + ///交换车辆定位信息 + /// + [Description("交换车辆定位信息")] + DOWN_EXG_MSG_CAR_LOCATION = 0x9202, + /// + ///车辆定位信息交换补发 + /// + [Description("车辆定位信息交换补发")] + DOWN_EXG_MSG_HISTORY_ARCOSSAREA = 0x9203, + /// + ///交换车辆静态信息 + /// + [Description("交换车辆静态信息")] + DOWN_EXG_MSG_CAR_INFO = 0x9204, + /// + ///启动车辆定位信息交换请求 + /// + [Description("启动车辆定位信息交换请求")] + DOWN_EXG_MSG_RETURN_STARTUP = 0x9205, + /// + ///结束车辆定位信息交换请求 + /// + [Description("结束车辆定位信息交换请求")] + DOWN_EXG_MSG_RETURN_END = 0x9206, + /// + ///申请交换指定车辆定位信息应答 + /// + [Description("申请交换指定车辆定位信息应答")] + DOWN_EXG_MSG_APPLY_FOR_MONITOR_STARTUP_ACK = 0x9207, + /// + ///取消交换指定车辆定位信息应答 + /// + [Description("取消交换指定车辆定位信息应答")] + DOWN_EXG_MSG_APPLY_FOR_MONITOR_END_ACK = 0x9208, + /// + ///补发车辆定位信息应答 + /// + [Description("补发车辆定位信息应答")] + DOWN_EXG_MSG_APPLY_HISGNSSDATA_ACK = 0x9209, + /// + ///上报车辆驾驶员身份识别信息请求 + /// + [Description("上报车辆驾驶员身份识别信息请求")] + DOWN_EXG_MSG_REPORT_DRIVER_INFO = 0x920A, + /// + ///上报车辆电子运单请求 + /// + [Description("上报车辆电子运单请求")] + DOWN_EXG_MSG_TAKE_EWAYBILL_REQ = 0x920B, + #endregion + + #region 主链路平台信息交互消息 UP_PLATFORM_MSG + /// + ///平台查岗应答 + /// + [Description("平台查岗应答")] + UP_PLATFORM_MSG_POST_QUERY_ACK = 0x1301, + /// + ///下发平台间报文应答 + /// + [Description("下发平台间报文应答")] + UP_PLATFORM_MSG_INFO_ACK = 0x1302, + #endregion + + #region 从链路平台信息交互消息 DOWN_PLATFORM_MSG + /// + ///平台查岗请求 + /// + [Description("平台查岗请求")] + DOWN_PLATFORM_MSG_POST_QUERY_REQ = 0x9301, + /// + ///下发平台间报文请求 + /// + [Description("下发平台间报文请求")] + DOWN_PLATFORM_MSG_INFO_REQ = 0x9302, + #endregion + + #region 主链路报警信息交互消息 UP_WARN_MSG + /// + ///报警督办应答 + /// + [Description("报警督办应答")] + UP_WARN_MSG_URGE_TODO_ACK = 0x1401, + /// + ///上报报警信息 + /// + [Description("上报报警信息")] + UP_WARN_MSG_ADPT_INFO = 0x1402, + /// + ///主动上报报警处理结果信息 + /// + [Description("主动上报报警处理结果信息")] + UP_WARN_MSG_ADPT_TODO_INFO = 0x1403, + #endregion + + #region 从链路报警信息交互消息 DOWN_WARN_MSG + /// + ///报警督办请求 + /// + [Description("报警督办请求")] + DOWN_WARN_MSG_URGE_TODO_REQ = 0x9401, + /// + ///报警预警 + /// + [Description("报警预警")] + DOWN_WARN_MSG_INFORM_TIPS = 0x9402, + /// + ///实时交换报警信息 + /// + [Description("实时交换报警信息")] + DOWN_WARN_MSG_EXG_INFORM = 0x9403, + #endregion + + #region 主链路车辆监管消息 UP_CTRL_MSG + /// + ///车辆单向监听应答 + /// + [Description("车辆单向监听应答")] + UP_CTRL_MSG_MONITOR_VEHICLE_ACK = 0x1501, + /// + ///车辆拍照应答 + /// + [Description("车辆拍照应答")] + UP_CTRL_MSG_TAKE_PHOTO_ACK = 0x1502, + /// + ///下发车辆报文应答 + /// + [Description("下发车辆报文应答")] + UP_CTRL_MSG_TEXT_INFO_ACK = 0x1503, + /// + ///上报车辆行驶记录应答 + /// + [Description("上报车辆行驶记录应答")] + UP_CTRL_MSG_TAKE_TRAVEL_ACK = 0x1504, + /// + ///车辆应急接入监管平台应答消息 + /// + [Description("车辆应急接入监管平台应答消息")] + UP_CTRL_MSG_EMERGENCY_MONITORING_ACK = 0x1505, + #endregion + + #region 从链路车辆监管消息 DOWN_CTRL_MSG + /// + ///车辆单向监听请求 + /// + [Description("车辆单向监听请求")] + DOWN_CTRL_MSG_MONITOR_VEHICLE_REQ = 0x9501, + /// + ///车辆拍照请求 + /// + [Description("车辆拍照请求")] + DOWN_CTRL_MSG_TAKE_PHOTO_REQ = 0x9502, + /// + ///下发车辆报文请求 + /// + [Description("下发车辆报文请求")] + DOWN_CTRL_MSG_TEXT_INFO = 0x9503, + /// + ///上报车辆行驶记录请求 + /// + [Description("上报车辆行驶记录请求")] + DOWN_CTRL_MSG_TAKE_TRAVEL_REQ = 0x9504, + /// + ///车辆应急接入监管平台请求消息 + /// + [Description("车辆应急接入监管平台请求消息")] + DOWN_CTRL_MSG_EMERGENCY_MONITORING_REQ = 0x9505, + #endregion + + #region 主链路静态信息交换消息 UP_BASE_MSG + /// + ///补报车辆静态信息应答 + /// + [Description("补报车辆静态信息应答")] + UP_BASE_MSG_VEHICLE_ADDED_ACK = 0x1601, + #endregion + + #region 从链路静态信息交换消息 DOWN_BASE_MSG + /// + ///补报车辆静态信息请求 + /// + [Description("补报车辆静态信息请求")] + DOWN_BASE_MSG_VEHICLE_ADDED = 0x9601, + #endregion + } +} diff --git a/src/JT809.Protocol/JT809.Protocol.csproj b/src/JT809.Protocol/JT809.Protocol.csproj new file mode 100644 index 0000000..72764a6 --- /dev/null +++ b/src/JT809.Protocol/JT809.Protocol.csproj @@ -0,0 +1,7 @@ + + + + netstandard2.0 + + +