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

62 рядки
2.7 KiB

  1. using JT808.Protocol.Enums;
  2. using JT808.Protocol.Formatters;
  3. using JT808.Protocol.MessagePack;
  4. using JT808.Protocol.Metadata;
  5. using System.Collections.Generic;
  6. namespace JT808.Protocol.MessageBody
  7. {
  8. /// <summary>
  9. /// 设置电话本
  10. /// </summary>
  11. public class JT808_0x8401 : JT808Bodies, IJT808MessagePackFormatter<JT808_0x8401>
  12. {
  13. public override ushort MsgId { get; } = 0x8401;
  14. /// <summary>
  15. /// 设置类型
  16. /// </summary>
  17. public JT808SettingTelephoneBook SettingTelephoneBook { get; set; }
  18. /// <summary>
  19. /// 联系人总数
  20. /// </summary>
  21. public byte ContactCount { get; set; }
  22. /// <summary>
  23. /// 联系人项
  24. /// </summary>
  25. public IList<JT808ContactProperty> JT808ContactProperties { get; set; }
  26. public JT808_0x8401 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  27. {
  28. JT808_0x8401 jT808_0X8401 = new JT808_0x8401();
  29. jT808_0X8401.SettingTelephoneBook = (JT808SettingTelephoneBook)reader.ReadByte();
  30. jT808_0X8401.ContactCount = reader.ReadByte();
  31. List<JT808ContactProperty> jT808_0X8401s = new List<JT808ContactProperty>();
  32. for (var i = 0; i < jT808_0X8401.ContactCount; i++)
  33. {
  34. JT808ContactProperty jT808ContactProperty = new JT808ContactProperty();
  35. jT808ContactProperty.TelephoneBookContactType = (JT808TelephoneBookContactType)reader.ReadByte();
  36. jT808ContactProperty.PhoneNumberLength = reader.ReadByte();
  37. jT808ContactProperty.PhoneNumber = reader.ReadString(jT808ContactProperty.PhoneNumberLength);
  38. jT808ContactProperty.ContactLength = reader.ReadByte();
  39. jT808ContactProperty.Contact = reader.ReadString(jT808ContactProperty.ContactLength);
  40. jT808_0X8401s.Add(jT808ContactProperty);
  41. }
  42. jT808_0X8401.JT808ContactProperties = jT808_0X8401s;
  43. return jT808_0X8401;
  44. }
  45. public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8401 value, IJT808Config config)
  46. {
  47. writer.WriteByte((byte)value.SettingTelephoneBook);
  48. writer.WriteByte((byte)value.JT808ContactProperties.Count);
  49. foreach (var item in value.JT808ContactProperties)
  50. {
  51. writer.WriteByte((byte)item.TelephoneBookContactType);
  52. writer.WriteByte((byte)item.PhoneNumber.Length);
  53. writer.WriteString(item.PhoneNumber);
  54. writer.WriteByte((byte)item.Contact.Length);
  55. writer.WriteString(item.Contact);
  56. }
  57. }
  58. }
  59. }