You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 rivejä
2.1 KiB

  1. using JTNE.Protocol.Attributes;
  2. using JTNE.Protocol.Enums;
  3. using JTNE.Protocol.Formatters;
  4. using System;
  5. using System.IO;
  6. namespace JTNE.Protocol
  7. {
  8. /// <summary>
  9. /// 新能源包
  10. /// </summary>
  11. [JTNEFormatter(typeof(JTNEPackageFormatter))]
  12. public class JTNEPackage
  13. {
  14. public const int FixedHeaderLength = 24;
  15. public const byte BeginFlag = 0x23;
  16. /// <summary>
  17. /// 起始符1
  18. /// </summary>
  19. public byte BeginFlag1 { get; set; } = BeginFlag;
  20. /// <summary>
  21. /// 起始符2
  22. /// </summary>
  23. public byte BeginFlag2 { get; set; } = BeginFlag;
  24. /// <summary>
  25. /// 命令标识
  26. /// <see cref="JTNE.Protocol.Enums.JTNEMsgId"/>
  27. /// </summary>
  28. public JTNEMsgId MsgId { get; set; }
  29. /// <summary>
  30. /// 应答标志
  31. /// <see cref="JTNE.Protocol.Enums.JTNEAskId"/>
  32. /// </summary>
  33. public JTNEAskId AskId { get; set; }
  34. /// <summary>
  35. /// 车辆识别码
  36. /// </summary>
  37. public string VIN { get; set; }
  38. /// <summary>
  39. /// 数据加密方式 (默认不加密)
  40. /// 0x01:数据不加密;0x02:数据经过 RSA 算法加密;0x03:数据经过 AES128 位算法加密;“0xFE”表示异常,“0xFF”表示无效
  41. /// <see cref="JTNE.Protocol.Enums.JTNEEncryptMethod"/>
  42. /// </summary>
  43. public JTNEEncryptMethod EncryptMethod { get; set; } = JTNEEncryptMethod.None;
  44. /// <summary>
  45. /// 数据单元长度是数据单元的总字节数,有效值范围:0-65531
  46. /// </summary>
  47. public ushort DataUnitLength { get; set; }
  48. /// <summary>
  49. /// 数据体
  50. /// </summary>
  51. public JTNEBodies Bodies { get; set; }
  52. /// <summary>
  53. /// 采用BCC(异或检验)法,校验范围从命令单元的第一个字节开始,同后一个字节异或,直到校验码前一个字节为止,
  54. /// 校验码占用一个字节,当数据单元存在加密时,应先加密后检验,先校验后解密
  55. /// </summary>
  56. public byte BCCCode { get; set; }
  57. }
  58. }