Exemple #1
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }