Beispiel #1
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);
        }
Beispiel #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x0200_0x64 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0200_0x64 value = new JT808_0x0200_0x64();

            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.VehicleSpeed                 = reader.ReadByte();
            value.CarOrPedestrianDistanceAhead = reader.ReadByte();
            value.DeviateType                  = reader.ReadByte();
            value.RoadSignIdentificationType   = reader.ReadByte();
            value.RoadSignIdentificationData   = reader.ReadByte();
            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(7),
                Time        = reader.ReadDateTime_yyMMddHHmmss(),
                SN          = reader.ReadByte(),
                AttachCount = reader.ReadByte(),
                Retain      = reader.ReadByte()
            };
            return(value);
        }
Beispiel #3
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)
        {
            var value = new JT808_0x9201();

            value.ServerIpLength = reader.ReadByte();
            writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength);
            string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString();

            value.ServerIp = reader.ReadString(value.ServerIpLength);
            writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIp);
            value.TcpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]服务器视频通道监听端口号(TCP)", value.TcpPort);
            value.UdpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.UdpPort.ReadNumber()}]服务器视频通道监听端口号(UDP)", value.UdpPort);
            value.ChannelNo = reader.ReadByte();
            writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo));
            value.MediaType = reader.ReadByte();
            writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVItemTypeDisplay(value.MediaType));
            value.StreamType = reader.ReadByte();
            writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType));
            value.MemoryType = reader.ReadByte();
            writer.WriteString($"[{value.MemoryType.ReadNumber()}]存储器类型", MemTypeDisplay(value.MemoryType));
            value.PlaybackWay = reader.ReadByte();
            writer.WriteString($"[{value.PlaybackWay.ReadNumber()}]回访方式", PlayBackWayDisplay(value.PlaybackWay));
            value.PlaySpeed = reader.ReadByte();
            writer.WriteString($"[{value.PlaySpeed.ReadNumber()}]快进或快退倍数", FastForwardOrFastRewindMultiplesDisplay(value.PlaySpeed));
            value.BeginTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.BeginTime:yyMMddHHmmss}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.EndTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.EndTime:yyMMddHHmmss}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_CarDVR_Down_0x14 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_CarDVR_Down_0x14 value = new JT808_CarDVR_Down_0x14();

            value.StartTime = reader.ReadDateTime_yyMMddHHmmss();
            value.EndTime   = reader.ReadDateTime_yyMMddHHmmss();
            value.Count     = reader.ReadUInt16();
            return(value);
        }
Beispiel #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x1005 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x1005 jT808_0x1005 = new JT808_0x1005();

            jT808_0x1005.BeginTime        = reader.ReadDateTime_yyMMddHHmmss();
            jT808_0x1005.EndTime          = reader.ReadDateTime_yyMMddHHmmss();
            jT808_0x1005.GettingOnNumber  = reader.ReadUInt16();
            jT808_0x1005.GettingOffNumber = reader.ReadUInt16();
            return(jT808_0x1005);
        }
Beispiel #6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_CarDVR_Down_0xC4 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_CarDVR_Down_0xC4 value = new JT808_CarDVR_Down_0xC4();

            value.RealTime         = reader.ReadDateTime_yyMMddHHmmss();
            value.FirstInstallTime = reader.ReadDateTime_yyMMddHHmmss();
            value.FirstMileage     = reader.ReadBCD(8);
            value.TotalMilage      = reader.ReadBCD(8);
            return(value);
        }
Beispiel #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x8802 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8802 jT808_0X8802 = new JT808_0x8802();

            jT808_0X8802.MultimediaType  = reader.ReadByte();
            jT808_0X8802.ChannelId       = reader.ReadByte();
            jT808_0X8802.EventItemCoding = reader.ReadByte();
            jT808_0X8802.StartTime       = reader.ReadDateTime_yyMMddHHmmss();
            jT808_0X8802.EndTime         = reader.ReadDateTime_yyMMddHHmmss();
            return(jT808_0X8802);
        }
Beispiel #8
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_CarDVR_Down_0x14 value = new JT808_CarDVR_Down_0x14();

            value.StartTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.StartTime:yyMMddHHmmss}]开始时间", value.StartTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.EndTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.EndTime:yyMMddHHmmss}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.Count = reader.ReadUInt16();
            writer.WriteNumber($"[{value.Count.ReadNumber()}]最大单位数据块个数", value.Count);
        }
Beispiel #9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x0702 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x0702 value     = new JT808_0x0702();
            var          firstByte = reader.ReadVirtualByte();

            //因2011第一个字节代表姓名长度 所以该值长度只能为  2,3,4,整个数据长度 62+m+n
            if (firstByte == 0x01)
            {
                value.IC_Card_Status       = (JT808ICCardStatus)reader.ReadByte();
                value.IC_Card_PlugDateTime = reader.ReadDateTime_yyMMddHHmmss();
                if (value.IC_Card_Status == JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班)
                {
                    value.IC_Card_ReadResult = (JT808ICCardReadResult)reader.ReadByte();
                    if (value.IC_Card_ReadResult == JT808ICCardReadResult.IC卡读卡成功)
                    {
                        value.DriverUserNameLength   = reader.ReadByte();
                        value.DriverUserName         = reader.ReadString(value.DriverUserNameLength);
                        value.QualificationCode      = reader.ReadString(20);
                        value.LicenseIssuingLength   = reader.ReadByte();
                        value.LicenseIssuing         = reader.ReadString(value.LicenseIssuingLength);
                        value.CertificateExpiresDate = reader.ReadDateTime_YYYYMMDD();
                        if (reader.Version == JT808Version.JTT2019)
                        {
                            value.DriverIdentityCard = reader.ReadString(20);
                            //兼容808-2019 补充
                            if (reader.ReadCurrentRemainContentLength() > 0)
                            {
                                value.FaceMatchValue = reader.ReadByte();
                                value.UID            = reader.ReadString(20);
                            }
                        }
                    }
                }
            }
            else
            {
                if (firstByte == 0x02 && reader.ReadCurrentRemainContentLength() == 7)
                {
                    //如果字节是0x02且长度只有7,那么该协议就是2013或者2019
                    value.IC_Card_Status       = (JT808ICCardStatus)reader.ReadByte();
                    value.IC_Card_PlugDateTime = reader.ReadDateTime_yyMMddHHmmss();
                }
                else
                {
                    value.DriverUserNameLength = reader.ReadByte();
                    value.DriverUserName       = reader.ReadString(value.DriverUserNameLength);
                    value.DriverIdentityCard   = reader.ReadString(20);
                    value.QualificationCode    = reader.ReadString(40);
                    value.LicenseIssuingLength = reader.ReadByte();
                    value.LicenseIssuing       = reader.ReadString(value.LicenseIssuingLength);
                }
            }
            return(value);
        }
Beispiel #10
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_CarDVR_Down_0xC4 value = new JT808_CarDVR_Down_0xC4();

            value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.RealTime:yyMMddHHmmss}]当前时间", value.RealTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.FirstInstallTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.FirstInstallTime:yyMMddHHmmss}]初次安装时间", value.FirstInstallTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.FirstMileage = reader.ReadBCD(8);
            writer.WriteString($"[{value.FirstMileage}]初始里程", value.FirstMileage);
            value.TotalMilage = reader.ReadBCD(8);
            writer.WriteString($"[{value.TotalMilage}]累计里程", value.TotalMilage);
        }
Beispiel #11
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_0x1005 value = new JT808_0x1005();

            value.BeginTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]开始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.EndTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.GettingOnNumber = reader.ReadUInt16();
            writer.WriteNumber($"[{value.GettingOnNumber.ReadNumber()}]从开始时间到结束时间的上车人数", value.GettingOnNumber);
            value.GettingOffNumber = reader.ReadUInt16();
            writer.WriteNumber($"[{value.GettingOffNumber.ReadNumber()}]从开始时间到结束时间的下车人数", value.GettingOffNumber);
        }
Beispiel #12
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x8606 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8606 jT808_0X8606 = new JT808_0x8606();

            jT808_0X8606.RouteId       = reader.ReadUInt32();
            jT808_0X8606.RouteProperty = reader.ReadUInt16();
            ReadOnlySpan <char> routeProperty16Bit = Convert.ToString(jT808_0X8606.RouteProperty, 2).PadLeft(16, '0').AsSpan();
            bool bit0Flag = routeProperty16Bit.Slice(routeProperty16Bit.Length - 1).ToString().Equals("0");

            if (!bit0Flag)
            {
                jT808_0X8606.StartTime = reader.ReadDateTime_yyMMddHHmmss();
                jT808_0X8606.EndTime   = reader.ReadDateTime_yyMMddHHmmss();
            }
            jT808_0X8606.InflectionPointCount = reader.ReadUInt16();
            jT808_0X8606.InflectionPointItems = new List <JT808InflectionPointProperty>();
            for (var i = 0; i < jT808_0X8606.InflectionPointCount; i++)
            {
                JT808InflectionPointProperty jT808InflectionPointProperty = new JT808InflectionPointProperty();
                jT808InflectionPointProperty.InflectionPointId  = reader.ReadUInt32();
                jT808InflectionPointProperty.SectionId          = reader.ReadUInt32();
                jT808InflectionPointProperty.InflectionPointLat = reader.ReadUInt32();
                jT808InflectionPointProperty.InflectionPointLng = reader.ReadUInt32();
                jT808InflectionPointProperty.SectionWidth       = reader.ReadByte();
                jT808InflectionPointProperty.SectionProperty    = reader.ReadByte();
                ReadOnlySpan <char> sectionProperty16Bit = Convert.ToString(jT808InflectionPointProperty.SectionProperty, 2).PadLeft(16, '0').AsSpan();
                bool sectionBit0Flag = sectionProperty16Bit.Slice(sectionProperty16Bit.Length - 1).ToString().Equals("0");
                if (!sectionBit0Flag)
                {
                    jT808InflectionPointProperty.SectionLongDrivingThreshold  = reader.ReadUInt16();
                    jT808InflectionPointProperty.SectionDrivingUnderThreshold = reader.ReadUInt16();
                }
                bool sectionBit1Flag = sectionProperty16Bit.Slice(sectionProperty16Bit.Length - 2, 1).ToString().Equals("0");
                if (!sectionBit1Flag)
                {
                    jT808InflectionPointProperty.SectionHighestSpeed      = reader.ReadUInt16();
                    jT808InflectionPointProperty.SectionOverspeedDuration = reader.ReadByte();
                    if (reader.Version == JT808Version.JTT2019)
                    {
                        jT808InflectionPointProperty.NightMaximumSpeed = reader.ReadUInt16();
                    }
                }
                jT808_0X8606.InflectionPointItems.Add(jT808InflectionPointProperty);
            }
            if (reader.Version == JT808Version.JTT2019)
            {
                jT808_0X8606.RouteNameLength = reader.ReadUInt16();
                jT808_0X8606.RouteName       = reader.ReadString(jT808_0X8606.RouteNameLength);
            }
            return(jT808_0X8606);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x1205_AVResouce Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x1205_AVResouce jT808_0x1205_AVResouce = new JT808_0x1205_AVResouce();

            jT808_0x1205_AVResouce.LogicChannelNo = reader.ReadByte();
            jT808_0x1205_AVResouce.BeginTime      = reader.ReadDateTime_yyMMddHHmmss();
            jT808_0x1205_AVResouce.EndTime        = reader.ReadDateTime_yyMMddHHmmss();
            jT808_0x1205_AVResouce.AlarmFlag      = reader.ReadUInt64();
            jT808_0x1205_AVResouce.AVResourceType = reader.ReadByte();
            jT808_0x1205_AVResouce.StreamType     = reader.ReadByte();
            jT808_0x1205_AVResouce.MemoryType     = reader.ReadByte();
            jT808_0x1205_AVResouce.FileSize       = reader.ReadUInt32();
            return(jT808_0x1205_AVResouce);
        }
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)
        {
            writer.WriteStartArray("请求发送指定的时间范围内 N 个单位数据块的数据");
            var count = (reader.ReadCurrentRemainContentLength() - 1) / 126;//记录块个数, -1 去掉校验位

            for (int i = 0; i < count; i++)
            {
                JT808_CarDVR_Up_0x08_SpeedPerMinute jT808_CarDVR_Up_0X08_SpeedPerMinute = new JT808_CarDVR_Up_0x08_SpeedPerMinute();
                writer.WriteStartObject();
                writer.WriteStartObject($"第{i+1}分钟行驶速度记录数据块格式");
                var hex = reader.ReadVirtualArray(6);
                jT808_CarDVR_Up_0X08_SpeedPerMinute.StartTime = reader.ReadDateTime_yyMMddHHmmss();
                writer.WriteString($"[{hex.ToArray().ToHexString()}]开始时间", jT808_CarDVR_Up_0X08_SpeedPerMinute.StartTime);
                for (int j = 0; j < 60; j++)//60秒
                {
                    JT808_CarDVR_Up_0x08_SpeedPerSecond jT808_CarDVR_Up_0X08_SpeedPerSecond = new JT808_CarDVR_Up_0x08_SpeedPerSecond();
                    writer.WriteStartObject($"开始时间之后第{j+1}秒钟的平均速度和状态信号");
                    jT808_CarDVR_Up_0X08_SpeedPerSecond.AvgSpeedAfterStartTime = reader.ReadByte();
                    writer.WriteNumber($"[{jT808_CarDVR_Up_0X08_SpeedPerSecond.AvgSpeedAfterStartTime.ReadNumber()}]平均速度", jT808_CarDVR_Up_0X08_SpeedPerSecond.AvgSpeedAfterStartTime);
                    jT808_CarDVR_Up_0X08_SpeedPerSecond.StatusSignalAfterStartTime = reader.ReadByte();
                    writer.WriteNumber($"[{jT808_CarDVR_Up_0X08_SpeedPerSecond.StatusSignalAfterStartTime.ReadNumber()}]状态信号", jT808_CarDVR_Up_0X08_SpeedPerSecond.StatusSignalAfterStartTime);
                    writer.WriteEndObject();
                }
                writer.WriteEndObject();
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
Beispiel #15
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_CarDVR_Down_0x84 value = new JT808_CarDVR_Down_0x84();

            value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.RealTime:yyMMddHHmmss}]实时时间", value.RealTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.SignalOperate = reader.ReadByte();
            writer.WriteNumber($"[{value.SignalOperate.ReadNumber()}]信号个数", value.SignalOperate);
            var display = reader.ReadVirtualArray(10);

            value.D0 = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]D0", value.D0);
            display  = reader.ReadVirtualArray(10);
            value.D1 = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]D1", value.D1);
            display  = reader.ReadVirtualArray(10);
            value.D2 = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]D2", value.D2);
            display         = reader.ReadVirtualArray(10);
            value.NearLight = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]近光灯", value.NearLight);
            display        = reader.ReadVirtualArray(10);
            value.FarLight = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]远光灯", value.FarLight);
            display         = reader.ReadVirtualArray(10);
            value.RightTurn = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]右转向", value.RightTurn);
            display        = reader.ReadVirtualArray(10);
            value.LeftTurn = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]左转向", value.LeftTurn);
            display     = reader.ReadVirtualArray(10);
            value.Brake = reader.ReadString(10);
            writer.WriteString($"[{display.ToArray().ToHexString()}]制动", value.Brake);
        }
Beispiel #16
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_CarDVR_Down_0x83 value = new JT808_CarDVR_Down_0x83();

            value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.RealTime:yyMMddHHmmss}]初次安装日期", value.RealTime.ToString("yyyy-MM-dd HH:mm:ss"));
        }
Beispiel #17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_CarDVR_Up_0x08 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_CarDVR_Up_0x08 value = new JT808_CarDVR_Up_0x08();

            value.JT808_CarDVR_Up_0x08_SpeedPerMinutes = new List <JT808_CarDVR_Up_0x08_SpeedPerMinute>();
            var count = (reader.ReadCurrentRemainContentLength() - 1) / 126;//记录块个数, -1 去掉校验位

            for (int i = 0; i < count; i++)
            {
                JT808_CarDVR_Up_0x08_SpeedPerMinute jT808_CarDVR_Up_0X08_SpeedPerMinute = new JT808_CarDVR_Up_0x08_SpeedPerMinute()
                {
                    StartTime = reader.ReadDateTime_yyMMddHHmmss(),
                    JT808_CarDVR_Up_0x08_SpeedPerSeconds = new List <JT808_CarDVR_Up_0x08_SpeedPerSecond>()
                };
                for (int j = 0; j < 60; j++)//60秒
                {
                    jT808_CarDVR_Up_0X08_SpeedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds.Add(new JT808_CarDVR_Up_0x08_SpeedPerSecond
                    {
                        AvgSpeedAfterStartTime     = reader.ReadByte(),
                        StatusSignalAfterStartTime = reader.ReadByte()
                    });
                }
                value.JT808_CarDVR_Up_0x08_SpeedPerMinutes.Add(jT808_CarDVR_Up_0X08_SpeedPerMinute);
            }
            return(value);
        }
Beispiel #18
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x8004 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x8004 value = new JT808_0x8004();

            value.Time = reader.ReadDateTime_yyMMddHHmmss();
            return(value);
        }
Beispiel #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_0x9208 value = new JT808_0x9208();

            value.AttachmentServerIPLength = reader.ReadByte();
            writer.WriteNumber($"[{value.AttachmentServerIPLength.ReadNumber()}]服务IP地址长度", value.AttachmentServerIPLength);
            string attachmentServerIPHex = reader.ReadVirtualArray(value.AttachmentServerIPLength).ToArray().ToHexString();

            value.AttachmentServerIP = reader.ReadString(value.AttachmentServerIPLength);
            writer.WriteString($"[{AttachmentServerIP}]服务IP地址", value.AttachmentServerIP);
            value.AttachmentServerIPTcpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.AttachmentServerIPTcpPort.ReadNumber()}]TCP端口", value.AttachmentServerIPTcpPort);
            value.AttachmentServerIPUdpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.AttachmentServerIPUdpPort.ReadNumber()}]UDP端口", value.AttachmentServerIPUdpPort);
            value.AlarmIdentification = new AlarmIdentificationProperty();
            string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString();

            value.AlarmIdentification.TerminalID  = reader.ReadString(7);
            value.AlarmIdentification.Time        = reader.ReadDateTime_yyMMddHHmmss();
            value.AlarmIdentification.SN          = reader.ReadByte();
            value.AlarmIdentification.AttachCount = reader.ReadByte();
            value.AlarmIdentification.Retain      = reader.ReadByte();
            writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID);
            writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss"));
            writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN);
            writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount);
            writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain);
            string alarmIdHex = reader.ReadVirtualArray(32).ToArray().ToHexString();

            value.AlarmId = reader.ReadString(32);
            writer.WriteString($"[{alarmIdHex}]平台给报警分配的唯一编号", value.AlarmId);
            string retainHex = reader.ReadVirtualArray(16).ToArray().ToHexString();

            writer.WriteString($"预留", retainHex);
        }
Beispiel #20
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_CarDVR_Up_0x09 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_CarDVR_Up_0x09 value = new JT808_CarDVR_Up_0x09();

            value.JT808_CarDVR_Up_0x09_PositionPerHours = new List <JT808_CarDVR_Up_0x09_PositionPerHour>();
            var count = (reader.ReadCurrentRemainContentLength() - 1) / 666;//记录块个数, -1 去掉校验位

            for (int i = 0; i < count; i++)
            {
                JT808_CarDVR_Up_0x09_PositionPerHour jT808_CarDVR_Up_0x09_PositionPerHour = new JT808_CarDVR_Up_0x09_PositionPerHour()
                {
                    StartTime = reader.ReadDateTime_yyMMddHHmmss(),
                    JT808_CarDVR_Up_0x09_PositionPerMinutes = new List <JT808_CarDVR_Up_0x09_PositionPerMinute>()
                };
                for (int j = 0; j < 60; j++)//60钟
                {
                    jT808_CarDVR_Up_0x09_PositionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes.Add(new JT808_CarDVR_Up_0x09_PositionPerMinute
                    {
                        GpsLng = reader.ReadInt32(),
                        GpsLat = reader.ReadInt32(),
                        Height = reader.ReadInt16(),
                        AvgSpeedAfterStartTime = reader.ReadByte()
                    });
                }
                value.JT808_CarDVR_Up_0x09_PositionPerHours.Add(jT808_CarDVR_Up_0x09_PositionPerHour);
            }
            return(value);
        }
Beispiel #21
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)
        {
            writer.WriteStartArray("请求发送指定的时间范围内 N 个单位数据块的数据");
            var count = (reader.ReadCurrentRemainContentLength() - 1) / 666;//记录块个数, -1 去掉校验位

            for (int i = 0; i < count; i++)
            {
                JT808_CarDVR_Up_0x09_PositionPerHour jT808_CarDVR_Up_0x09_PositionPerHour = new JT808_CarDVR_Up_0x09_PositionPerHour();
                writer.WriteStartObject();
                writer.WriteStartObject($"指定的结束时间之前最近的第{i+1}小时的位置信息记录");
                var hex = reader.ReadVirtualArray(6);
                jT808_CarDVR_Up_0x09_PositionPerHour.StartTime = reader.ReadDateTime_yyMMddHHmmss();
                writer.WriteString($"[{hex.ToArray().ToHexString()}]开始时间", jT808_CarDVR_Up_0x09_PositionPerHour.StartTime);
                for (int j = 0; j < 60; j++)//60钟
                {
                    JT808_CarDVR_Up_0x09_PositionPerMinute jT808_CarDVR_Up_0X09_PositionPerMinute = new JT808_CarDVR_Up_0x09_PositionPerMinute();
                    writer.WriteStartObject($"开始时间之后第{j+1}分钟的平均速度和位置信息");
                    jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLng = reader.ReadInt32();
                    writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLng.ReadNumber()}]经度", jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLng);
                    jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLat = reader.ReadInt32();
                    writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLat.ReadNumber()}]纬度", jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLat);
                    jT808_CarDVR_Up_0X09_PositionPerMinute.Height = reader.ReadInt16();
                    writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.Height.ReadNumber()}]高度", jT808_CarDVR_Up_0X09_PositionPerMinute.Height);
                    jT808_CarDVR_Up_0X09_PositionPerMinute.AvgSpeedAfterStartTime = reader.ReadByte();
                    writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.AvgSpeedAfterStartTime.ReadNumber()}]平均速度", jT808_CarDVR_Up_0X09_PositionPerMinute.AvgSpeedAfterStartTime);
                    writer.WriteEndObject();
                }
                writer.WriteEndObject();
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
        }
Beispiel #22
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_CarDVR_Up_0x10 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_CarDVR_Up_0x10 value = new JT808_CarDVR_Up_0x10();

            value.JT808_CarDVR_Up_0x10_AccidentSuspectins = new List <JT808_CarDVR_Up_0x10_AccidentSuspectin>();
            var count = (reader.ReadCurrentRemainContentLength() - 1) / 234;//记录块个数, -1 去掉校验位

            for (int i = 0; i < count; i++)
            {
                JT808_CarDVR_Up_0x10_AccidentSuspectin jT808_CarDVR_Up_0x10_AccidentSuspectin = new JT808_CarDVR_Up_0x10_AccidentSuspectin();
                jT808_CarDVR_Up_0x10_AccidentSuspectin.EndTime         = reader.ReadDateTime_yyMMddHHmmss();
                jT808_CarDVR_Up_0x10_AccidentSuspectin.DriverLicenseNo = reader.ReadASCII(18);
                jT808_CarDVR_Up_0x10_AccidentSuspectin.JT808_CarDVR_Up_0x10_DrivingStatuss = new List <JT808_CarDVR_Up_0x10_DrivingStatus>();
                for (int j = 0; j < 100; j++)//100组
                {
                    jT808_CarDVR_Up_0x10_AccidentSuspectin.JT808_CarDVR_Up_0x10_DrivingStatuss.Add(new JT808_CarDVR_Up_0x10_DrivingStatus
                    {
                        Speed        = reader.ReadByte(),
                        StatusSignal = reader.ReadByte()
                    });
                }
                jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng = reader.ReadInt32();
                jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat = reader.ReadInt32();
                jT808_CarDVR_Up_0x10_AccidentSuspectin.Height = reader.ReadInt16();
                value.JT808_CarDVR_Up_0x10_AccidentSuspectins.Add(jT808_CarDVR_Up_0x10_AccidentSuspectin);
            }
            return(value);
        }
Beispiel #23
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_CarDVR_Down_0x83 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_CarDVR_Down_0x83 value = new JT808_CarDVR_Down_0x83();

            value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
            return(value);
        }
Beispiel #24
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_CarDVR_Up_0x06 value = new JT808_CarDVR_Up_0x06();
            var hex = reader.ReadVirtualArray(6);

            value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{hex.ToArray().ToHexString()}]实时时间", value.RealTime);
            value.SignalOperate = reader.ReadByte();
            writer.WriteNumber($"[{value.SignalOperate.ReadNumber()}]信号个数", value.SignalOperate);
            hex      = reader.ReadVirtualArray(10);
            value.D0 = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]D0", value.D0);
            hex      = reader.ReadVirtualArray(10);
            value.D1 = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]D1", value.D1);
            hex      = reader.ReadVirtualArray(10);
            value.D2 = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]D2", value.D2);
            hex             = reader.ReadVirtualArray(10);
            value.NearLight = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]近光灯", value.NearLight);
            hex            = reader.ReadVirtualArray(10);
            value.FarLight = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]远光灯", value.FarLight);
            hex             = reader.ReadVirtualArray(10);
            value.RightTurn = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]右转向", value.RightTurn);
            hex            = reader.ReadVirtualArray(10);
            value.LeftTurn = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]左转向", value.LeftTurn);
            hex         = reader.ReadVirtualArray(10);
            value.Brake = reader.ReadString(10);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]制动", value.Brake);
        }
Beispiel #25
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_0x1210 value = new JT808_0x1210();

            value.TerminalId          = reader.ReadString(30);
            value.AlarmIdentification = new AlarmIdentificationProperty
            {
                TerminalId  = reader.ReadString(30),
                Time        = reader.ReadDateTime_yyMMddHHmmss(),
                SN          = reader.ReadByte(),
                AttachCount = reader.ReadByte(),
                Retain1     = reader.ReadByte(),
                Retain2     = reader.ReadByte()
            };
            value.AlarmId     = reader.ReadString(32);
            value.InfoType    = reader.ReadByte();
            value.AttachCount = reader.ReadByte();
            if (value.AttachCount > 0)
            {
                value.AttachInfos = new List <AttachProperty>();
                for (int i = 0; i < value.AttachCount; i++)
                {
                    AttachProperty attachProperty = new AttachProperty();
                    attachProperty.FileNameLength = reader.ReadByte();
                    attachProperty.FileName       = reader.ReadString(attachProperty.FileNameLength);
                    attachProperty.FileSize       = reader.ReadUInt32();
                    value.AttachInfos.Add(attachProperty);
                }
            }
            return(value);
        }
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_0x9206 value = new JT808_0x9206();

            value.ServerIpLength = reader.ReadByte();
            writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength);
            string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString();

            value.ServerIp = reader.ReadString(value.ServerIpLength);
            writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIp);
            value.Port = reader.ReadUInt16();
            writer.WriteNumber($"[{value.Port.ReadNumber()}]服务器端口", value.Port);
            value.UserNameLength = reader.ReadByte();
            writer.WriteNumber($"[{value.UserNameLength.ReadNumber()}]用户名长度", value.UserNameLength);
            string userNameHex = reader.ReadVirtualArray(value.UserNameLength).ToArray().ToHexString();

            value.UserName = reader.ReadString(value.UserNameLength);
            writer.WriteString($"[{userNameHex}]用户名", value.UserName);
            value.PasswordLength = reader.ReadByte();
            writer.WriteNumber($"[{value.PasswordLength.ReadNumber()}]密码长度", value.PasswordLength);
            string passwordHex = reader.ReadVirtualArray(value.PasswordLength).ToArray().ToHexString();

            value.Password = reader.ReadString(value.PasswordLength);
            writer.WriteString($"[{passwordHex}]密码", value.Password);
            value.FileUploadPathLength = reader.ReadByte();
            writer.WriteNumber($"[{value.FileUploadPathLength.ReadNumber()}]文件上传路径长度", value.FileUploadPathLength);
            string fileUploadPathHex = reader.ReadVirtualArray(value.FileUploadPathLength).ToArray().ToHexString();

            value.FileUploadPath = reader.ReadString(value.FileUploadPathLength);
            writer.WriteString($"[{fileUploadPathHex}]文件上传路径", value.FileUploadPath);

            value.ChannelNo = reader.ReadByte();
            writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo));
            value.BeginTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.EndTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]起始时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.AlarmFlag = reader.ReadUInt64();
            writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag);
            value.MediaType = reader.ReadByte();
            writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.MediaType));
            value.StreamType = reader.ReadByte();
            writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType));
            value.MemoryPositon = reader.ReadByte();
            writer.WriteString($"[{value.MemoryPositon.ReadNumber()}]存储器类型", MemoryPositonDisplay(value.MemoryPositon));
            value.TaskExcuteCondition = reader.ReadByte();
            writer.WriteString($"[{value.TaskExcuteCondition.ReadNumber()}]任务执行条件", TaskExcuteConditionDisplay(value.TaskExcuteCondition));
Beispiel #27
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_CarDVR_Up_0x03 value = new JT808_CarDVR_Up_0x03();
            var hex = reader.ReadVirtualArray(6);

            value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{hex.ToArray().ToHexString()}]实时时间", value.RealTime);
            hex = reader.ReadVirtualArray(6);
            value.FirstInstallTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{hex.ToArray().ToHexString()}]初次安装时间", value.RealTime);
            hex = reader.ReadVirtualArray(4);
            value.FirstMileage = reader.ReadBCD(8);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]初始里程", value.FirstMileage);
            hex = reader.ReadVirtualArray(4);
            value.TotalMilage = reader.ReadBCD(8);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]累计里程", value.TotalMilage);
        }
Beispiel #28
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_CarDVR_Up_0x02 value = new JT808_CarDVR_Up_0x02();
            var hex = reader.ReadVirtualArray(6);

            value.RealTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{hex.ToArray().ToHexString()}]实时时间", value.RealTime);
        }
Beispiel #29
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public JT808_CarDVR_Up_0x04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
        {
            JT808_CarDVR_Up_0x04 value = new JT808_CarDVR_Up_0x04();

            value.RealTime         = reader.ReadDateTime_yyMMddHHmmss();
            value.PulseCoefficient = reader.ReadUInt16();
            return(value);
        }
Beispiel #30
0
#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释
        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
        {
            JT808_0x9205 value = new JT808_0x9205();

            value.ChannelNo = reader.ReadByte();
            writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo));
            value.BeginTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.EndTime = reader.ReadDateTime_yyMMddHHmmss();
            writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]起始时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
            value.AlarmFlag = reader.ReadUInt64();
            writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag);
            value.MediaType = reader.ReadByte();
            writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.MediaType));
            value.StreamType = reader.ReadByte();
            writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType));
            value.MemoryType = reader.ReadByte();
            writer.WriteString($"[{value.MemoryType.ReadNumber()}]存储器类型", MemoryTypeDisplay(value.MemoryType));