示例#1
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x0802 value = new JT808_0x0802();

            value.MsgNum = reader.ReadUInt16();
            writer.WriteNumber($"[{value.MsgNum.ReadNumber()}]应答流水号", value.MsgNum);
            value.MultimediaItemCount = reader.ReadUInt16();
            writer.WriteNumber($"[{value.MultimediaItemCount.ReadNumber()}]多媒体数据总项数", value.MultimediaItemCount);
            writer.WriteStartArray("多媒体数据集合");
            for (var i = 0; i < value.MultimediaItemCount; i++)
            {
                writer.WriteStartObject();
                JT808MultimediaSearchProperty jT808MultimediaSearchProperty = new JT808MultimediaSearchProperty();
                jT808MultimediaSearchProperty.MultimediaId = reader.ReadUInt32();
                writer.WriteNumber($"[{jT808MultimediaSearchProperty.MultimediaId.ReadNumber()}]多媒体ID", jT808MultimediaSearchProperty.MultimediaId);
                jT808MultimediaSearchProperty.MultimediaType = reader.ReadByte();
                writer.WriteNumber($"[{jT808MultimediaSearchProperty.MultimediaType.ReadNumber()}]多媒体类型-{((JT808MultimediaType)jT808MultimediaSearchProperty.MultimediaType).ToString()}", jT808MultimediaSearchProperty.MultimediaType);
                jT808MultimediaSearchProperty.ChannelId = reader.ReadByte();
                writer.WriteNumber($"[{jT808MultimediaSearchProperty.ChannelId.ReadNumber()}]通道ID", jT808MultimediaSearchProperty.ChannelId);
                jT808MultimediaSearchProperty.EventItemCoding = reader.ReadByte();
                writer.WriteNumber($"[{jT808MultimediaSearchProperty.EventItemCoding.ReadNumber()}]事件项编码-{((JT808EventItemCoding)jT808MultimediaSearchProperty.EventItemCoding).ToString()}", jT808MultimediaSearchProperty.EventItemCoding);
                JT808MessagePackReader positionReader = new JT808MessagePackReader(reader.ReadArray(28));
                writer.WriteStartObject($"位置基本信息");
                config.GetAnalyze <JT808_0x0200>().Analyze(ref positionReader, writer, config);
                writer.WriteEndObject();
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
示例#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_0x0704 jT808_0X0704 = new JT808_0x0704();

            jT808_0X0704.Count = reader.ReadUInt16();
            writer.WriteNumber($"[{jT808_0X0704.Count.ReadNumber()}]数据项个数", jT808_0X0704.Count);
            jT808_0X0704.LocationType = (JT808_0x0704.BatchLocationType)reader.ReadByte();
            writer.WriteNumber($"[{((byte)jT808_0X0704.LocationType).ReadNumber()}]位置数据类型-{jT808_0X0704.LocationType}", (byte)jT808_0X0704.LocationType);
            writer.WriteStartArray("位置汇报数据集合");
            for (int i = 0; i < jT808_0X0704.Count; i++)
            {
                writer.WriteStartObject();
                int buflen = reader.ReadUInt16();
                writer.WriteNumber($"[{buflen.ReadNumber()}]位置汇报数据长度", buflen);
                try
                {
                    writer.WriteString($"位置汇报数据", reader.ReadVirtualArray(buflen).ToArray().ToHexString());
                    JT808MessagePackReader tmpReader = new JT808MessagePackReader(reader.ReadArray(buflen));
                    writer.WriteStartObject("位置信息汇报");
                    config.GetAnalyze <JT808_0x0200>().Analyze(ref tmpReader, writer, config);
                    writer.WriteEndObject();
                }
                catch (Exception)
                {
                }
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
示例#3
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8108 value = new JT808_0x8108();

            value.UpgradeType = (JT808UpgradeType)reader.ReadByte();
            writer.WriteNumber($"[{ ((byte)value.UpgradeType).ReadNumber()}]升级类型-{value.UpgradeType.ToString()}", (byte)value.UpgradeType);
            if (reader.Version == JT808Version.JTT2019)
            {
                var makerIdBuffer = reader.ReadVirtualArray(11).ToArray();
                value.MakerId = reader.ReadString(11);
                writer.WriteString($"[{makerIdBuffer.ToHexString()}]制造商ID", value.MakerId);
            }
            else
            {
                var makerIdBuffer = reader.ReadVirtualArray(5).ToArray();
                value.MakerId = reader.ReadString(5);
                writer.WriteString($"[{makerIdBuffer.ToHexString()}]制造商ID", value.MakerId);
            }
            value.VersionNumLength = reader.ReadByte();
            writer.WriteNumber($"[{value.VersionNumLength.ReadNumber()}]版本号长度", value.VersionNumLength);
            var versionNumBuffer = reader.ReadVirtualArray(value.VersionNumLength).ToArray();

            value.VersionNum = reader.ReadString(value.VersionNumLength);
            writer.WriteString($"[{versionNumBuffer.ToHexString()}]版本号", value.VersionNum);
            value.UpgradePackageLength = reader.ReadInt32();
            writer.WriteNumber($"[{value.UpgradePackageLength.ReadNumber()}]升级数据包长度", value.UpgradePackageLength);
            value.UpgradePackage = reader.ReadArray(value.UpgradePackageLength).ToArray();
            writer.WriteString($"升级数据包", value.UpgradePackage.ToHexString());
        }
示例#4
0
        public JT808_0x8500 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8500 value = new JT808_0x8500();

            if (reader.Version == JT808Version.JTT2019)
            {
                value.ControlTypeCount = reader.ReadUInt16();
                value.ControlTypes     = new List <JT808_0x8500_ControlType>();
                while (reader.ReadCurrentRemainContentLength() > 0)
                {
                    var controlTypeId = reader.ReadVirtualUInt16();
                    if (config.JT808_0x8500_2019_Factory.Map.TryGetValue(controlTypeId, out object instance))
                    {
                        value.ControlTypes.Add(JT808MessagePackFormatterResolverExtensions.JT808DynamicDeserialize(instance, ref reader, config));
                    }
                    else
                    {
                        value.ControlTypeBuffer = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
                    }
                }
            }
            else
            {
                value.ControlFlag = reader.ReadByte();
            }
            return(value);
        }
示例#5
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_0x8003 value = new JT808_0x8003();

            value.OriginalMsgNum = reader.ReadUInt16();
            writer.WriteNumber($"[{value.OriginalMsgNum.ReadNumber()}]原始消息流水号", value.OriginalMsgNum);
            if (reader.Version == JT808Version.JTT2019)
            {
                value.AgainPackageCount = reader.ReadUInt16();
            }
            else
            {
                value.AgainPackageCount = reader.ReadByte();
            }

            writer.WriteNumber($"[{value.AgainPackageCount.ReadNumber()}]重传包总数", value.AgainPackageCount);
            writer.WriteStartArray("重传包ID列表");
            for (int i = 0; i < value.AgainPackageCount; i++)
            {
                writer.WriteStartObject();
                var idBuffer = reader.ReadArray(2).ToArray();
                writer.WriteString($"Id{i+1}", idBuffer.ToHexString());
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
示例#6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x0200_0x65 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0200_0x65 value = new JT808_0x0200_0x65();

            value.AttachInfoId        = reader.ReadByte();
            value.AttachInfoLength    = reader.ReadByte();
            value.AlarmId             = reader.ReadUInt32();
            value.FlagState           = reader.ReadByte();
            value.AlarmOrEventType    = reader.ReadByte();
            value.AlarmLevel          = reader.ReadByte();
            value.Fatigue             = reader.ReadByte();
            value.Retain              = reader.ReadArray(4).ToArray();
            value.Speed               = reader.ReadByte();
            value.Altitude            = reader.ReadUInt16();
            value.Latitude            = (int)reader.ReadUInt32();
            value.Longitude           = (int)reader.ReadUInt32();
            value.AlarmTime           = reader.ReadDateTime_yyMMddHHmmss();
            value.VehicleState        = reader.ReadUInt16();
            value.AlarmIdentification = new AlarmIdentificationProperty
            {
                TerminalId  = reader.ReadString(30),
                Time        = reader.ReadDateTime_yyMMddHHmmss(),
                SN          = reader.ReadByte(),
                AttachCount = reader.ReadByte(),
                Retain1     = reader.ReadByte(),
                Retain2     = reader.ReadByte()
            };
            return(value);
        }
示例#7
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x0705 value = new JT808_0x0705();

            value.CanItemCount = reader.ReadUInt16();
            writer.WriteNumber($"[{value.CanItemCount.ReadNumber()}]数据项个数", value.CanItemCount);
            var dateTimeBuffer = reader.ReadVirtualArray(5).ToArray();

            value.FirstCanReceiveTime = reader.ReadDateTime5();
            writer.WriteString($"[{dateTimeBuffer.ToHexString()}]CAN总线数据接收时间", value.FirstCanReceiveTime.ToString("HH-mm-ss:fff"));
            writer.WriteStartArray("CAN总线数据项");
            for (var i = 0; i < value.CanItemCount; i++)
            {
                writer.WriteStartObject();
                JT808CanProperty jT808CanProperty = new JT808CanProperty();
                jT808CanProperty.CanId = reader.ReadUInt32();
                writer.WriteNumber($"[{ jT808CanProperty.CanId.ReadNumber()}]CAN_ID", jT808CanProperty.CanId);
                jT808CanProperty.CanData = reader.ReadArray(8).ToArray();
                writer.WriteString($"CAN_数据", jT808CanProperty.CanData.ToHexString());
                if (jT808CanProperty.CanData.Length != 8)
                {
                    throw new JT808Exception(Enums.JT808ErrorCode.NotEnoughLength, $"{nameof(jT808CanProperty.CanData)}->8");
                }
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
示例#8
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            var    originalMsgNum = reader.ReadUInt16();
            ushort againPackageCount;

            if (reader.Version == JT808Version.JTT2013)
            {
                againPackageCount = reader.ReadByte();
            }
            else
            {
                againPackageCount = reader.ReadUInt16();
            }
            var againPackageData = reader.ReadArray(againPackageCount * 2);

            writer.WriteNumber($"[{originalMsgNum.ReadNumber()}]原始消息流水号", originalMsgNum);
            writer.WriteNumber($"[{againPackageCount.ReadNumber()}]重传包总数", againPackageCount);
            writer.WriteString("重传包ID", string.Join(",", againPackageData.ToArray()));
            writer.WriteStartArray("重传包ID列表");
            for (var i = 0; i < againPackageCount; i++)
            {
                writer.WriteStringValue(string.Join(",", againPackageData.Slice(i * 2, 2).ToArray()));
            }
            writer.WriteEndArray();
        }
示例#9
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_0x8103_0xF366 value = new JT808_0x8103_0xF366();

            value.ParamId     = reader.ReadUInt32();
            value.ParamLength = reader.ReadByte();
            writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId);
            writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
            string tyreSpecificationTypeHex = reader.ReadVirtualArray(12).ToArray().ToHexString();

            value.TyreSpecificationType = reader.ReadString(12);
            writer.WriteString($"[{tyreSpecificationTypeHex}]轮胎规格型号", value.TyreSpecificationType);
            value.TyrePressureUnit = reader.ReadUInt16();
            writer.WriteNumber($"[{value.TyrePressureUnit.ReadNumber()}]胎压单位", value.TyrePressureUnit);
            value.NormalFetalPressure = reader.ReadUInt16();
            writer.WriteNumber($"[{value.NormalFetalPressure.ReadNumber()}]正常胎压值", value.NormalFetalPressure);
            value.ThresholdUnbalancedTirePressure = reader.ReadUInt16();
            writer.WriteNumber($"[{value.ThresholdUnbalancedTirePressure.ReadNumber()}]胎压不平衡门限", value.ThresholdUnbalancedTirePressure);
            value.SlowLeakageThreshold = reader.ReadUInt16();
            writer.WriteNumber($"[{value.SlowLeakageThreshold.ReadNumber()}]慢漏气门限", value.SlowLeakageThreshold);
            value.LowVoltageThreshold = reader.ReadUInt16();
            writer.WriteNumber($"[{value.LowVoltageThreshold.ReadNumber()}]低压阈值", value.LowVoltageThreshold);
            value.HighVoltageThreshold = reader.ReadUInt16();
            writer.WriteNumber($"[{value.HighVoltageThreshold.ReadNumber()}]高压阈值", value.HighVoltageThreshold);
            value.HighTemperatureThreshold = reader.ReadUInt16();
            writer.WriteNumber($"[{value.HighTemperatureThreshold.ReadNumber()}]高温阈值", value.HighTemperatureThreshold);
            value.VoltageThreshold = reader.ReadUInt16();
            writer.WriteNumber($"[{value.VoltageThreshold.ReadNumber()}]电压阈值", value.VoltageThreshold);
            value.TimedReportingInterval = reader.ReadUInt16();
            writer.WriteNumber($"[{value.TimedReportingInterval.ReadNumber()}]定时上报时间间隔", value.TimedReportingInterval);
            value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
            writer.WriteString("保留项", value.Retain.ToHexString());
        }
        public JT808_0x0200_0x65 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0200_0x65 jT808_0X0200_0X65 = new JT808_0x0200_0x65();

            jT808_0X0200_0X65.AttachInfoId        = reader.ReadByte();
            jT808_0X0200_0X65.AttachInfoLength    = reader.ReadByte();
            jT808_0X0200_0X65.AlarmId             = reader.ReadUInt32();
            jT808_0X0200_0X65.FlagState           = reader.ReadByte();
            jT808_0X0200_0X65.AlarmOrEventType    = reader.ReadByte();
            jT808_0X0200_0X65.AlarmLevel          = reader.ReadByte();
            jT808_0X0200_0X65.Fatigue             = reader.ReadByte();
            jT808_0X0200_0X65.Retain              = reader.ReadArray(4).ToArray();
            jT808_0X0200_0X65.Speed               = reader.ReadByte();
            jT808_0X0200_0X65.Altitude            = reader.ReadUInt16();
            jT808_0X0200_0X65.Latitude            = (int)reader.ReadUInt32();
            jT808_0X0200_0X65.Longitude           = (int)reader.ReadUInt32();
            jT808_0X0200_0X65.AlarmTime           = reader.ReadDateTime6();
            jT808_0X0200_0X65.VehicleState        = reader.ReadUInt16();
            jT808_0X0200_0X65.AlarmIdentification = new AlarmIdentificationProperty
            {
                TerminalID  = reader.ReadString(7),
                Time        = reader.ReadDateTime6(),
                SN          = reader.ReadByte(),
                AttachCount = reader.ReadByte(),
                Retain      = reader.ReadByte()
            };
            return(jT808_0X0200_0X65);
        }
示例#11
0
        public JT808_0x8A00 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8A00 jT808_0X8A00 = new JT808_0x8A00();

            jT808_0X8A00.E = reader.ReadUInt32();
            jT808_0X8A00.N = reader.ReadArray(128).ToArray();
            return(jT808_0X8A00);
        }
示例#12
0
        public JT808_0x0701 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0701 jT808_0X0701 = new JT808_0x0701();

            jT808_0X0701.ElectronicWaybillLength = reader.ReadUInt32();
            jT808_0X0701.ElectronicContent       = reader.ReadArray((int)jT808_0X0701.ElectronicWaybillLength).ToArray();
            return(jT808_0X0701);
        }
示例#13
0
        public JT808LocationAttachImpl0x62 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808LocationAttachImpl0x62 jT808LocationAttachImpl0x62 = new JT808LocationAttachImpl0x62();

            jT808LocationAttachImpl0x62.AttachInfoId     = reader.ReadByte();
            jT808LocationAttachImpl0x62.AttachInfoLength = reader.ReadUInt32();
            jT808LocationAttachImpl0x62.Data             = reader.ReadArray((int)jT808LocationAttachImpl0x62.AttachInfoLength).ToArray();
            return(jT808LocationAttachImpl0x62);
        }
示例#14
0
        public JT808LocationAttachImpl0xDD Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808LocationAttachImpl0xDD jT808LocationAttachImpl0XDD = new JT808LocationAttachImpl0xDD();

            jT808LocationAttachImpl0XDD.AttachInfoId     = reader.ReadUInt16();
            jT808LocationAttachImpl0XDD.AttachInfoLength = reader.ReadUInt16();
            jT808LocationAttachImpl0XDD.TestValue        = reader.ReadArray(jT808LocationAttachImpl0XDD.AttachInfoLength).ToArray();
            return(jT808LocationAttachImpl0XDD);
        }
示例#15
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x8103_0x0032 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8103_0x0032 value = new JT808_0x8103_0x0032();

            value.ParamId     = reader.ReadUInt32();
            value.ParamLength = reader.ReadByte();
            value.ParamValue  = reader.ReadArray(4).ToArray();
            return(value);
        }
示例#16
0
        public JT808_0x0005 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0005 value = new JT808_0x0005();

            value.OriginalMsgNum    = reader.ReadUInt16();
            value.AgainPackageCount = reader.ReadByte();
            value.AgainPackageData  = reader.ReadArray(value.AgainPackageCount * 2).ToArray();
            return(value);
        }
示例#17
0
        public JT808_0x8003 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8003 jT808_0X8003 = new JT808_0x8003();

            jT808_0X8003.OriginalMsgNum    = reader.ReadUInt16();
            jT808_0X8003.AgainPackageCount = reader.ReadByte();
            jT808_0X8003.AgainPackageData  = reader.ReadArray(jT808_0X8003.AgainPackageCount * 2).ToArray();
            return(jT808_0X8003);
        }
示例#18
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8A00 jT808_0X8A00 = new JT808_0x8A00();

            jT808_0X8A00.E = reader.ReadUInt32();
            jT808_0X8A00.N = reader.ReadArray(128).ToArray();
            writer.WriteNumber($"[{jT808_0X8A00.E.ReadNumber()}]RSA公钥e", jT808_0X8A00.E);
            writer.WriteString($"RSA公钥N", jT808_0X8A00.N.ToHexString());
        }
示例#19
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_0x0701 value = new JT808_0x0701();

            value.ElectronicWaybillLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.ElectronicWaybillLength.ReadNumber()}]电子运单长度", value.ElectronicWaybillLength);
            value.ElectronicContent = reader.ReadArray((int)value.ElectronicWaybillLength).ToArray();
            writer.WriteString($"电子运单", value.ElectronicContent.ToHexString());
        }
示例#20
0
        public JT808_0x8103_0x0110 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8103_0x0110 jT808_0x8103_0x0110 = new JT808_0x8103_0x0110();

            jT808_0x8103_0x0110.ParamId     = reader.ReadUInt32();
            jT808_0x8103_0x0110.ParamLength = reader.ReadByte();
            jT808_0x8103_0x0110.ParamValue  = reader.ReadArray(jT808_0x8103_0x0110.ParamLength).ToArray();
            return(jT808_0x8103_0x0110);
        }
示例#21
0
        public JT808_0x0200_0x05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0200_0x05 value = new JT808_0x0200_0x05();

            value.AttachInfoId     = reader.ReadByte();
            value.AttachInfoLength = reader.ReadByte();
            value.TirePressure     = reader.ReadArray(value.AttachInfoLength).ToArray();
            return(value);
        }
示例#22
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x8800 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8800 jT808_0X8800 = new JT808_0x8800();

            jT808_0X8800.MultimediaId           = reader.ReadUInt32();
            jT808_0X8800.RetransmitPackageCount = reader.ReadByte();
            jT808_0X8800.RetransmitPackageIds   = reader.ReadArray(jT808_0X8800.RetransmitPackageCount * 2).ToArray();
            return(jT808_0X8800);
        }
示例#23
0
        public JT808LocationAttachImpl0xDF Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808LocationAttachImpl0xDF jT808LocationAttachImpl0XDF = new JT808LocationAttachImpl0xDF();

            jT808LocationAttachImpl0XDF.AttachInfoId     = reader.ReadByte();
            jT808LocationAttachImpl0XDF.AttachInfoLength = reader.ReadByte();
            jT808LocationAttachImpl0XDF.TestValue        = reader.ReadArray(jT808LocationAttachImpl0XDF.AttachInfoLength).ToArray();
            return(jT808LocationAttachImpl0XDF);
        }
示例#24
0
        public void ReadArrayTest()
        {
            byte[] bytes = "7E 01 02 03 7E".ToHexBytes();
            JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(bytes);

            Assert.Equal(JT808Package.BeginFlag, jT808MessagePackReader.ReadStart());
            Assert.Equal(new byte[] { 0x01, 0x02, 0x03 }, jT808MessagePackReader.ReadArray(3).ToArray());
            Assert.Equal(JT808Package.EndFlag, jT808MessagePackReader.ReadEnd());
        }
示例#25
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_0x0704 jT808_0X0704 = new JT808_0x0704();

            jT808_0X0704.Count = reader.ReadUInt16();
            writer.WriteNumber($"[{jT808_0X0704.Count.ReadNumber()}]数据项个数", jT808_0X0704.Count);
            jT808_0X0704.LocationType = (JT808_0x0704.BatchLocationType)reader.ReadByte();
            writer.WriteNumber($"[{((byte)jT808_0X0704.LocationType).ReadNumber()}]位置数据类型-{jT808_0X0704.LocationType}", (byte)jT808_0X0704.LocationType);
            writer.WriteStartArray("位置汇报数据集合");
            for (int i = 0; i < jT808_0X0704.Count; i++)
            {
                int remainContent = reader.ReadCurrentRemainContentLength();
                if (remainContent <= 0)
                {
                    continue;
                }
                writer.WriteStartObject();
                int buflen = reader.ReadUInt16();
                writer.WriteNumber($"[{buflen.ReadNumber()}]位置汇报数据长度", buflen);
                if ((remainContent - buflen) >= 0)
                {
                    writer.WriteString($"位置汇报数据{{{i}}}", reader.ReadVirtualArray(buflen).ToArray().ToHexString());
                    JT808MessagePackReader tmpReader = new JT808MessagePackReader(reader.ReadArray(buflen), reader.Version);
                    writer.WriteStartObject("位置信息汇报");
                    try
                    {
                        config.GetAnalyze <JT808_0x0200>().Analyze(ref tmpReader, writer, config);
                    }
                    catch (Exception ex)
                    {
                        writer.WriteString($"分析异常", ex.StackTrace);
                    }
                    writer.WriteEndObject();
                }
                else
                {
                    int remainContent1 = reader.ReadCurrentRemainContentLength();
                    var buffer         = reader.ReadArray(remainContent1);
                    writer.WriteString($"位置汇报异常数据{{{i}}}", buffer.ToArray().ToHexString());
                }
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
示例#26
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x0901 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0901 value = new JT808_0x0901();
            var          compressMessageLength = reader.ReadUInt32();
            var          data = reader.ReadArray((int)compressMessageLength);

            value.UnCompressMessage       = config.Compress.Decompress(data.ToArray());
            value.UnCompressMessageLength = (uint)value.UnCompressMessage.Length;
            return(value);
        }
        public JT808_0x8103_0xF365 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8103_0xF365 jT808_0X8103_0XF365 = new JT808_0x8103_0xF365();

            jT808_0X8103_0XF365.ParamId     = reader.ReadUInt32();
            jT808_0X8103_0XF365.ParamLength = reader.ReadByte();
            jT808_0X8103_0XF365.AlarmJudgeSpeedThreshold  = reader.ReadByte();
            jT808_0X8103_0XF365.WarningVolume             = reader.ReadByte();
            jT808_0X8103_0XF365.ActivePhotographyStrategy = reader.ReadByte();
            jT808_0X8103_0XF365.ActivelyTimePhotoInterval = reader.ReadUInt16();
            jT808_0X8103_0XF365.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16();
            jT808_0X8103_0XF365.SingleInitiativePhotos         = reader.ReadByte();
            jT808_0X8103_0XF365.SingleInitiativePhotosInterval = reader.ReadByte();
            jT808_0X8103_0XF365.PhotoResolution          = reader.ReadByte();
            jT808_0X8103_0XF365.VideoRecordingResolution = reader.ReadByte();
            jT808_0X8103_0XF365.AlarmEnable = reader.ReadUInt32();
            jT808_0X8103_0XF365.EventEnable = reader.ReadUInt32();
            jT808_0X8103_0XF365.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16();
            jT808_0X8103_0XF365.CallAlarmDetermineTimeInterval   = reader.ReadUInt16();
            jT808_0X8103_0XF365.Reserve = reader.ReadArray(3).ToArray();
            jT808_0X8103_0XF365.GradedSpeedThresholdFatigueDrivingAlarm             = reader.ReadByte();
            jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = reader.ReadByte();
            jT808_0X8103_0XF365.FatigueDrivingAlarmPhotograph                            = reader.ReadByte();
            jT808_0X8103_0XF365.FatigueDrivingAlarmPhotographInterval                    = reader.ReadByte();
            jT808_0X8103_0XF365.ClassifiedSpeedThresholdCallAlarm                        = reader.ReadByte();
            jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterCallAlarm                = reader.ReadByte();
            jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeatures                = reader.ReadByte();
            jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeaturesInterval        = reader.ReadByte();
            jT808_0X8103_0XF365.ClassifiedSpeedThresholdSmokingAlarm                     = reader.ReadByte();
            jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm             = reader.ReadByte();
            jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristics         = reader.ReadByte();
            jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte();
            jT808_0X8103_0XF365.ClassifiedSpeedThresholdDistractedDrivingAlarm           = reader.ReadByte();
            jT808_0X8103_0XF365.DistractedDrivingAlarmPhotography                        = reader.ReadByte();
            jT808_0X8103_0XF365.DistractedDrivingAlarmPhotographyInterval                = reader.ReadByte();
            jT808_0X8103_0XF365.VideoRecordingTimeAbnormalDrivingBehavior                = reader.ReadByte();
            jT808_0X8103_0XF365.PhotographsAbnormalDrivingBehavior                       = reader.ReadByte();
            jT808_0X8103_0XF365.PictureIntervalAbnormalDrivingBehavior                   = reader.ReadByte();
            jT808_0X8103_0XF365.DriverIdentificationTrigger = reader.ReadByte();
            jT808_0X8103_0XF365.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
            return(jT808_0X8103_0XF365);
        }
示例#28
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x0200_0x05 value = new JT808_0x0200_0x05();

            value.AttachInfoId = reader.ReadByte();
            writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId);
            value.AttachInfoLength = reader.ReadByte();
            writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength);
            value.TirePressure = reader.ReadArray(value.AttachInfoLength).ToArray();
            writer.WriteString($"胎压", value.TirePressure.ToHexString());
        }
示例#29
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_0x8103_0x0032 value = new JT808_0x8103_0x0032();

            value.ParamId     = reader.ReadUInt32();
            value.ParamLength = reader.ReadByte();
            value.ParamValue  = reader.ReadArray(4).ToArray();
            writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
            writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
            writer.WriteString($"[{ value.ParamValue.ToHexString()}]参数值[违规行驶时段范围]", $"开始时间{value.ParamValue[0]}时{value.ParamValue[1]}分,结束时间{value.ParamValue[2]}时{value.ParamValue[3]}分");
        }
示例#30
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364();

            value.ParamId     = reader.ReadUInt32();
            value.ParamLength = reader.ReadByte();
            value.AlarmJudgeSpeedThreshold  = reader.ReadByte();
            value.WarningVolume             = reader.ReadByte();
            value.ActivePhotographyStrategy = reader.ReadByte();
            value.ActivelyTimePhotoInterval = reader.ReadUInt16();
            value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16();
            value.SingleInitiativePhotos         = reader.ReadByte();
            value.SingleInitiativePhotosInterval = reader.ReadByte();
            value.PhotoResolution          = reader.ReadByte();
            value.VideoRecordingResolution = reader.ReadByte();
            value.AlarmEnable  = reader.ReadUInt32();
            value.EventEnable  = reader.ReadUInt32();
            value.Placeholder1 = reader.ReadByte();
            value.DistanceThresholdObstacleAlarm                = reader.ReadByte();
            value.HierarchicalSpeedThresholdObstacleAlarm       = reader.ReadByte();
            value.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte();
            value.BarrierAlarmPhotographs = reader.ReadByte();
            value.ObstacleAlarmInterval   = reader.ReadByte();
            value.FrequentChannelChangeAlarmJudgmentTimePeriod            = reader.ReadByte();
            value.FrequentAlarmJudgmentNumberChannelChange                = reader.ReadByte();
            value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm    = reader.ReadByte();
            value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte();
            value.FrequentChannelChangeAlarmPhotos                   = reader.ReadByte();
            value.FrequentLaneChangeAlarmInterval                    = reader.ReadByte();
            value.GradedSpeedThresholdLaneDeviationAlarm             = reader.ReadByte();
            value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte();
            value.LaneDepartureAlarmPhoto              = reader.ReadByte();
            value.LaneDepartureAlarmPhotoInterval      = reader.ReadByte();
            value.ForwardCollisionWarningTimeThreshold = reader.ReadByte();
            value.HierarchicalSpeedThresholdForwardCollisionWarning     = reader.ReadByte();
            value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte();
            value.ForwardCollisionAlarmPhotographs                              = reader.ReadByte();
            value.ForwardCollisionAlarmInterval                                 = reader.ReadByte();
            value.PedestrianCollisionAlarmTimeThreshold                         = reader.ReadByte();
            value.PedestrianCollisionAlarmEnablingSpeedThreshold                = reader.ReadByte();
            value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm      = reader.ReadByte();
            value.PedestrianCollisionAlarmPhotos                                = reader.ReadByte();
            value.PedestrianCollisionAlarmInterval                              = reader.ReadByte();
            value.VehicleDistanceMonitoringAlarmDistanceThreshold               = reader.ReadByte();
            value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte();
            value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity         = reader.ReadByte();
            value.AlarmPhotoVehicleCloseDistance                                = reader.ReadByte();
            value.AlarmPhotoVehicleCloseDistanceInterval                        = reader.ReadByte();
            value.RoadSignRecognitionPhotographs                                = reader.ReadByte();
            value.RoadSignRecognitionPhotographsInterval                        = reader.ReadByte();
            value.Placeholder2 = reader.ReadArray(4).ToArray();
            return(value);
        }