Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x0900_0xF7 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0900_0xF7 value = new JT808_0x0900_0xF7();

            value.USBMessageCount = reader.ReadByte();
            if (value.USBMessageCount > 0)
            {
                value.USBMessages = new List <JT808_0x0900_0xF7_USB>();
                for (int i = 0; i < value.USBMessageCount; i++)
                {
                    JT808_0x0900_0xF7_USB item = new JT808_0x0900_0xF7_USB();
                    item.USBID            = reader.ReadByte();
                    item.MessageLength    = reader.ReadByte();
                    item.WorkingCondition = reader.ReadByte();
                    item.AlarmStatus      = reader.ReadUInt32();
                    value.USBMessages.Add(item);
                }
            }
            return(value);
        }
Esempio n. 2
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_0xF7 value = new JT808_0x0900_0xF7();

            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_0xF7_USB item = new JT808_0x0900_0xF7_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.WorkingCondition = reader.ReadByte();
                    var workingCondition = (WorkingConditionType)item.WorkingCondition;
                    writer.WriteNumber($"[{item.WorkingCondition.ReadNumber()}]工作状态-{workingCondition.ToString()}", item.WorkingCondition);
                    item.AlarmStatus = reader.ReadUInt32();
                    writer.WriteNumber($"[{item.AlarmStatus.ReadNumber()}]报警状态", item.AlarmStatus);
                    var alarmStatusBits = Convert.ToString(item.AlarmStatus, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan();
                    writer.WriteStartObject($"报警状态对象[{alarmStatusBits.ToString()}]");
                    writer.WriteString($"[bit12~bit31]预留", alarmStatusBits.Slice(12).ToString());
                    writer.WriteString($"]bit11]定位模块异常", alarmStatusBits[11].ToString());
                    writer.WriteString($"[bit10]通讯模块异常", alarmStatusBits[10].ToString());
                    writer.WriteString($"[bit6~bit9]预留", alarmStatusBits.Slice(6, 4).ToString());
                    writer.WriteString($"[bit5]电池异常", alarmStatusBits[5].ToString());
                    writer.WriteString($"[bit4]扬声器异常", alarmStatusBits[4].ToString());
                    writer.WriteString($"[bit3]红外补光异常", alarmStatusBits[3].ToString());
                    writer.WriteString($"[bit2]辅存储器异常", alarmStatusBits[2].ToString());
                    writer.WriteString($"[bit1]主存储器异常", alarmStatusBits[1].ToString());
                    writer.WriteString($"[bit0]摄像头异常", alarmStatusBits[0].ToString());
                    writer.WriteEndObject();
                    writer.WriteEndObject();
                }
                writer.WriteEndArray();
            }
        }