選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

115 行
5.3 KiB

  1. using JT808.Protocol.Attributes;
  2. using JT808.Protocol.Formatters;
  3. using JT808.Protocol.Formatters.MessageBodyFormatters;
  4. using JT808.Protocol.MessagePack;
  5. namespace JT808.Protocol.MessageBody
  6. {
  7. /// <summary>
  8. /// 查询终端属性应答
  9. /// </summary>
  10. [JT808Formatter(typeof(JT808_0x0107_Formatter))]
  11. public class JT808_0x0107 : JT808Bodies,IJT808MessagePackFormatter<JT808_0x0107>
  12. {
  13. /// <summary>
  14. /// 终端类型
  15. /// bit0,0:不适用客运车辆,1:适用客运车辆;
  16. /// bit1,0:不适用危险品车辆,1:适用危险品车辆;
  17. /// bit2,0:不适用普通货运车辆,1:适用普通货运车辆;
  18. /// bit3,0:不适用出租车辆,1:适用出租车辆;
  19. /// bit6,0:不支持硬盘录像,1:支持硬盘录像;
  20. /// bit7,0:一体机,1:分体机
  21. /// </summary>
  22. public ushort TerminalType { get; set; }
  23. /// <summary>
  24. /// 制造商 ID
  25. /// 5 个字节,终端制造商编码
  26. /// </summary>
  27. public string MakerId { get; set; }
  28. /// <summary>
  29. /// 终端型号
  30. /// BYTE[20]
  31. /// 20 个字节,此终端型号由制造商自行定义,位数不足时,后补“0X00”。
  32. /// </summary>
  33. public string TerminalModel { get; set; }
  34. /// <summary>
  35. /// 终端ID
  36. /// BYTE[7]
  37. /// 7 个字节,由大写字母和数字组成,此终端 ID 由制造商自行定义,位数不足时,后补“0X00”
  38. /// </summary>
  39. public string TerminalId { get; set; }
  40. /// <summary>
  41. /// 终端 SIM 卡 ICCID
  42. /// BCD[10]
  43. /// </summary>
  44. public string Terminal_SIM_ICCID { get; set; }
  45. /// <summary>
  46. /// 终端硬件版本号长度
  47. /// </summary>
  48. public byte Terminal_Hardware_Version_Length { get; set; }
  49. /// <summary>
  50. /// 终端硬件版本号
  51. /// </summary>
  52. public string Terminal_Hardware_Version_Num { get; set; }
  53. /// <summary>
  54. /// 终端固件版本号长度
  55. /// </summary>
  56. public byte Terminal_Firmware_Version_Length { get; set; }
  57. /// <summary>
  58. /// 终端固件版本号
  59. /// </summary>
  60. public string Terminal_Firmware_Version_Num { get; set; }
  61. /// <summary>
  62. /// GNSS 模块属性
  63. /// bit0,0:不支持 GPS 定位, 1:支持 GPS 定位;
  64. /// bit1,0:不支持北斗定位, 1:支持北斗定位;
  65. /// bit2,0:不支持 GLONASS 定位, 1:支持 GLONASS 定位;
  66. /// bit3,0:不支持 Galileo 定位, 1:支持 Galileo 定位
  67. /// </summary>
  68. public byte GNSSModule { get; set; }
  69. /// <summary>
  70. /// 通信模块属性
  71. /// bit0,0:不支持GPRS通信, 1:支持GPRS通信;
  72. /// bit1,0:不支持CDMA通信, 1:支持CDMA通信;
  73. /// bit2,0:不支持TD-SCDMA通信, 1:支持TD-SCDMA通信;
  74. /// bit3,0:不支持WCDMA通信, 1:支持WCDMA通信;
  75. /// bit4,0:不支持CDMA2000通信, 1:支持CDMA2000通信。
  76. /// bit5,0:不支持TD-LTE通信, 1:支持TD-LTE通信;
  77. /// bit7,0:不支持其他通信方式, 1:支持其他通信方式
  78. /// </summary>
  79. public byte CommunicationModule { get; set; }
  80. public JT808_0x0107 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  81. {
  82. JT808_0x0107 jT808_0X0107 = new JT808_0x0107();
  83. jT808_0X0107.TerminalType = reader.ReadUInt16();
  84. jT808_0X0107.MakerId = reader.ReadString(5);
  85. jT808_0X0107.TerminalModel = reader.ReadString(20);
  86. jT808_0X0107.TerminalId = reader.ReadString(7);
  87. jT808_0X0107.Terminal_SIM_ICCID = reader.ReadBCD(10, config.Trim);
  88. jT808_0X0107.Terminal_Hardware_Version_Length = reader.ReadByte();
  89. jT808_0X0107.Terminal_Hardware_Version_Num = reader.ReadString(jT808_0X0107.Terminal_Hardware_Version_Length);
  90. jT808_0X0107.Terminal_Firmware_Version_Length = reader.ReadByte();
  91. jT808_0X0107.Terminal_Firmware_Version_Num = reader.ReadString(jT808_0X0107.Terminal_Firmware_Version_Length);
  92. jT808_0X0107.GNSSModule = reader.ReadByte();
  93. jT808_0X0107.CommunicationModule = reader.ReadByte();
  94. return jT808_0X0107;
  95. }
  96. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0107 value, IJT808Config config)
  97. {
  98. writer.WriteUInt16(value.TerminalType);
  99. writer.WriteString(value.MakerId.PadRight(5, '0'));
  100. writer.WriteString(value.TerminalModel.PadRight(20, '0'));
  101. writer.WriteString(value.TerminalId.PadRight(7, '0'));
  102. writer.WriteBCD(value.Terminal_SIM_ICCID, 10);
  103. writer.WriteByte((byte)value.Terminal_Hardware_Version_Num.Length);
  104. writer.WriteString(value.Terminal_Hardware_Version_Num);
  105. writer.WriteByte((byte)value.Terminal_Firmware_Version_Num.Length);
  106. writer.WriteString(value.Terminal_Firmware_Version_Num);
  107. writer.WriteByte(value.GNSSModule);
  108. writer.WriteByte(value.CommunicationModule);
  109. }
  110. }
  111. }