Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

66 righe
3.3 KiB

  1. using System.Text.Json;
  2. using JT808.Protocol.Attributes;
  3. using JT808.Protocol.Extensions;
  4. using JT808.Protocol.Formatters;
  5. using JT808.Protocol.Interfaces;
  6. using JT808.Protocol.MessagePack;
  7. namespace JT808.Protocol.MessageBody
  8. {
  9. /// <summary>
  10. /// GNSS 定位模式,定义如下:
  11. /// bit0,0:禁用 GPS 定位, 1:启用 GPS 定位;
  12. /// bit1,0:禁用北斗定位, 1:启用北斗定位;
  13. /// bit2,0:禁用 GLONASS 定位, 1:启用 GLONASS 定位;
  14. /// bit3,0:禁用 Galileo 定位, 1:启用 Galileo 定位。
  15. /// </summary>
  16. public class JT808_0x8103_0x0090 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0090>, IJT808Analyze
  17. {
  18. public override uint ParamId { get; set; } = 0x0090;
  19. /// <summary>
  20. /// 数据 长度
  21. /// </summary>
  22. public override byte ParamLength { get; set; }
  23. /// <summary>
  24. /// GNSS 定位模式,定义如下:
  25. /// bit0,0:禁用 GPS 定位, 1:启用 GPS 定位;
  26. /// bit1,0:禁用北斗定位, 1:启用北斗定位;
  27. /// bit2,0:禁用 GLONASS 定位, 1:启用 GLONASS 定位;
  28. /// bit3,0:禁用 Galileo 定位, 1:启用 Galileo 定位。
  29. /// </summary>
  30. public byte ParamValue { get; set; }
  31. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  32. {
  33. JT808_0x8103_0x0090 jT808_0x8103_0x0090 = new JT808_0x8103_0x0090();
  34. jT808_0x8103_0x0090.ParamId = reader.ReadUInt32();
  35. jT808_0x8103_0x0090.ParamLength = reader.ReadByte();
  36. jT808_0x8103_0x0090.ParamValue = reader.ReadByte();
  37. writer.WriteNumber($"[{ jT808_0x8103_0x0090.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0090.ParamId);
  38. writer.WriteNumber($"[{jT808_0x8103_0x0090.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0090.ParamLength);
  39. writer.WriteStartArray($"[{ jT808_0x8103_0x0090.ParamValue.ReadNumber()}]参数值[GNSS定位模式]");
  40. writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 01) > 0 ? "启用GPS定位" : "禁用GPS定位");
  41. writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 02) > 0 ? "启用北斗定位" : "禁用北斗定位");
  42. writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 04) > 0 ? "启用GLONASS定位" : "禁用GLONASS定位");
  43. writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 08) > 0 ? "启用Galileo定位" : "禁用Galileo定位");
  44. writer.WriteEndArray();
  45. }
  46. public JT808_0x8103_0x0090 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  47. {
  48. JT808_0x8103_0x0090 jT808_0x8103_0x0090 = new JT808_0x8103_0x0090();
  49. jT808_0x8103_0x0090.ParamId = reader.ReadUInt32();
  50. jT808_0x8103_0x0090.ParamLength = reader.ReadByte();
  51. jT808_0x8103_0x0090.ParamValue = reader.ReadByte();
  52. return jT808_0x8103_0x0090;
  53. }
  54. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0x0090 value, IJT808Config config)
  55. {
  56. writer.WriteUInt32(value.ParamId);
  57. writer.WriteByte(value.ParamLength);
  58. writer.WriteByte(value.ParamValue);
  59. }
  60. }
  61. }