示例#1
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1500_0x1502 value = new JT809_0x1500_0x1502();

            value.PhotoRspFlag = (JT809_0x1502_PhotoRspFlag)reader.ReadByte();
            writer.WriteString($"[{value.PhotoRspFlag.ToByteValue()}]拍照应答标识", value.PhotoRspFlag.ToString());
            if (config.Version == JT809Version.JTT2011)
            {
                config.GetMessagePackFormatter <JT809VehiclePositionProperties>().Analyze(ref reader, writer, config);
            }
            else if (config.Version == JT809Version.JTT2019)
            {
                config.GetMessagePackFormatter <JT809VehiclePositionProperties_2019>().Analyze(ref reader, writer, config);
            }
            value.LensID = reader.ReadByte();
            writer.WriteNumber($"[{value.LensID}]镜头ID", value.LensID);
            value.PhotoLen = reader.ReadUInt32();
            writer.WriteNumber($"[{value.PhotoLen}]图片长度", value.PhotoLen);
            value.SizeType = (JT809_0x9502_SizeType)reader.ReadByte();
            writer.WriteString($"[{value.SizeType.ToByteValue()}]图片大小", value.SizeType.ToString());
            value.Type = (JT809_0x9502_ImageType)reader.ReadByte();
            writer.WriteString($"[{value.Type.ToByteValue()}]图像格式", value.Type.ToString());
            if (value.PhotoLen > 0)
            {
                var virtualHex = reader.ReadVirtualArray((int)value.PhotoLen);
                value.Photo = reader.ReadArray((int)value.PhotoLen).ToArray();
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]图片内容", value.Photo);
            }
        }
示例#2
0
        public JT809_0x9400_0x9403 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            var value = new JT809_0x9400_0x9403();

            if (config.Version == JT809Version.JTT2011)
            {
                value.WarnSrc = (JT809WarnSrc)reader.ReadByte();
            }
            else
            {
                value.SourcePlatformId = reader.ReadBigNumber(11);
            }
            value.WarnType = (JT809WarnType)reader.ReadUInt16();
            value.WarnTime = reader.ReadUTCDateTime();
            if (config.Version == JT809Version.JTT2019)
            {
                value.StartTime = reader.ReadUTCDateTime();
                value.EndTime   = reader.ReadUTCDateTime();
#warning 此处车牌号文档长度有误,使用旧版长度21
                value.VehicleNo             = reader.ReadString(21);
                value.VehicleColor          = (JT809VehicleColorType)reader.ReadByte();
                value.DestinationPlatformId = reader.ReadBigNumber(11);
                value.DRVLineId             = reader.ReadUInt32();
            }
            value.WarnLength  = reader.ReadUInt32();
            value.WarnContent = reader.ReadString((int)value.WarnLength);
            return(value);
        }
示例#3
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9400_0x9401 value = new JT809_0x9400_0x9401();

            value.WarnSrc = (JT809WarnSrc)reader.ReadByte();
            writer.WriteString($"[{value.WarnSrc.ToByteValue()}]报警信息来源", value.WarnSrc.ToString());
            value.WarnType = reader.ReadUInt16();
            writer.WriteNumber($"[{value.WarnType.ReadNumber()}]报警类型", value.WarnType);
            var virtualHex = reader.ReadVirtualArray(8);

            value.WarnTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]报警时间", value.WarnTime);
            virtualHex          = reader.ReadVirtualArray(4);
            value.SupervisionID = reader.ReadHex(4);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]报警督办ID", value.SupervisionID);
            virtualHex = reader.ReadVirtualArray(8);
            value.SupervisionEndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办截止时间", value.SupervisionEndTime);
            value.SupervisionLevel = (JT809_9401_SupervisionLevel)reader.ReadByte();
            writer.WriteString($"[{value.SupervisionLevel.ToByteValue()}]督办级别", value.SupervisionLevel.ToString());
            virtualHex       = reader.ReadVirtualArray(16);
            value.Supervisor = reader.ReadString(16);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办人", value.Supervisor);
            virtualHex          = reader.ReadVirtualArray(20);
            value.SupervisorTel = reader.ReadString(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办联系电话", value.SupervisorTel);
            virtualHex            = reader.ReadVirtualArray(32);
            value.SupervisorEmail = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办联系电子邮件", value.SupervisorEmail);
        }
示例#4
0
        public JT809_0x1400_0x1403 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            var value = new JT809_0x1400_0x1403();

            if (config.Version == JT809Version.JTT2011)
            {
                value.InfoID = reader.ReadUInt32();
                value.Result = (JT809_0x1403_Result)reader.ReadByte();
            }
            else
            {
                value.SourcePlatformId      = reader.ReadBigNumber(11);
                value.WarnType              = (JT809WarnType)reader.ReadUInt16();
                value.WarnTime              = reader.ReadUTCDateTime();
                value.StartTime             = reader.ReadUTCDateTime();
                value.EndTime               = reader.ReadUTCDateTime();
                value.VehicleNo             = reader.ReadString(21);
                value.VehicleColor          = (JT809VehicleColorType)reader.ReadByte();
                value.DestinationPlatformId = reader.ReadBigNumber(11);
                value.DRVLineId             = reader.ReadUInt32();
                value.InfoLength            = reader.ReadUInt32();
                value.InfoContent           = reader.ReadString((int)value.InfoLength);
            }
            return(value);
        }
示例#5
0
        public JT809_0x1500_0x1502 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1500_0x1502 value = new JT809_0x1500_0x1502();

            value.PhotoRspFlag              = (JT809_0x1502_PhotoRspFlag)reader.ReadByte();
            value.VehiclePosition.Encrypt   = (JT809_VehiclePositionEncrypt)reader.ReadByte();
            value.VehiclePosition.Day       = reader.ReadByte();
            value.VehiclePosition.Month     = reader.ReadByte();
            value.VehiclePosition.Year      = reader.ReadUInt16();
            value.VehiclePosition.Hour      = reader.ReadByte();
            value.VehiclePosition.Minute    = reader.ReadByte();
            value.VehiclePosition.Second    = reader.ReadByte();
            value.VehiclePosition.Lon       = reader.ReadUInt32();
            value.VehiclePosition.Lat       = reader.ReadUInt32();
            value.VehiclePosition.Vec1      = reader.ReadUInt16();
            value.VehiclePosition.Vec2      = reader.ReadUInt16();
            value.VehiclePosition.Vec3      = reader.ReadUInt32();
            value.VehiclePosition.Direction = reader.ReadUInt16();
            value.VehiclePosition.Altitude  = reader.ReadUInt16();
            value.VehiclePosition.State     = reader.ReadUInt32();
            value.VehiclePosition.Alarm     = reader.ReadUInt32();
            value.LensID   = reader.ReadByte();
            value.PhotoLen = reader.ReadUInt32();
            value.SizeType = (JT809__0x9502_SizeType)reader.ReadByte();
            value.Type     = (JT809__0x9502_ImageType)reader.ReadByte();
            if (value.PhotoLen > 0)
            {
                value.Photo = reader.ReadArray((int)value.PhotoLen).ToArray();
            }
            return(value);
        }
示例#6
0
        public JT809_JT1078_0x9800_0x9802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9800_0x9802 value = new JT809_JT1078_0x9800_0x9802();

            value.ChannelId  = reader.ReadByte();
            value.AVitemType = reader.ReadByte();
            return(value);
        }
示例#7
0
        public JT809_JT1078_0x9800_0x9802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9800_0x9802 jT808_JT1078_0x9800_0x9802 = new JT809_JT1078_0x9800_0x9802();

            jT808_JT1078_0x9800_0x9802.ChannelId  = reader.ReadByte();
            jT808_JT1078_0x9800_0x9802.AVitemType = reader.ReadByte();
            return(jT808_JT1078_0x9800_0x9802);
        }
        public JT809_JT1078_0x9900_0x9901 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9900_0x9901 jT808_JT1078_0x9900_0x9901 = new JT809_JT1078_0x9900_0x9901();

            jT808_JT1078_0x9900_0x9901.Result     = reader.ReadByte();
            jT808_JT1078_0x9900_0x9901.ItemNumber = reader.ReadByte();
            return(jT808_JT1078_0x9900_0x9901);
        }
示例#9
0
        public JT809_0x9500_0x9502 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9500_0x9502 value = new JT809_0x9500_0x9502();

            value.LensID   = reader.ReadByte();
            value.SizeType = (JT809_0x9502_SizeType)reader.ReadByte();
            return(value);
        }
        public JT809_0x9500_0x9502 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9500_0x9502 jT809_0X9500_0X9502 = new JT809_0x9500_0x9502();

            jT809_0X9500_0X9502.LensID   = reader.ReadByte();
            jT809_0X9500_0X9502.SizeType = reader.ReadByte();
            return(jT809_0X9500_0X9502);
        }
示例#11
0
        public JT809_JT1078_0x9900_0x9901 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9900_0x9901 value = new JT809_JT1078_0x9900_0x9901();

            value.Result     = (JT809_JT1078_0x9900_0x9901_Result)reader.ReadByte();
            value.ItemNumber = reader.ReadByte();
            return(value);
        }
示例#12
0
        public JT809_JT1078_0x9A00_0x9A02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9A00_0x9A02 jT808_JT1078_0x9A00_0x9A02 = new JT809_JT1078_0x9A00_0x9A02();

            jT808_JT1078_0x9A00_0x9A02.ControlType = reader.ReadByte();
            jT808_JT1078_0x9A00_0x9A02.FastTime    = reader.ReadByte();
            jT808_JT1078_0x9A00_0x9A02.DateTime    = reader.ReadUTCDateTime();
            return(jT808_JT1078_0x9A00_0x9A02);
        }
示例#13
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_JT1078_0x9900_0x9901 value = new JT809_JT1078_0x9900_0x9901();

            value.Result = (JT809_JT1078_0x9900_0x9901_Result)reader.ReadByte();
            writer.WriteString($"[{  (byte)value.Result }]应答结果", value.Result.ToString());
            value.ItemNumber = reader.ReadByte();
            writer.WriteNumber($"[{value.ItemNumber.ReadNumber()}]资源目录总数", value.ItemNumber);
        }
示例#14
0
        public JT809_JT1078_0x9A00_0x9A02 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9A00_0x9A02 value = new JT809_JT1078_0x9A00_0x9A02();

            value.ControlType = (ControlType)reader.ReadByte();
            value.FastTime    = (FastTime)reader.ReadByte();
            value.DateTime    = reader.ReadUTCDateTime();
            return(value);
        }
示例#15
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9500_0x9502 value = new JT809_0x9500_0x9502();

            value.LensID = reader.ReadByte();
            writer.WriteNumber($"[{value.LensID.ReadNumber() }]镜头ID", value.LensID);
            value.SizeType = (JT809_0x9502_SizeType)reader.ReadByte();
            writer.WriteString($"[{value.SizeType.ToByteValue()}]图片大小", value.SizeType.ToString());
        }
示例#16
0
        public JT809_JT1078_0x9800_0x9801 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9800_0x9801 jT808_JT1078_0x9800_0x9801 = new JT809_JT1078_0x9800_0x9801();

            jT808_JT1078_0x9800_0x9801.ChannelId     = reader.ReadByte();
            jT808_JT1078_0x9800_0x9801.AVitemType    = reader.ReadByte();
            jT808_JT1078_0x9800_0x9801.AuthorizeCode = reader.ReadArray(64).ToArray();
            jT808_JT1078_0x9800_0x9801.GnssData      = reader.ReadArray(36).ToArray();
            return(jT808_JT1078_0x9800_0x9801);
        }
示例#17
0
        public JT809_JT1078_0x9800_0x9801 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9800_0x9801 value = new JT809_JT1078_0x9800_0x9801();

            value.ChannelId     = reader.ReadByte();
            value.AVitemType    = reader.ReadByte();
            value.AuthorizeCode = reader.ReadString(64);
            value.GnssData      = reader.ReadArray(36).ToArray();
            return(value);
        }
示例#18
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1500_0x1502 value = new JT809_0x1500_0x1502();

            value.PhotoRspFlag = (JT809_0x1502_PhotoRspFlag)reader.ReadByte();
            writer.WriteString($"[{value.PhotoRspFlag.ToByteValue()}]拍照应答标识", value.PhotoRspFlag.ToString());
            writer.WriteStartObject("车辆定位信息");
            value.VehiclePosition.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte();
            writer.WriteString($"[{value.VehiclePosition.Encrypt.ToByteValue()}]是否使用国家测绘局批准的地图保密插件进行加密", value.VehiclePosition.Encrypt.ToString());
            value.VehiclePosition.Day = reader.ReadByte();
            writer.WriteNumber($"[{value.VehiclePosition.Day}]日", value.VehiclePosition.Day);
            value.VehiclePosition.Month = reader.ReadByte();
            writer.WriteNumber($"[{value.VehiclePosition.Month}]月", value.VehiclePosition.Month);
            value.VehiclePosition.Year = reader.ReadUInt16();
            writer.WriteNumber($"[{value.VehiclePosition.Year}]年", value.VehiclePosition.Year);
            value.VehiclePosition.Hour = reader.ReadByte();
            writer.WriteNumber($"[{value.VehiclePosition.Hour}]时", value.VehiclePosition.Hour);
            value.VehiclePosition.Minute = reader.ReadByte();
            writer.WriteNumber($"[{value.VehiclePosition.Minute}]分", value.VehiclePosition.Minute);
            value.VehiclePosition.Second = reader.ReadByte();
            writer.WriteNumber($"[{value.VehiclePosition.Second}]秒", value.VehiclePosition.Second);
            value.VehiclePosition.Lon = reader.ReadUInt32();
            writer.WriteNumber($"[{value.VehiclePosition.Lon}]经度", value.VehiclePosition.Lon);
            value.VehiclePosition.Lat = reader.ReadUInt32();
            writer.WriteNumber($"[{value.VehiclePosition.Lat}]纬度", value.VehiclePosition.Lat);
            value.VehiclePosition.Vec1 = reader.ReadUInt16();
            writer.WriteNumber($"[{value.VehiclePosition.Vec1}]速度", value.VehiclePosition.Vec1);
            value.VehiclePosition.Vec2 = reader.ReadUInt16();
            writer.WriteNumber($"[{value.VehiclePosition.Vec2}]行驶记录速度", value.VehiclePosition.Vec2);
            value.VehiclePosition.Vec3 = reader.ReadUInt32();
            writer.WriteNumber($"[{value.VehiclePosition.Vec3}]车辆当前总里程数", value.VehiclePosition.Vec3);
            value.VehiclePosition.Direction = reader.ReadUInt16();
            writer.WriteNumber($"[{value.VehiclePosition.Direction}]方向", value.VehiclePosition.Direction);
            value.VehiclePosition.Altitude = reader.ReadUInt16();
            writer.WriteNumber($"[{value.VehiclePosition.Altitude}]海拔高度", value.VehiclePosition.Altitude);
            value.VehiclePosition.State = reader.ReadUInt32();
            writer.WriteNumber($"[{value.VehiclePosition.State}]车辆状态", value.VehiclePosition.State);
            value.VehiclePosition.Alarm = reader.ReadUInt32();
            writer.WriteNumber($"[{value.VehiclePosition.Alarm}]报警状态", value.VehiclePosition.Alarm);
            writer.WriteEndObject();
            value.LensID = reader.ReadByte();
            writer.WriteNumber($"[{value.LensID}]镜头ID", value.LensID);
            value.PhotoLen = reader.ReadUInt32();
            writer.WriteNumber($"[{value.PhotoLen}]图片长度", value.PhotoLen);
            value.SizeType = (JT809__0x9502_SizeType)reader.ReadByte();
            writer.WriteString($"[{value.SizeType.ToByteValue()}]图片大小", value.SizeType.ToString());
            value.Type = (JT809__0x9502_ImageType)reader.ReadByte();
            writer.WriteString($"[{value.Type.ToByteValue()}]图像格式", value.Type.ToString());
            if (value.PhotoLen > 0)
            {
                var virtualHex = reader.ReadVirtualArray((int)value.PhotoLen);
                value.Photo = reader.ReadArray((int)value.PhotoLen).ToArray();
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]图片内容", value.Photo);
            }
        }
示例#19
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value = new JT809_0x1400_0x1402();

            if (config.Version == JT809Version.JTT2011)
            {
                value.WarnSrc = (JT809WarnSrc)reader.ReadByte();
                writer.WriteString($"[{value.WarnSrc.ToByteValue()}]报警信息来源", value.WarnSrc.ToString());
            }
            else
            {
                var virtualHex = reader.ReadVirtualArray(11);
                value.SourcePlatformId = reader.ReadString(11);
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]发起报警平台唯一编码", value.SourcePlatformId);
            }
            value.WarnType = (JT809WarnType)reader.ReadUInt16();
            writer.WriteString($"[{value.WarnType.ToByteValue()}]报警类型", value.WarnType.ToString());
            var hex = reader.ReadVirtualArray(8);

            value.WarnTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{hex.ToArray().ToHexString()}]报警时间", value.WarnTime);
            if (config.Version == JT809Version.JTT2011)
            {
                value.InfoID = reader.ReadUInt32();
                writer.WriteNumber($"[{value.InfoID.ReadNumber()}]信息ID", value.InfoID);
            }
            else
            {
                hex             = reader.ReadVirtualArray(8);
                value.StartTime = reader.ReadUTCDateTime();
                writer.WriteString($"[{hex.ToArray().ToHexString()}]事件开始时间", value.StartTime);
                hex           = reader.ReadVirtualArray(8);
                value.EndTime = reader.ReadUTCDateTime();
                writer.WriteString($"[{hex.ToArray().ToHexString()}]事件结束时间", value.EndTime);
#warning 此处车牌号文档长度有误,使用旧版长度21
                hex             = reader.ReadVirtualArray(21);
                value.VehicleNo = reader.ReadString(21);
                writer.WriteString($"[{hex.ToArray().ToHexString()}]车牌号码", value.VehicleNo);
                value.VehicleColor = (JT809VehicleColorType)reader.ReadByte();
                writer.WriteString($"[{value.VehicleColor.ToByteValue()}]车牌颜色", value.VehicleColor.ToString());
                hex = reader.ReadVirtualArray(11);
                value.DestinationPlatformId = reader.ReadString(11);
                writer.WriteString($"[{hex.ToArray().ToHexString()}]被报警平台唯一编码", value.DestinationPlatformId);
                value.DRVLineId = reader.ReadUInt32();
                writer.WriteNumber($"[{value.DRVLineId.ReadNumber()}]线路ID", value.DRVLineId);
            }
            value.InfoLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.InfoLength.ReadNumber()}]数据长度", value.InfoLength);
            hex = reader.ReadVirtualArray((int)value.InfoLength);
            value.InfoContent = reader.ReadString((int)value.InfoLength);
            writer.WriteString($"[{hex.ToArray().ToHexString()}]信息内容", value.InfoContent);
        }
示例#20
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_JT1078_0x9A00_0x9A02 value = new JT809_JT1078_0x9A00_0x9A02();

            value.ControlType = (ControlType)reader.ReadByte();
            writer.WriteString($"[{((byte)value.ControlType).ReadNumber()}]控制类型", value.ControlType.ToString());
            value.FastTime = (FastTime)reader.ReadByte();
            writer.WriteString($"[{((byte)value.FastTime).ReadNumber()}]快进或倒退倍数", value.FastTime.ToString());
            var virtualHex = reader.ReadVirtualArray(8);

            value.DateTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]拖动位置", value.DateTime);
        }
示例#21
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value = new JT809_0x9500_0x9504();

            if (config.Version == JT809Version.JTT2019)
            {
                var hex = reader.ReadVirtualArray(8);
                value.StartTime = reader.ReadUTCDateTime();
                writer.WriteString($"[{hex.ToArray().ToHexString()}]开始时间", value.StartTime);
                hex           = reader.ReadVirtualArray(8);
                value.EndTime = reader.ReadUTCDateTime();
                writer.WriteString($"[{hex.ToArray().ToHexString()}]结束时间", value.EndTime);
                value.Command = (JT809CommandType)reader.ReadByte();
                writer.WriteString($"[{value.Command.ToByteValue()}]命令字ID", value.Command.ToString());
            }
            else
            {
                value.Command = (JT809CommandType)reader.ReadByte();
                writer.WriteString($"[{value.Command.ToByteValue()}]命令字ID", value.Command.ToString());
                switch (value.Command)
                {
                case JT809CommandType.记录仪标准版本:
                case JT809CommandType.当前驾驶人信息:
                case JT809CommandType.记录仪时间:
                case JT809CommandType.记录仪累计行驶里程:
                case JT809CommandType.记录仪脉冲系数:
                case JT809CommandType.车辆信息:
                case JT809CommandType.记录仪状态信号配置信息:
                case JT809CommandType.记录仪唯一性编号:
                    break;

                case JT809CommandType.采集记录仪行驶记录:
                case JT809CommandType.采集记录仪位置信息记录:
                case JT809CommandType.采集记录仪事故疑点记录:
                case JT809CommandType.采集记录仪超时驾驶记录:
                case JT809CommandType.采集记录仪驾驶人身份记录:
                case JT809CommandType.采集记录仪外部供电记录:
                case JT809CommandType.采集记录仪参数修改记录:
                case JT809CommandType.采集记录仪速度状态日志:
                    var hex = reader.ReadVirtualArray(6);
                    value.StartTime = reader.ReadDateTime6();
                    writer.WriteString($"[{hex.ToArray().ToHexString()}]开始时间", value.StartTime);
                    hex           = reader.ReadVirtualArray(6);
                    value.EndTime = reader.ReadDateTime6();
                    writer.WriteString($"[{hex.ToArray().ToHexString()}]结束时间", value.EndTime);
                    value.Max = reader.ReadUInt16();
                    writer.WriteNumber($"[{value.Max.ReadNumber()}]最大数据数", value.Max);
                    break;
                }
            }
        }
示例#22
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9200 value = new JT809_0x9200();

            //1078qq群808432702:大兄弟提供的
            //由于车辆注册信息应答消息0x9201子业务不存在车牌号和颜色需要跳过
            if (config.Version == JT809Version.JTT2019)
            {
                var subBusinessType = reader.ReadVirtualUInt16();
                if (subBusinessType != JT809SubBusinessType.车辆注册信息应答消息.ToUInt16Value())
                {
                    var virtualHex = reader.ReadVirtualArray(21);
                    value.VehicleNo = reader.ReadString(21);
                    writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车牌号", value.VehicleNo);
                    value.VehicleColor = (JT809VehicleColorType)reader.ReadByte();
                    writer.WriteString($"[{value.VehicleColor.ToByteValue()}]车牌颜色", value.VehicleColor.ToString());
                }
            }
            else
            {
                var virtualHex = reader.ReadVirtualArray(21);
                value.VehicleNo = reader.ReadString(21);
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车牌号", value.VehicleNo);
                value.VehicleColor = (JT809VehicleColorType)reader.ReadByte();
                writer.WriteString($"[{value.VehicleColor.ToByteValue()}]车牌颜色", value.VehicleColor.ToString());
            }
            value.SubBusinessType = reader.ReadUInt16();
            writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString());
            value.DataLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DataLength.ReadNumber()}]后续数据长度", value.DataLength);
            try
            {
                if (config.SubBusinessTypeFactory.TryGetValue(value.SubBusinessType, out object instance))
                {
                    if (instance is JT809SubBodies subBodies)
                    {
                        if (!subBodies.SkipSerialization)
                        {
                            writer.WriteStartObject("子业务类型");
                            instance.Analyze(ref reader, writer, config);
                            writer.WriteEndObject();
                        }
                    }
                }
            }
            catch
            {
                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}");
            }
        }
        public JT809_JT1078_0x9A00_0x9A01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9A00_0x9A01 jT808_JT1078_0x9A00_0x9A01 = new JT809_JT1078_0x9A00_0x9A01();

            jT808_JT1078_0x9A00_0x9A01.ChannelId         = reader.ReadByte();
            jT808_JT1078_0x9A00_0x9A01.AVItemType        = reader.ReadByte();
            jT808_JT1078_0x9A00_0x9A01.StreamType        = reader.ReadByte();
            jT808_JT1078_0x9A00_0x9A01.MemType           = reader.ReadByte();
            jT808_JT1078_0x9A00_0x9A01.PlayBackStartTime = reader.ReadUTCDateTime();
            jT808_JT1078_0x9A00_0x9A01.PlayBackEndTime   = reader.ReadUTCDateTime();
            jT808_JT1078_0x9A00_0x9A01.AuthorizeCode     = reader.ReadArray(64).ToArray();
            jT808_JT1078_0x9A00_0x9A01.GnssData          = reader.ReadArray(36).ToArray();
            return(jT808_JT1078_0x9A00_0x9A01);
        }
示例#24
0
        public JT809_0x9007 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9007 value = new JT809_0x9007();

            if (config.Version == JT809Version.JTT2019)
            {
                value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte();
            }
            else
            {
                value.ReasonCode = (JT809_0x9007_ReasonCode)reader.ReadByte();
            }
            return(value);
        }
示例#25
0
        public JT809_JT1078_0x1900_Record Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x1900_Record value = new JT809_JT1078_0x1900_Record();

            value.ChannelId  = reader.ReadByte();
            value.StartTime  = reader.ReadUTCDateTime();
            value.EndTime    = reader.ReadUTCDateTime();
            value.AlarmType  = reader.ReadUInt64();
            value.AVItemType = reader.ReadByte();
            value.StreamType = reader.ReadByte();
            value.MemType    = reader.ReadByte();
            value.FileSize   = reader.ReadUInt32();
            return(value);
        }
示例#26
0
        public JT809_JT1078_0x9A00_0x9A01 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9A00_0x9A01 value = new JT809_JT1078_0x9A00_0x9A01();

            value.ChannelId         = reader.ReadByte();
            value.AVItemType        = reader.ReadByte();
            value.StreamType        = reader.ReadByte();
            value.MemType           = reader.ReadByte();
            value.PlayBackStartTime = reader.ReadUTCDateTime();
            value.PlayBackEndTime   = reader.ReadUTCDateTime();
            value.AuthorizeCode     = reader.ReadString(64);
            value.GnssData          = reader.ReadArray(36).ToArray();
            return(value);
        }
示例#27
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9007 value = new JT809_0x9007();

            if (config.Version == JT809Version.JTT2019)
            {
                value.ErrorCode = (JT809_0x1007_ErrorCode)reader.ReadByte();
                writer.WriteString($"[{value.ErrorCode.ToByteValue()}]错误代码", value.ErrorCode.ToString());
            }
            else
            {
                value.ReasonCode = (JT809_0x9007_ReasonCode)reader.ReadByte();
                writer.WriteString($"[{value.ReasonCode.ToByteValue()}]错误代码", value.ReasonCode.ToString());
            }
        }
        public JT809_0x9400_0x9401 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9400_0x9401 jT809_0X9400_0X9401 = new JT809_0x9400_0x9401();

            jT809_0X9400_0X9401.WarnSrc            = (JT809WarnSrc)reader.ReadByte();
            jT809_0X9400_0X9401.WarnType           = reader.ReadUInt16();
            jT809_0X9400_0X9401.WarnTime           = reader.ReadUTCDateTime();
            jT809_0X9400_0X9401.SupervisionID      = reader.ReadHex(4);
            jT809_0X9400_0X9401.SupervisionEndTime = reader.ReadUTCDateTime();
            jT809_0X9400_0X9401.SupervisionLevel   = reader.ReadByte();
            jT809_0X9400_0X9401.Supervisor         = reader.ReadString(16);
            jT809_0X9400_0X9401.SupervisorTel      = reader.ReadString(20);
            jT809_0X9400_0X9401.SupervisorEmail    = reader.ReadString(32);
            return(jT809_0X9400_0X9401);
        }
示例#29
0
        public JT809_0x9300_0x9301 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9300_0x9301 value = new JT809_0x9300_0x9301();

            if (config.Version == JT809Version.JTT2019)
            {
                value.ObjectType = (JT809_0x9301_ObjectType)reader.ReadByte();
                value.ObjectID   = reader.ReadString(20);
                value.AnswerTime = reader.ReadByte();
            }
            value.InfoID      = reader.ReadUInt32();
            value.InfoLength  = reader.ReadUInt32();
            value.InfoContent = reader.ReadString((int)value.InfoLength);
            return(value);
        }
示例#30
0
        public JT809_JT1078_0x1800_0x1802 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x1800_0x1802 value = new JT809_JT1078_0x1800_0x1802();

            value.Result = (JT809_JT1078_0x1800_0x1802_Result)reader.ReadByte();
            return(value);
        }