From 13f75a4305d682009049c8ad68a2373a20c0b9b6 Mon Sep 17 00:00:00 2001 From: SmallChi <564952747@qq.com> Date: Sun, 20 Jan 2019 22:34:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86=E6=96=B0=E8=83=BD=E6=BA=90?= =?UTF-8?q?=E5=8D=8F=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/JTNE.Protocol/JTNE.Protocol.csproj | 35 ++++++++++++++++ src/JTNE.Protocol/JTNE.Protocol.xml | 56 ++++++++++++++++++++++++++ src/JTNE.Protocol/JTNEPackage.cs | 51 +++++++++++++++++++++++ src/JTNewEnergy.sln | 25 ++++++++++++ 4 files changed, 167 insertions(+) create mode 100644 src/JTNE.Protocol/JTNE.Protocol.csproj create mode 100644 src/JTNE.Protocol/JTNE.Protocol.xml create mode 100644 src/JTNE.Protocol/JTNEPackage.cs create mode 100644 src/JTNewEnergy.sln diff --git a/src/JTNE.Protocol/JTNE.Protocol.csproj b/src/JTNE.Protocol/JTNE.Protocol.csproj new file mode 100644 index 0000000..6c50f01 --- /dev/null +++ b/src/JTNE.Protocol/JTNE.Protocol.csproj @@ -0,0 +1,35 @@ + + + + netstandard2.0 + latest + Copyright 2018. + SmallChi + JTNewEnergy + JTNewEnergy + JTNewEnergy协议、GBNewEnergy协议、电动汽车远程服务与管理系统平台数据交换 + JTNewEnergy协议、GBNewEnergy协议、电动汽车远程服务与管理系统平台数据交换 + false + https://github.com/SmallChi/JTNewEnergy + https://github.com/SmallChi/JTNewEnergy + https://github.com/SmallChi/JTNewEnergy/blob/master/LICENSE + true + 1.0.0 + + + + D:\My Project\JTNewEnergy\src\JTNE.Protocol\JTNE.Protocol.xml + + + + D:\My Project\JTNewEnergy\src\JTNE.Protocol\JTNE.Protocol.xml + + + + + + + + + + diff --git a/src/JTNE.Protocol/JTNE.Protocol.xml b/src/JTNE.Protocol/JTNE.Protocol.xml new file mode 100644 index 0000000..dc0285d --- /dev/null +++ b/src/JTNE.Protocol/JTNE.Protocol.xml @@ -0,0 +1,56 @@ + + + + JTNE.Protocol + + + + + 新能源包 + + + + + 固定为24个字节长度 + + + + + 起始符 + 0x23 + + + + + 命令标识 + + + + + 应答标志 + + + + + 车辆识别码 + + + + + 数据加密方式 + 0x01:数据不加密;0x02:数据经过 RSA 算法加密;0x03:数据经过 AES128 位算法加密;“0xFE”表示异常,“0xFF”表示无效 + + + + + 数据单元长度是数据单元的总字节数,有效值范围:0-65531 + + + + + 采用BCC(异或检验)法,校验范围从命令单元的第一个字节开始,同后一个字节异或,直到校验码前一个字节为止, + 校验码占用一个字节,当数据单元存在加密时,应先加密后检验,先校验后解密 + + + + diff --git a/src/JTNE.Protocol/JTNEPackage.cs b/src/JTNE.Protocol/JTNEPackage.cs new file mode 100644 index 0000000..df5ff63 --- /dev/null +++ b/src/JTNE.Protocol/JTNEPackage.cs @@ -0,0 +1,51 @@ +using System; +using System.IO; + +namespace JTNE.Protocol +{ + /// + /// 新能源包 + /// + public class JTNEPackage + { + /// + /// 固定为24个字节长度 + /// + public const int HeaderFixedByteLength = 24; + /// + /// 起始符 + /// 0x23 + /// + public string BeginFlag { get; set; } = "##"; + /// + /// 命令标识 + /// + public byte MsgId { get; set; } + /// + /// 应答标志 + /// + public byte AskId { get; set; } + /// + /// 车辆识别码 + /// + public string VIN { get; set; } + /// + /// 数据加密方式 + /// 0x01:数据不加密;0x02:数据经过 RSA 算法加密;0x03:数据经过 AES128 位算法加密;“0xFE”表示异常,“0xFF”表示无效 + /// + public byte EncryptMethod { get; set; } + /// + /// 数据单元长度是数据单元的总字节数,有效值范围:0-65531 + /// + public ushort DataUnitLength { get; set; } + ///// + ///// 数据体 + ///// + //public NEBodies Bodies { get; protected set; } + /// + /// 采用BCC(异或检验)法,校验范围从命令单元的第一个字节开始,同后一个字节异或,直到校验码前一个字节为止, + /// 校验码占用一个字节,当数据单元存在加密时,应先加密后检验,先校验后解密 + /// + public byte BCCCode { get; set; } + } +} diff --git a/src/JTNewEnergy.sln b/src/JTNewEnergy.sln new file mode 100644 index 0000000..1d97cf2 --- /dev/null +++ b/src/JTNewEnergy.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28407.52 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JTNE.Protocol", "JTNE.Protocol\JTNE.Protocol.csproj", "{5B164F58-141D-474E-A82E-672A1C252029}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5B164F58-141D-474E-A82E-672A1C252029}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5B164F58-141D-474E-A82E-672A1C252029}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5B164F58-141D-474E-A82E-672A1C252029}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5B164F58-141D-474E-A82E-672A1C252029}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E7AF20B3-4327-4DF7-B503-9FE08AA92A75} + EndGlobalSection +EndGlobal