/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x8401 value = new JT808_0x8401(); value.SettingTelephoneBook = (JT808SettingTelephoneBook)reader.ReadByte(); writer.WriteNumber($"[{((byte)value.SettingTelephoneBook).ReadNumber()}]设置类型", (byte)value.SettingTelephoneBook); value.ContactCount = reader.ReadByte(); writer.WriteNumber($"[{value.ContactCount.ReadNumber()}]联系人总数", value.ContactCount); writer.WriteStartArray("联系人项"); for (var i = 0; i < value.ContactCount; i++) { writer.WriteStartObject(); JT808ContactProperty jT808ContactProperty = new JT808ContactProperty(); jT808ContactProperty.TelephoneBookContactType = (JT808TelephoneBookContactType)reader.ReadByte(); writer.WriteNumber($"[{((byte)jT808ContactProperty.TelephoneBookContactType).ReadNumber()}]{jT808ContactProperty.TelephoneBookContactType.ToString()}", (byte)jT808ContactProperty.TelephoneBookContactType); jT808ContactProperty.PhoneNumberLength = reader.ReadByte(); writer.WriteNumber($"[{jT808ContactProperty.PhoneNumberLength.ReadNumber()}]号码长度", jT808ContactProperty.PhoneNumberLength); var pnoBuffer = reader.ReadVirtualArray(jT808ContactProperty.PhoneNumberLength); jT808ContactProperty.PhoneNumber = reader.ReadString(jT808ContactProperty.PhoneNumberLength); writer.WriteString($"[{pnoBuffer.ToArray().ToHexString()}]电话号码", jT808ContactProperty.PhoneNumber); jT808ContactProperty.ContactLength = reader.ReadByte(); writer.WriteNumber($"[{jT808ContactProperty.ContactLength.ReadNumber()}]联系人长度", jT808ContactProperty.ContactLength); var contactBuffer = reader.ReadVirtualArray(jT808ContactProperty.ContactLength); jT808ContactProperty.Contact = reader.ReadString(jT808ContactProperty.ContactLength); writer.WriteString($"[{contactBuffer.ToArray().ToHexString()}]联系人", jT808ContactProperty.Contact); writer.WriteEndObject(); } writer.WriteEndArray(); }
public JT808_0x8401 Deserialize(ReadOnlySpan <byte> bytes, out int readSize, IJT808Config config) { int offset = 0; JT808_0x8401 jT808_0X8401 = new JT808_0x8401 { SettingTelephoneBook = (JT808SettingTelephoneBook)JT808BinaryExtensions.ReadByteLittle(bytes, ref offset), ContactCount = JT808BinaryExtensions.ReadByteLittle(bytes, ref offset) }; List <JT808ContactProperty> jT808_0X8401s = new List <JT808ContactProperty>(); for (var i = 0; i < jT808_0X8401.ContactCount; i++) { JT808ContactProperty jT808ContactProperty = new JT808ContactProperty { TelephoneBookContactType = (JT808TelephoneBookContactType)JT808BinaryExtensions.ReadByteLittle(bytes, ref offset), PhoneNumberLength = JT808BinaryExtensions.ReadByteLittle(bytes, ref offset) }; jT808ContactProperty.PhoneNumber = JT808BinaryExtensions.ReadStringLittle(bytes, ref offset, jT808ContactProperty.PhoneNumberLength); jT808ContactProperty.ContactLength = JT808BinaryExtensions.ReadByteLittle(bytes, ref offset); jT808ContactProperty.Contact = JT808BinaryExtensions.ReadStringLittle(bytes, ref offset, jT808ContactProperty.ContactLength); jT808_0X8401s.Add(jT808ContactProperty); } jT808_0X8401.JT808ContactProperties = jT808_0X8401s; readSize = offset; return(jT808_0X8401); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x8401 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8401 jT808_0X8401 = new JT808_0x8401(); jT808_0X8401.SettingTelephoneBook = (JT808SettingTelephoneBook)reader.ReadByte(); jT808_0X8401.ContactCount = reader.ReadByte(); List <JT808ContactProperty> jT808_0X8401s = new List <JT808ContactProperty>(); for (var i = 0; i < jT808_0X8401.ContactCount; i++) { JT808ContactProperty jT808ContactProperty = new JT808ContactProperty(); jT808ContactProperty.TelephoneBookContactType = (JT808TelephoneBookContactType)reader.ReadByte(); jT808ContactProperty.PhoneNumberLength = reader.ReadByte(); jT808ContactProperty.PhoneNumber = reader.ReadString(jT808ContactProperty.PhoneNumberLength); jT808ContactProperty.ContactLength = reader.ReadByte(); jT808ContactProperty.Contact = reader.ReadString(jT808ContactProperty.ContactLength); jT808_0X8401s.Add(jT808ContactProperty); } jT808_0X8401.JT808ContactProperties = jT808_0X8401s; return(jT808_0X8401); }