Beispiel #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_0x0900_0xF8 value = new JT808_0x0900_0xF8();

            value.USBMessageCount = reader.ReadByte();
            writer.WriteNumber($"[{value.USBMessageCount.ReadNumber()}]消息列表总数", value.USBMessageCount);
            if (value.USBMessageCount > 0)
            {
                writer.WriteStartArray("消息列表");
                for (int i = 0; i < value.USBMessageCount; i++)
                {
                    writer.WriteStartObject();
                    JT808_0x0900_0xF8_USB item = new JT808_0x0900_0xF8_USB();
                    item.USBID = reader.ReadByte();
                    writer.WriteNumber($"[{item.USBID.ReadNumber()}]外设ID", item.USBID);
                    item.MessageLength = reader.ReadByte();
                    writer.WriteNumber($"[{item.MessageLength.ReadNumber()}]消息长度", item.MessageLength);
                    item.CompantNameLength = reader.ReadByte();
                    writer.WriteNumber($"[{item.CompantNameLength.ReadNumber()}]公司名称长度", item.CompantNameLength);

                    string compantNameHex = reader.ReadVirtualArray(item.CompantNameLength).ToArray().ToHexString();
                    item.CompantName = reader.ReadString(item.CompantNameLength);
                    writer.WriteString($"[{compantNameHex}]公司名称", item.CompantName);

                    item.ProductModelLength = reader.ReadByte();
                    writer.WriteNumber($"[{item.ProductModelLength.ReadNumber()}]产品型号长度", item.ProductModelLength);

                    string productModelHex = reader.ReadVirtualArray(item.ProductModelLength).ToArray().ToHexString();
                    item.ProductModel = reader.ReadString(item.ProductModelLength);
                    writer.WriteString($"[{productModelHex}]产品型号", item.ProductModel);

                    item.HardwareVersionNumberLength = reader.ReadByte();
                    writer.WriteNumber($"[{item.HardwareVersionNumberLength.ReadNumber()}]硬件版本号长度", item.HardwareVersionNumberLength);
                    string hardwareVersionNumberHex = reader.ReadVirtualArray(item.HardwareVersionNumberLength).ToArray().ToHexString();
                    item.HardwareVersionNumber = reader.ReadString(item.HardwareVersionNumberLength);
                    writer.WriteString($"[{hardwareVersionNumberHex}]硬件版本号", item.HardwareVersionNumber);

                    item.SoftwareVersionNumberLength = reader.ReadByte();
                    writer.WriteNumber($"[{item.SoftwareVersionNumberLength.ReadNumber()}]软件版本号长度", item.SoftwareVersionNumberLength);
                    string softwareVersionNumberHex = reader.ReadVirtualArray(item.SoftwareVersionNumberLength).ToArray().ToHexString();
                    item.SoftwareVersionNumber = reader.ReadString(item.SoftwareVersionNumberLength);
                    writer.WriteString($"[{softwareVersionNumberHex}]软件版本号", item.SoftwareVersionNumber);

                    item.DevicesIDLength = reader.ReadByte();
                    writer.WriteNumber($"[{item.DevicesIDLength.ReadNumber()}]设备ID长度", item.DevicesIDLength);
                    string devicesIDHex = reader.ReadVirtualArray(item.DevicesIDLength).ToArray().ToHexString();
                    item.DevicesID = reader.ReadString(item.DevicesIDLength);
                    writer.WriteString($"[{devicesIDHex}]设备ID", item.DevicesID);

                    item.CustomerCodeLength = reader.ReadByte();
                    writer.WriteNumber($"[{item.CustomerCodeLength.ReadNumber()}]客户代码长度", item.CustomerCodeLength);
                    string customerCodeHex = reader.ReadVirtualArray(item.CustomerCodeLength).ToArray().ToHexString();
                    item.CustomerCode = reader.ReadString(item.CustomerCodeLength);
                    writer.WriteString($"[{customerCodeHex}]客户代码", item.CustomerCode);

                    writer.WriteEndObject();
                }
                writer.WriteEndArray();
            }
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x0900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8();

            value.USBMessageCount = reader.ReadByte();
            if (value.USBMessageCount > 0)
            {
                value.USBMessages = new List <JT808_0x0900_0xF8_USB>();
                for (int i = 0; i < value.USBMessageCount; i++)
                {
                    JT808_0x0900_0xF8_USB item = new JT808_0x0900_0xF8_USB();
                    item.USBID                       = reader.ReadByte();
                    item.MessageLength               = reader.ReadByte();
                    item.CompantNameLength           = reader.ReadByte();
                    item.CompantName                 = reader.ReadASCII(item.CompantNameLength);
                    item.ProductModelLength          = reader.ReadByte();
                    item.ProductModel                = reader.ReadASCII(item.ProductModelLength);
                    item.HardwareVersionNumberLength = reader.ReadByte();
                    item.HardwareVersionNumber       = reader.ReadASCII(item.HardwareVersionNumberLength);
                    item.SoftwareVersionNumberLength = reader.ReadByte();
                    item.SoftwareVersionNumber       = reader.ReadASCII(item.SoftwareVersionNumberLength);
                    item.DevicesIDLength             = reader.ReadByte();
                    item.DevicesID                   = reader.ReadASCII(item.DevicesIDLength);
                    item.CustomerCodeLength          = reader.ReadByte();
                    item.CustomerCode                = reader.ReadASCII(item.CustomerCodeLength);
                    value.USBMessages.Add(item);
                }
            }
            return(value);
        }