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

            value.PassthroughContent = reader.ReadRemainStringContent();
            writer.WriteString("透传内容", value.PassthroughContent);
        }
Beispiel #2
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x0102 jT808_0X0102 = new JT808_0x0102();

            if (reader.Version == JT808Version.JTT2019)
            {
                jT808_0X0102.CodeLength = reader.ReadByte();
                writer.WriteNumber($"[{ jT808_0X0102.CodeLength.ReadNumber()}]鉴权码长度", jT808_0X0102.CodeLength);
                ReadOnlySpan <byte> codeSpan = reader.ReadVirtualArray(jT808_0X0102.CodeLength);
                jT808_0X0102.Code = reader.ReadString(jT808_0X0102.CodeLength);
                writer.WriteString($"[{codeSpan.ToArray().ToHexString()}]鉴权码", jT808_0X0102.Code);
                ReadOnlySpan <byte> imeiSpan = reader.ReadVirtualArray(15);
                jT808_0X0102.IMEI = reader.ReadString(15);
                writer.WriteString($"[{imeiSpan.ToArray().ToHexString()}]IMEI", jT808_0X0102.IMEI);
                ReadOnlySpan <byte> svSpan = reader.ReadVirtualArray(20);
                jT808_0X0102.SoftwareVersion = reader.ReadString(20);
                writer.WriteString($"[{svSpan.ToArray().ToHexString()}]软件版本号", jT808_0X0102.SoftwareVersion);
            }
            else
            {
                ReadOnlySpan <byte> codeSpan = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());
                jT808_0X0102.Code = reader.ReadRemainStringContent();
                writer.WriteString($"[{codeSpan.ToArray().ToHexString()}]鉴权码", jT808_0X0102.Code);
            }
        }
Beispiel #3
0
        public JT808_0x0900_0x83 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0900_0x83 jT808PassthroughType0x83 = new JT808_0x0900_0x83();

            jT808PassthroughType0x83.PassthroughContent = reader.ReadRemainStringContent();
            return(jT808PassthroughType0x83);
        }
Beispiel #4
0
        public JT808_0x0B04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0B04 value = new JT808_0x0B04();

            value.GprsId        = reader.ReadUInt32();
            value.ViolationType = reader.ReadByte();
            if (value.ViolationType >= 0x01 && value.ViolationType <= 0x0A)
            {
                value.ViolationValue    = reader.ReadUInt16();
                value.ViolationStandard = reader.ReadUInt16();
            }
            else if (value.ViolationType == 0x0C)
            {
                value.ViolationValue = reader.ReadUInt16();
            }
            value.Latitude   = reader.ReadUInt32();
            value.Longitude  = reader.ReadUInt32();
            value.Altitude   = reader.ReadUInt16();
            value.Speed      = reader.ReadUInt16();
            value.Direction  = reader.ReadUInt16();
            value.Time       = reader.ReadDateTime6();
            value.Reissue    = reader.ReadByte();
            value.Additional = reader.ReadRemainStringContent();
            return(value);
        }
Beispiel #5
0
        public JT808_0x0900_0x83 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0900_0x83 value = new JT808_0x0900_0x83();

            value.PassthroughContent = reader.ReadRemainStringContent();
            return(value);
        }
Beispiel #6
0
        public JT808_0x0102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0102 jT808_0X0102 = new JT808_0x0102();

            jT808_0X0102.Code = reader.ReadRemainStringContent();
            return(jT808_0X0102);
        }
Beispiel #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0100 jT808_0X0100 = new JT808_0x0100();

            jT808_0X0100.AreaID         = reader.ReadUInt16();
            jT808_0X0100.CityOrCountyId = reader.ReadUInt16();
            if (reader.Version == JT808Version.JTT2019)
            {
                jT808_0X0100.MakerId       = reader.ReadString(11);
                jT808_0X0100.TerminalModel = reader.ReadString(30);
                jT808_0X0100.TerminalId    = reader.ReadString(30);
            }
            else if (reader.Version == JT808Version.JTT2013)
            {
                if (reader.ReadCurrentRemainContentLength() > 33)
                {
                    jT808_0X0100.MakerId       = reader.ReadString(5);
                    jT808_0X0100.TerminalModel = reader.ReadString(20);
                    jT808_0X0100.TerminalId    = reader.ReadString(7);
                }
                else
                {
                    jT808_0X0100.MakerId       = reader.ReadString(5);
                    jT808_0X0100.TerminalModel = reader.ReadString(8);
                    jT808_0X0100.TerminalId    = reader.ReadString(7);
                }
            }
            jT808_0X0100.PlateColor = reader.ReadByte();
            jT808_0X0100.PlateNo    = reader.ReadRemainStringContent();
            return(jT808_0X0100);
        }
Beispiel #8
0
        public JT808_0x8300 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8300 jT808_0X8300 = new JT808_0x8300();

            jT808_0X8300.TextFlag = reader.ReadByte();
            jT808_0X8300.TextInfo = reader.ReadRemainStringContent();
            return(jT808_0X8300);
        }
        public JT808_0x8B05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8B05 value = new JT808_0x8B05();

            value.Response   = reader.ReadByte();
            value.Time       = reader.ReadDateTime6();
            value.Additional = reader.ReadRemainStringContent();
            return(value);
        }
Beispiel #10
0
        public JT808_0x8400 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8400 jT808_0X8400 = new JT808_0x8400();

            jT808_0X8400.CallBack = (JT808CallBackType)reader.ReadByte();
            // 最长为 20 字节
            jT808_0X8400.PhoneNumber = reader.ReadRemainStringContent();
            return(jT808_0X8400);
        }
Beispiel #11
0
        public JT808_0x8B02 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8B02 value = new JT808_0x8B02();

            value.GprsId      = reader.ReadUInt32();
            value.TrafficType = reader.ReadByte();
            value.Additional  = reader.ReadRemainStringContent();
            return(value);
        }
Beispiel #12
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8300 value = new JT808_0x8300();

            value.TextFlag = reader.ReadByte();
            writer.WriteNumber($"[{ value.TextFlag.ReadNumber()}]文本信息标志位", value.TextFlag);
            ReadOnlySpan <char> textFlagBits = Convert.ToString(value.TextFlag, 2).PadLeft(8, '0').AsSpan();

            if (reader.Version == JT808Version.JTT2019)
            {
                writer.WriteStartObject($"文本信息标志对象[{textFlagBits.ToString()}]");
                writer.WriteString($"[bit6~-bit7]保留", textFlagBits.Slice(6, 2).ToString());
                writer.WriteString($"[bit5]{textFlagBits[5]}", textFlagBits[5] == '0' ? "中心导航信息" : "CAN故障码信息");
                writer.WriteString($"[bit4]{textFlagBits[4]}", "-");
                writer.WriteString($"[bit3]{textFlagBits[3]}", "终端TTS播读");
                writer.WriteString($"[bit2]{textFlagBits[2]}", "终端显示器显示");
                var bit0And1 = textFlagBits.Slice(0, 2).ToString();
                switch (bit0And1)
                {
                case "01":
                    writer.WriteString($"[bit0]{textFlagBits[0]}", "服务");
                    break;

                case "10":
                    writer.WriteString($"[bit0]{textFlagBits[0]}", "紧急");
                    break;

                case "11":
                    writer.WriteString($"[bit0]{textFlagBits[0]}", "通知");
                    break;

                case "00":
                    writer.WriteString($"[bit0]{textFlagBits[0]}", "保留");
                    break;
                }
                writer.WriteEndObject();
                value.TextType = reader.ReadByte();
                writer.WriteNumber($"[{ value.TextType.ReadNumber()}]文本类型-{(value.TextType==1? "通知":"服务")}", value.TextType);
            }
            else
            {
                writer.WriteStartObject($"文本信息标志对象[{textFlagBits.ToString()}]");
                writer.WriteString($"[bit6~-bit7]保留", textFlagBits.Slice(6, 2).ToString());
                writer.WriteString($"[bit5]{textFlagBits[5]}", textFlagBits[5] == '0' ? "中心导航信息" : "CAN故障码信息");
                writer.WriteString($"[bit4]{textFlagBits[4]}", "广告屏显示");
                writer.WriteString($"[bit3]{textFlagBits[3]}", "终端TTS播读");
                writer.WriteString($"[bit2]{textFlagBits[2]}", "终端显示器显示");
                writer.WriteString($"[bit1]{textFlagBits[1]}", "保留");
                writer.WriteString($"[bit0]{textFlagBits[0]}", "紧急");
                writer.WriteEndObject();
            }
            var txtBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();

            value.TextInfo = reader.ReadRemainStringContent();
            writer.WriteString($"[{txtBuffer.ToHexString()}]答案内容", value.TextInfo);
        }
        public JT808_0x0B0A Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0B0A value = new JT808_0x0B0A();

            value.GprsId           = reader.ReadUInt32();
            value.UpdateResultCode = reader.ReadByte();
            value.Time             = reader.ReadDateTime6();
            value.UpdateFile       = reader.ReadRemainStringContent();
            return(value);
        }
Beispiel #14
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_0x0100 jT808_0X0100 = new JT808_0x0100();

            jT808_0X0100.AreaID = reader.ReadUInt16();
            writer.WriteNumber($"[{jT808_0X0100.AreaID.ReadNumber()}]省域ID", jT808_0X0100.AreaID);
            jT808_0X0100.CityOrCountyId = reader.ReadUInt16();
            writer.WriteNumber($"[{jT808_0X0100.CityOrCountyId.ReadNumber()}]市县域ID", jT808_0X0100.CityOrCountyId);
            if (reader.Version == JT808Version.JTT2019)
            {
                ReadOnlySpan <byte> midSpan = reader.ReadVirtualArray(11);
                jT808_0X0100.MakerId = reader.ReadString(11);
                writer.WriteString($"[{midSpan.ToArray().ToHexString()}]制造商ID(11)", jT808_0X0100.MakerId);
                ReadOnlySpan <byte> tmSpan = reader.ReadVirtualArray(30);
                jT808_0X0100.TerminalModel = reader.ReadString(30);
                writer.WriteString($"[{tmSpan.ToArray().ToHexString()}]终端型号(30)", jT808_0X0100.TerminalModel);
                ReadOnlySpan <byte> tidSpan = reader.ReadVirtualArray(30);
                jT808_0X0100.TerminalId = reader.ReadString(30);
                writer.WriteString($"[{tidSpan.ToArray().ToHexString()}]终端ID(30)", jT808_0X0100.TerminalId);
            }
            else if (reader.Version == JT808Version.JTT2013)
            {
                var length = reader.ReadCurrentRemainContentLength();
                if (length > 33)
                {
                    ReadOnlySpan <byte> midSpan = reader.ReadVirtualArray(5);
                    jT808_0X0100.MakerId = reader.ReadString(5);
                    writer.WriteString($"[{midSpan.ToArray().ToHexString()}]制造商ID(5)", jT808_0X0100.MakerId);
                    ReadOnlySpan <byte> tmSpan = reader.ReadVirtualArray(20);
                    jT808_0X0100.TerminalModel = reader.ReadString(20);
                    writer.WriteString($"[{tmSpan.ToArray().ToHexString()}]终端型号(20)", jT808_0X0100.TerminalModel);
                    ReadOnlySpan <byte> tidSpan = reader.ReadVirtualArray(7);
                    jT808_0X0100.TerminalId = reader.ReadString(7);
                    writer.WriteString($"[{tidSpan.ToArray().ToHexString()}]终端ID(7)", jT808_0X0100.TerminalId);
                }
                else
                {
                    ReadOnlySpan <byte> midSpan = reader.ReadVirtualArray(5);
                    jT808_0X0100.MakerId = reader.ReadString(5);
                    writer.WriteString($"[{midSpan.ToArray().ToHexString()}]制造商ID(5)", jT808_0X0100.MakerId);
                    ReadOnlySpan <byte> tmSpan = reader.ReadVirtualArray(8);
                    jT808_0X0100.TerminalModel = reader.ReadString(8);
                    writer.WriteString($"[{tmSpan.ToArray().ToHexString()}]终端型号(8)", jT808_0X0100.TerminalModel);
                    ReadOnlySpan <byte> tidSpan = reader.ReadVirtualArray(7);
                    jT808_0X0100.TerminalId = reader.ReadString(7);
                    writer.WriteString($"[{tidSpan.ToArray().ToHexString()}]终端ID(7)", jT808_0X0100.TerminalId);
                }
            }
            jT808_0X0100.PlateColor = reader.ReadByte();
            writer.WriteNumber($"[{jT808_0X0100.PlateColor.ReadNumber()}]车牌颜色", jT808_0X0100.PlateColor);
            ReadOnlySpan <byte> vnoSpan = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            jT808_0X0100.PlateNo = reader.ReadRemainStringContent();
            writer.WriteString($"[{vnoSpan.ToArray().ToHexString()}]车牌号码", jT808_0X0100.PlateNo);
        }
        public JT808LocationAttachImpl0x06 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808LocationAttachImpl0x06 jT808LocationAttachImpl0x06 = new JT808LocationAttachImpl0x06();

            jT808LocationAttachImpl0x06.AttachInfoId     = reader.ReadByte();
            jT808LocationAttachImpl0x06.AttachInfoLength = reader.ReadByte();
            jT808LocationAttachImpl0x06.Age      = reader.ReadInt32();
            jT808LocationAttachImpl0x06.Gender   = reader.ReadByte();
            jT808LocationAttachImpl0x06.UserName = reader.ReadRemainStringContent();
            return(jT808LocationAttachImpl0x06);
        }
Beispiel #16
0
        public JT808_0x0200_DT1_0x81 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0200_DT1_0x81 jT808_0X0200_DT1_0X81 = new JT808_0x0200_DT1_0x81();

            jT808_0X0200_DT1_0X81.AttachInfoId     = reader.ReadByte();
            jT808_0X0200_DT1_0X81.AttachInfoLength = reader.ReadByte();
            jT808_0X0200_DT1_0X81.Age      = reader.ReadUInt32();
            jT808_0X0200_DT1_0X81.Gender   = reader.ReadByte();
            jT808_0X0200_DT1_0X81.UserName = reader.ReadRemainStringContent();
            return(jT808_0X0200_DT1_0X81);
        }
Beispiel #17
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_0x8400 value = new JT808_0x8400();

            value.CallBack = (JT808CallBackType)reader.ReadByte();
            writer.WriteNumber($"[{((byte)value.CallBack).ReadNumber()}]{value.CallBack.ToString()}", (byte)value.CallBack);
            // 最长为 20 字节
            var pnoBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();

            value.PhoneNumber = reader.ReadRemainStringContent();
            writer.WriteString($"[{pnoBuffer.ToHexString()}]电话号码", value.PhoneNumber);
        }
Beispiel #18
0
        public JT808_0x8300 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8300 jT808_0X8300 = new JT808_0x8300();

            jT808_0X8300.TextFlag = reader.ReadByte();
            if (reader.Version == JT808Version.JTT2019)
            {
                jT808_0X8300.TextType = reader.ReadByte();
            }
            jT808_0X8300.TextInfo = reader.ReadRemainStringContent();
            return(jT808_0X8300);
        }
Beispiel #19
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8B02 value = new JT808_0x8B02();

            value.GprsId = reader.ReadUInt32();
            writer.WriteNumber($"[{value.GprsId.ReadNumber()}]线路编号", value.GprsId);
            value.TrafficType = reader.ReadByte();
            writer.WriteNumber($"[{value.TrafficType.ReadNumber()}]业务类型-{Enum.GetName(typeof(TrafficType), value.TrafficType)}", value.TrafficType);
            var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            value.Additional = reader.ReadRemainStringContent();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]附加内容", value.Additional);
        }
Beispiel #20
0
        public JT808_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0100 jT808_0X0100 = new JT808_0x0100();

            jT808_0X0100.AreaID         = reader.ReadUInt16();
            jT808_0X0100.CityOrCountyId = reader.ReadUInt16();
            jT808_0X0100.MakerId        = reader.ReadString(5);
            jT808_0X0100.TerminalModel  = reader.ReadString(20);
            jT808_0X0100.TerminalId     = reader.ReadString(7);
            jT808_0X0100.PlateColor     = reader.ReadByte();
            jT808_0X0100.PlateNo        = reader.ReadRemainStringContent();
            return(jT808_0X0100);
        }
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8B05 value = new JT808_0x8B05();

            value.Response = reader.ReadByte();
            writer.WriteNumber($"[{value.Response.ReadNumber()}]业务请求结果", value.Response);
            value.Time = reader.ReadDateTime6();
            writer.WriteString($"[{value.Time:yyMMddHHmmss}]应答时间", value.Time.ToString("yyyy-MM-dd HH:mm:ss"));
            var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            value.Additional = reader.ReadRemainStringContent();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]附加内容", value.Additional);
        }
Beispiel #22
0
        public JT808_0x8100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8100 jT808_0X8100 = new JT808_0x8100();

            jT808_0X8100.MsgNum = reader.ReadUInt16();
            jT808_0X8100.JT808TerminalRegisterResult = (JT808TerminalRegisterResult)reader.ReadByte();
            // 只有在成功后才有该字段
            if (jT808_0X8100.JT808TerminalRegisterResult == JT808TerminalRegisterResult.成功)
            {
                jT808_0X8100.Code = reader.ReadRemainStringContent();
            }
            return(jT808_0X8100);
        }
Beispiel #23
0
        public JT808_0x8105 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8105 jT808_0x8105 = new JT808_0x8105
            {
                CommandWord = reader.ReadByte()
            };

            if (jT808_0x8105.CommandWord == 1 || jT808_0x8105.CommandWord == 2)
            {
                jT808_0x8105.CommandValue = new CommandParams();
                jT808_0x8105.CommandValue.SetCommandParams(reader.ReadRemainStringContent());
            }
            return(jT808_0x8105);
        }
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x0B0A value = new JT808_0x0B0A();

            value.GprsId = reader.ReadUInt32();
            writer.WriteNumber($"[{value.GprsId.ReadNumber()}]线路编号", value.GprsId);
            value.UpdateResultCode = reader.ReadByte();
            writer.WriteNumber($"[{value.UpdateResultCode.ReadNumber()}]升级结果代码-{Enum.GetName(typeof(UpdateResultCode), value.UpdateResultCode)}", value.UpdateResultCode);
            value.Time = reader.ReadDateTime6();
            writer.WriteString($"[{value.Time:yyMMddHHmmss}]时间", value.Time.ToString("yyyy-MM-dd HH:mm:ss"));
            var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            value.UpdateFile = reader.ReadRemainStringContent();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]升级文件", value.UpdateFile);
        }
Beispiel #25
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x8300 jT808_0X8300 = new JT808_0x8300();

            jT808_0X8300.TextFlag = reader.ReadByte();
            writer.WriteNumber($"[{ jT808_0X8300.TextFlag.ReadNumber()}]文本信息标志位", jT808_0X8300.TextFlag);
            if (reader.Version == JT808Version.JTT2019)
            {
                jT808_0X8300.TextType = reader.ReadByte();
                writer.WriteNumber($"[{ jT808_0X8300.TextType.ReadNumber()}]文本类型-{(jT808_0X8300.TextType==1? "通知":"服务")}", jT808_0X8300.TextType);
            }
            var txtBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();

            jT808_0X8300.TextInfo = reader.ReadRemainStringContent();
            writer.WriteString($"[{txtBuffer.ToHexString()}]答案内容", jT808_0X8300.TextInfo);
        }
Beispiel #26
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_0x8100 value = new JT808_0x8100();

            value.AckMsgNum = reader.ReadUInt16();
            writer.WriteNumber($"[{ value.AckMsgNum.ReadNumber()}]应答流水号", value.AckMsgNum);
            value.JT808TerminalRegisterResult = (JT808TerminalRegisterResult)reader.ReadByte();
            writer.WriteNumber($"[{ ((byte)value.JT808TerminalRegisterResult).ReadNumber()}]结果-{value.JT808TerminalRegisterResult.ToString()}", (byte)value.JT808TerminalRegisterResult);
            // 只有在成功后才有该字段
            if (value.JT808TerminalRegisterResult == JT808TerminalRegisterResult.成功)
            {
                var codeBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();
                value.Code = reader.ReadRemainStringContent();
                writer.WriteString($"[{codeBuffer.ToHexString()}]鉴权码", value.Code);
            }
        }
Beispiel #27
0
        public JT808_0x0102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0102 jT808_0X0102 = new JT808_0x0102();

            if (reader.Version == JT808Version.JTT2019)
            {
                jT808_0X0102.CodeLength      = reader.ReadByte();
                jT808_0X0102.Code            = reader.ReadString(jT808_0X0102.CodeLength);
                jT808_0X0102.IMEI            = reader.ReadString(15);
                jT808_0X0102.SoftwareVersion = reader.ReadString(20);
            }
            else
            {
                jT808_0X0102.Code = reader.ReadRemainStringContent();
            }

            return(jT808_0X0102);
        }
Beispiel #28
0
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x0B04 value = new JT808_0x0B04();

            value.GprsId = reader.ReadUInt32();
            writer.WriteNumber($"[{value.GprsId.ReadNumber()}]线路编号", value.GprsId);
            value.ViolationType = reader.ReadByte();
            writer.WriteNumber($"[{value.ViolationType.ReadNumber()}]违规类型-{Enum.GetName(typeof(ViolationType), value.ViolationType)}", value.ViolationType);
            if ((value.ViolationType >= 0x01 && value.ViolationType <= 0x0A) || value.ViolationType == 0x0D)
            {
                value.ViolationValue = reader.ReadUInt16();
                writer.WriteNumber($"[{value.ViolationValue.ReadNumber()}]违规值", value.ViolationValue);
                value.ViolationStandard = reader.ReadUInt16();
                writer.WriteNumber($"[{value.ViolationStandard.ReadNumber()}]违规标准", value.ViolationStandard);
            }
            else if (value.ViolationType == 0x0C)
            {
                value.ViolationValue = reader.ReadUInt16();
                writer.WriteNumber($"[{value.ViolationValue.ReadNumber()}]违规值", value.ViolationValue);
            }
            value.Latitude = reader.ReadUInt32();
            writer.WriteNumber($"[{value.Latitude.ReadNumber()}]纬度", value.Latitude);
            value.Longitude = reader.ReadUInt32();
            writer.WriteNumber($"[{value.Longitude.ReadNumber()}]经度", value.Longitude);
            value.Altitude = reader.ReadUInt16();
            writer.WriteNumber($"[{value.Altitude.ReadNumber()}]高程", value.Altitude);
            value.Speed = reader.ReadUInt16();
            writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed);
            value.Direction = reader.ReadUInt16();
            writer.WriteNumber($"[{value.Direction.ReadNumber()}]方向", value.Direction);
            value.Time = reader.ReadDateTime6();
            writer.WriteString($"[{value.Time:yyMMddHHmmss}]时间", value.Time.ToString("yyyy-MM-dd HH:mm:ss"));
            value.Reissue = reader.ReadByte();
            writer.WriteNumber($"[{value.Reissue.ReadNumber()}]补发标识", value.Reissue);
            var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            value.Additional = reader.ReadRemainStringContent();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]附加内容", value.Additional);
        }
Beispiel #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_0x8105 value = new JT808_0x8105
            {
                CommandWord = reader.ReadByte()
            };

            writer.WriteNumber($"[{ value.CommandWord.ReadNumber()}]命令字", value.CommandWord);
            if (value.CommandWord == 1 || value.CommandWord == 2)
            {
                value.CommandValue = new CommandParams();
                var    commandValueBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray();
                string commandValue       = reader.ReadRemainStringContent();
                writer.WriteString($"[{ commandValueBuffer.ToHexString()}]命令参数", commandValue);
                writer.WriteStartObject("命令参数对象");
                var values = commandValue.Split(';');
                if (!string.IsNullOrEmpty(values[0]))
                {
                    var connectionControl = byte.Parse(values[0]);
                    writer.WriteNumber("连接控制", connectionControl);
                }
                else
                {
                    writer.WriteNull("连接控制");
                }
                if (!string.IsNullOrEmpty(values[1]))
                {
                    var dialPointName = values[1];
                    writer.WriteString("拨号点名称", dialPointName);
                }
                else
                {
                    writer.WriteNull("拨号点名称");
                }
                if (!string.IsNullOrEmpty(values[2]))
                {
                    var dialUserName = values[2];
                    writer.WriteString("拨号用户名", dialUserName);
                }
                else
                {
                    writer.WriteNull("拨号用户名");
                }
                if (!string.IsNullOrEmpty(values[3]))
                {
                    var dialPwd = values[3];
                    writer.WriteString("拨号密码", dialPwd);
                }
                else
                {
                    writer.WriteNull("拨号密码");
                }
                if (!string.IsNullOrEmpty(values[4]))
                {
                    var serverUrl = values[4];
                    writer.WriteString("服务器地址", serverUrl);
                }
                else
                {
                    writer.WriteNull("服务器地址");
                }
                if (!string.IsNullOrEmpty(values[5]))
                {
                    var tcpPort = ushort.Parse(values[5]);
                    writer.WriteNumber("TCP端口", tcpPort);
                }
                else
                {
                    writer.WriteNull("TCP端口");
                }
                if (!string.IsNullOrEmpty(values[6]))
                {
                    var udpPort = ushort.Parse(values[6]);
                    writer.WriteNumber("UDP端口", udpPort);
                }
                else
                {
                    writer.WriteNull("UDP端口");
                }
                if (!string.IsNullOrEmpty(values[7]))
                {
                    var manufacturerCode = long.Parse(values[7]);
                    writer.WriteNumber("制造商ID", manufacturerCode);
                }
                else
                {
                    writer.WriteNull("制造商ID");
                }
                if (!string.IsNullOrEmpty(values[8]))
                {
                    var monitoringPlatformAuthenticationCode = values[8];
                    writer.WriteString("监管平台鉴权码", monitoringPlatformAuthenticationCode);
                }
                else
                {
                    writer.WriteNull("监管平台鉴权码");
                }
                if (!string.IsNullOrEmpty(values[9]))
                {
                    var hardwareVersion = values[9];
                    writer.WriteString("硬件版本号", hardwareVersion);
                }
                else
                {
                    writer.WriteNull("硬件版本号");
                }
                if (!string.IsNullOrEmpty(values[10]))
                {
                    var firmwareVersion = values[10];
                    writer.WriteString("固件版本号", firmwareVersion);
                }
                else
                {
                    writer.WriteNull("固件版本号");
                }
                if (!string.IsNullOrEmpty(values[11]))
                {
                    var url = values[11];
                    writer.WriteString("URL地址", url);
                }
                else
                {
                    writer.WriteNull("URL地址");
                }
                if (!string.IsNullOrEmpty(values[12]))
                {
                    var connectTimeLimit = ushort.Parse(values[12]);
                    writer.WriteNumber("连接到指定服务器时限", connectTimeLimit);
                }
                else
                {
                    writer.WriteNull("连接到指定服务器时限");
                }
                writer.WriteEndObject();
            }
        }