Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

87 рядки
3.2 KiB

  1. using JT808.Protocol.Formatters;
  2. using JT808.Protocol.MessagePack;
  3. namespace JT808.Protocol.MessageBody
  4. {
  5. /// <summary>
  6. /// 终端注册
  7. /// </summary>
  8. public class JT808_0x0100 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x0100>
  9. {
  10. public override ushort MsgId { get; } = 0x0100;
  11. /// <summary>
  12. /// 省域 ID
  13. /// 标示终端安装车辆所在的省域,0 保留,由平台取默
  14. /// 认值。省域 ID 采用 GB/T 2260 中规定的行政区划代
  15. /// 码六位中前两位
  16. /// </summary>
  17. public ushort AreaID { get; set; }
  18. /// <summary>
  19. /// 市县域 ID
  20. /// 标示终端安装车辆所在的市域和县域,0 保留,由平
  21. /// 台取默认值。市县域 ID 采用 GB/T 2260 中规定的行
  22. /// 政区划代码六位中后四位。
  23. /// </summary>
  24. public ushort CityOrCountyId { get; set; }
  25. /// <summary>
  26. /// 制造商 ID
  27. /// 5 个字节,终端制造商编码
  28. /// </summary>
  29. public string MakerId { get; set; }
  30. /// <summary>
  31. /// 终端型号
  32. /// 20 个字节,此终端型号由制造商自行定义,位数不
  33. /// 足时,后补“0X00”。
  34. /// </summary>
  35. public string TerminalModel { get; set; }
  36. /// <summary>
  37. /// 终端 ID
  38. /// 7 个字节,由大写字母和数字组成,此终端 ID 由制
  39. /// 造商自行定义,位数不足时,后补“0X00”。
  40. /// </summary>
  41. public string TerminalId { get; set; }
  42. /// <summary>
  43. /// 车牌颜色
  44. /// 车牌颜色,按照 JT/T415-2006 的 5.4.12。
  45. /// 未上牌时,取值为 0。
  46. /// </summary>
  47. public byte PlateColor { get; set; }
  48. /// <summary>
  49. /// 车辆标识
  50. /// 车牌颜色为 0 时,表示车辆 VIN;
  51. /// 否则,表示公安交通管理部门颁发的机动车号牌。
  52. /// </summary>
  53. public string PlateNo { get; set; }
  54. public JT808_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  55. {
  56. JT808_0x0100 jT808_0X0100 = new JT808_0x0100();
  57. jT808_0X0100.AreaID = reader.ReadUInt16();
  58. jT808_0X0100.CityOrCountyId = reader.ReadUInt16();
  59. jT808_0X0100.MakerId = reader.ReadString(5);
  60. jT808_0X0100.TerminalModel = reader.ReadString(20);
  61. jT808_0X0100.TerminalId = reader.ReadString(7);
  62. jT808_0X0100.PlateColor = reader.ReadByte();
  63. jT808_0X0100.PlateNo = reader.ReadRemainStringContent();
  64. return jT808_0X0100;
  65. }
  66. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0100 value, IJT808Config config)
  67. {
  68. writer.WriteUInt16(value.AreaID);
  69. writer.WriteUInt16(value.CityOrCountyId);
  70. writer.WriteString(value.MakerId.PadRight(5, '0'));
  71. writer.WriteString(value.TerminalModel.PadRight(20, '0'));
  72. writer.WriteString(value.TerminalId.PadRight(7, '0'));
  73. writer.WriteByte(value.PlateColor);
  74. writer.WriteString(value.PlateNo);
  75. }
  76. }
  77. }