示例#1
0
        public JT809_JT1078_0x1700_0x1701 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x1700_0x1701 jT808_JT1078_0X1701 = new JT809_JT1078_0x1700_0x1701();

            jT808_JT1078_0X1701.PlateFormId    = reader.ReadArray(11).ToArray();
            jT808_JT1078_0X1701.AuthorizeCode1 = reader.ReadArray(64).ToArray();
            jT808_JT1078_0X1701.AuthorizeCode2 = reader.ReadArray(64).ToArray();
            return(jT808_JT1078_0X1701);
        }
示例#2
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);
        }
        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);
        }
示例#4
0
        public JT809_JT1078_0x9900_0x9902 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_JT1078_0x9900_0x9902 jT808_JT1078_0x9900_0x9902 = new JT809_JT1078_0x9900_0x9902();

            jT808_JT1078_0x9900_0x9902.ChannelId = reader.ReadByte();
#warning 此处时间8个字节,暂使用utc时间代替
            jT808_JT1078_0x9900_0x9902.StartTime     = reader.ReadUTCDateTime();
            jT808_JT1078_0x9900_0x9902.EndTime       = reader.ReadUTCDateTime();
            jT808_JT1078_0x9900_0x9902.AlarmType     = reader.ReadUInt64();
            jT808_JT1078_0x9900_0x9902.AVItemType    = reader.ReadByte();
            jT808_JT1078_0x9900_0x9902.StreamType    = reader.ReadByte();
            jT808_JT1078_0x9900_0x9902.MemType       = reader.ReadByte();
            jT808_JT1078_0x9900_0x9902.AuthorizeCode = reader.ReadArray(64).ToArray();
            jT808_JT1078_0x9900_0x9902.GnssData      = reader.ReadArray(36).ToArray();
            return(jT808_JT1078_0x9900_0x9902);
        }
示例#5
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value = new JT809_0x1600_0x1602();

            value.DRVLine = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
            writer.WriteString($"[{value.DRVLine.ToHexString()}]路线信息", value.DRVLine.ToHexString());
        }
        public JT809_0x1500_0x1502 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1500_0x1502 jT809_0X1500_0X1502 = new JT809_0x1500_0x1502();

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

            value.DRVLine = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
            return(value);
        }
示例#8
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);
            }
        }
示例#9
0
        public JT809_0x9300_0x9303 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            var value = new JT809_0x9300_0x9303();

            value.SerialList = reader.ReadArray(8).ToArray();
            value.Time       = reader.ReadUTCDateTime();
            return(value);
        }
示例#10
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);
        }
示例#11
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);
            }
        }
示例#12
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value = new JT809_0x9300_0x9303();

            value.SerialList = reader.ReadArray(8).ToArray();
            writer.WriteString($"[{value.SerialList.ToHexString()}]需要重传消息的起始报文序列号和结束的报文序列号", value.SerialList.ToHexString());
            var virtualHex = reader.ReadVirtualArray(8);

            value.Time = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]", value.Time);
        }
示例#13
0
        public JT809_0x1300_0x1303 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            var value = new JT809_0x1300_0x1303();

            value.SerialCount = reader.ReadByte();
            value.SerialList  = new List <byte[]>();
            for (int i = 0; i < SerialCount; i++)
            {
                value.SerialList.Add(reader.ReadArray(8).ToArray());
            }
            value.Time = reader.ReadUTCDateTime();
            return(value);
        }
示例#14
0
        public JT809Header Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809Header jT809Header = new JT809Header();

            jT809Header.MsgLength       = reader.ReadUInt32();
            jT809Header.MsgSN           = reader.ReadUInt32();
            jT809Header.BusinessType    = reader.ReadUInt16();
            jT809Header.MsgGNSSCENTERID = reader.ReadUInt32();
            jT809Header.Version         = new JT809Header_Version(reader.ReadArray(JT809Header_Version.FixedByteLength));
            jT809Header.EncryptFlag     = (JT809Header_Encrypt)reader.ReadByte();
            jT809Header.EncryptKey      = reader.ReadUInt32();
            return(jT809Header);
        }
示例#15
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);
        }
示例#16
0
        public JT809_0x1500_0x1504 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1500_0x1504 value = new JT809_0x1500_0x1504();

            if (config.Version == JT809Version.JTT2019)
            {
                value.SourceDataType = reader.ReadUInt16();
                value.SourceMsgSn    = reader.ReadUInt32();
                value.CommandType    = (JT809CommandType)reader.ReadByte();
            }
            value.TraveldataLength = reader.ReadUInt32();
            value.TraveldataInfo   = reader.ReadArray((int)value.TraveldataLength).ToArray();
            return(value);
        }
示例#17
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            writer.WriteStartObject("车辆定位信息_2019");
            var GNSSData = new JT809VehiclePositionProperties_2019();

            GNSSData.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte();
            writer.WriteString($"[{GNSSData.Encrypt.ToByteValue()}]是否使用国家测绘局批准的地图保密插件进行加密", GNSSData.Encrypt.ToString());
            var gnssDataLength = reader.ReadUInt32();

            writer.WriteNumber($"[{gnssDataLength.ReadNumber()}]车辆定位信息数据长度", gnssDataLength);
            if (config.AnalyzeCallbacks.TryGetValue(0x0200, out JT808AnalyzeCallback jT808AnalyzeCallback))
            {
                jT808AnalyzeCallback(reader.ReadArray((int)gnssDataLength).ToArray(), writer, config);
            }
            else
            {
                GNSSData.GnssData = reader.ReadArray((int)gnssDataLength).ToArray();
                writer.WriteString($"[{GNSSData.GnssData.ToHexString()}]车辆定位信息内容", GNSSData.GnssData.ToHexString());
            }
            var virtualHex = reader.ReadVirtualArray(11);

            GNSSData.PlatformId1 = reader.ReadString(11);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]监控平台唯一编码", GNSSData.PlatformId1);
            GNSSData.Alarm1 = reader.ReadUInt32();
            writer.WriteNumber($"[{GNSSData.Alarm1.ReadNumber()}]报警状态1", GNSSData.Alarm1);
            virtualHex           = reader.ReadVirtualArray(11);
            GNSSData.PlatformId2 = reader.ReadString(11);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]市级监控平台唯一编码", GNSSData.PlatformId2);
            GNSSData.Alarm2 = reader.ReadUInt32();
            writer.WriteNumber($"[{GNSSData.Alarm1.ReadNumber()}]报警状态2", GNSSData.Alarm2);
            virtualHex           = reader.ReadVirtualArray(11);
            GNSSData.PlatformId3 = reader.ReadString(11);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]省级监控平台唯一编码", GNSSData.PlatformId3);
            GNSSData.Alarm3 = reader.ReadUInt32();
            writer.WriteNumber($"[{GNSSData.Alarm1.ReadNumber()}]报警状态3", GNSSData.Alarm3);
            writer.WriteEndObject();
        }
示例#18
0
        public JT809VehiclePositionProperties_2019 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809VehiclePositionProperties_2019 value = new JT809VehiclePositionProperties_2019
            {
                Encrypt     = (JT809_VehiclePositionEncrypt)reader.ReadByte(),
                GnssData    = reader.ReadArray((int)reader.ReadUInt32()).ToArray(),
                PlatformId1 = reader.ReadString(11),
                Alarm1      = reader.ReadUInt32(),
                PlatformId2 = reader.ReadString(11),
                Alarm2      = reader.ReadUInt32(),
                PlatformId3 = reader.ReadString(11),
                Alarm3      = reader.ReadUInt32(),
            };

            return(value);
        }
示例#19
0
        public JT809Header Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809Header value = new JT809Header();

            value.MsgLength       = reader.ReadUInt32();
            value.MsgSN           = reader.ReadUInt32();
            value.BusinessType    = reader.ReadUInt16();
            value.MsgGNSSCENTERID = reader.ReadUInt32();
            value.Version         = new JT809Header_Version(reader.ReadArray(JT809Header_Version.FixedByteLength));
            value.EncryptFlag     = (JT809Header_Encrypt)reader.ReadByte();
            value.EncryptKey      = reader.ReadUInt32();
            if (config.Version == JT809Version.JTT2019)
            {
                value.Time = reader.ReadUTCDateTime();
            }
            return(value);
        }
示例#20
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value = new JT809_0x1300_0x1303();

            value.SerialCount = reader.ReadByte();
            writer.WriteNumber($"[{ value.SerialCount.ReadNumber()}]对应需要重传消息地子业务类型标识", value.SerialCount);
            value.SerialList = new List <byte[]>();
            writer.WriteStartArray("重传消息地子业务类型标识列表");
            for (int i = 0; i < SerialCount; i++)
            {
                var array = reader.ReadArray(8).ToArray();
                writer.WriteString($"[{array.ToHexString()}]需要重传消息的起始报文序列号和结束的报文序列号", array);
            }
            writer.WriteEndArray();
            var virtualHex = reader.ReadVirtualArray(8);

            value.Time = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]重传起始系统utc时间", value.Time);
        }
示例#21
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1500_0x1504 value = new JT809_0x1500_0x1504();

            if (config.Version == JT809Version.JTT2019)
            {
                value.SourceDataType = reader.ReadUInt16();
                writer.WriteString($"[{value.SourceDataType.ReadNumber()}]对应启动车辆定位信息交换请求消息源子业务类型标识", ((JT809SubBusinessType)value.SourceDataType).ToString());
                value.SourceMsgSn = reader.ReadUInt32();
                writer.WriteNumber($"[{value.SourceMsgSn.ReadNumber()}对应启动车辆定位信息交换请求消息源报文序列号]", value.SourceMsgSn);
                value.CommandType = (JT809CommandType)reader.ReadByte();
                writer.WriteString($"[{value.CommandType.ToByteValue()}]命令字", value.CommandType.ToString());
            }
            value.TraveldataLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.TraveldataLength.ReadNumber()}]车辆行驶记录数据体长度", value.TraveldataLength);
            var virtualHex = reader.ReadVirtualArray((int)value.TraveldataLength);

            value.TraveldataInfo = reader.ReadArray((int)value.TraveldataLength).ToArray();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车辆行驶记录信息", value.TraveldataInfo.ToHexString());
        }
示例#22
0
        public JT809_0x1200_0x1202 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x1200_0x1202 value = new JT809_0x1200_0x1202();

            if (config.Version == JT809Version.JTT2011)
            {
                value.VehiclePosition           = new JT809VehiclePositionProperties();
                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();
            }
            else
            {
                value.GNSSData            = new JT809VehiclePositionProperties_2019();
                value.GNSSData.Encrypt    = (JT809_VehiclePositionEncrypt)reader.ReadByte();
                value.GNSSData.DataLength = reader.ReadUInt32();
#warning 引用808的0x0200协议
                value.GNSSData.GnssData    = reader.ReadArray((int)value.GNSSData.DataLength).ToArray();
                value.GNSSData.PlatformId1 = reader.ReadString(11);
                value.GNSSData.Alarm1      = reader.ReadUInt32();
                value.GNSSData.PlatformId2 = reader.ReadString(11);
                value.GNSSData.Alarm2      = reader.ReadUInt32();
                value.GNSSData.PlatformId3 = reader.ReadString(11);
                value.GNSSData.Alarm3      = reader.ReadUInt32();
            }
            return(value);
        }
示例#23
0
        public JT809_0x9200_0x9202 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9200_0x9202 jT809_0X1200_0x9202 = new JT809_0x9200_0x9202();

            if (config.Version == JT809Version.JTT2011)
            {
                jT809_0X1200_0x9202.VehiclePosition           = new JT809VehiclePositionProperties();
                jT809_0X1200_0x9202.VehiclePosition.Encrypt   = (JT809_VehiclePositionEncrypt)reader.ReadByte();
                jT809_0X1200_0x9202.VehiclePosition.Day       = reader.ReadByte();
                jT809_0X1200_0x9202.VehiclePosition.Month     = reader.ReadByte();
                jT809_0X1200_0x9202.VehiclePosition.Year      = reader.ReadUInt16();
                jT809_0X1200_0x9202.VehiclePosition.Hour      = reader.ReadByte();
                jT809_0X1200_0x9202.VehiclePosition.Minute    = reader.ReadByte();
                jT809_0X1200_0x9202.VehiclePosition.Second    = reader.ReadByte();
                jT809_0X1200_0x9202.VehiclePosition.Lon       = reader.ReadUInt32();
                jT809_0X1200_0x9202.VehiclePosition.Lat       = reader.ReadUInt32();
                jT809_0X1200_0x9202.VehiclePosition.Vec1      = reader.ReadUInt16();
                jT809_0X1200_0x9202.VehiclePosition.Vec2      = reader.ReadUInt16();
                jT809_0X1200_0x9202.VehiclePosition.Vec3      = reader.ReadUInt32();
                jT809_0X1200_0x9202.VehiclePosition.Direction = reader.ReadUInt16();
                jT809_0X1200_0x9202.VehiclePosition.Altitude  = reader.ReadUInt16();
                jT809_0X1200_0x9202.VehiclePosition.State     = reader.ReadUInt32();
                jT809_0X1200_0x9202.VehiclePosition.Alarm     = reader.ReadUInt32();
            }
            else
            {
                jT809_0X1200_0x9202.GNSSData             = new JT809VehiclePositionProperties_2019();
                jT809_0X1200_0x9202.GNSSData.Encrypt     = (JT809_VehiclePositionEncrypt)reader.ReadByte();
                jT809_0X1200_0x9202.GNSSData.DataLength  = reader.ReadUInt32();
                jT809_0X1200_0x9202.GNSSData.GnssData    = reader.ReadArray((int)jT809_0X1200_0x9202.GNSSData.DataLength).ToArray();
                jT809_0X1200_0x9202.GNSSData.PlatformId1 = reader.ReadBigNumber(11);
                jT809_0X1200_0x9202.GNSSData.Alarm1      = reader.ReadUInt32();
                jT809_0X1200_0x9202.GNSSData.PlatformId2 = reader.ReadBigNumber(11);
                jT809_0X1200_0x9202.GNSSData.Alarm2      = reader.ReadUInt32();
                jT809_0X1200_0x9202.GNSSData.PlatformId3 = reader.ReadBigNumber(11);
                jT809_0X1200_0x9202.GNSSData.Alarm3      = reader.ReadUInt32();
            }
            return(jT809_0X1200_0x9202);
        }
示例#24
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();
            if (config.Version == JT809Version.JTT2011)
            {
                value.VehiclePosition = config.GetMessagePackFormatter <JT809VehiclePositionProperties>().Deserialize(ref reader, config);
            }
            else if (config.Version == JT809Version.JTT2019)
            {
                value.VehiclePosition_2019 = config.GetMessagePackFormatter <JT809VehiclePositionProperties_2019>().Deserialize(ref reader, config);
            }
            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);
        }
示例#25
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_JT1078_0x9A00_0x9A01 value = new JT809_JT1078_0x9A00_0x9A01();

            value.ChannelId = reader.ReadByte();
            writer.WriteString($"[{value.ChannelId.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelId));
            value.AVItemType = reader.ReadByte();
            writer.WriteString($"[{value.AVItemType.ReadNumber()}]音视频资源类型", AVResourceTypeDisplay(value.AVItemType));
            value.StreamType = reader.ReadByte();
            writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType));
            value.MemType = reader.ReadByte();
            writer.WriteString($"[{value.MemType.ReadNumber()}]存储器类型", MemoryTypeDisplay(value.MemType));
            var virtualHex = reader.ReadVirtualArray(8);

            value.PlayBackStartTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]回放开始时间", value.PlayBackStartTime);
            virtualHex            = reader.ReadVirtualArray(8);
            value.PlayBackEndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]回放结束时间", value.PlayBackEndTime);
            virtualHex          = reader.ReadVirtualArray(64);
            value.AuthorizeCode = reader.ReadString(64);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]时效口令", value.AuthorizeCode);
            virtualHex     = reader.ReadVirtualArray(36);
            value.GnssData = reader.ReadArray(36).ToArray();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车辆进入跨域地区后5min之内任一位置", virtualHex.ToArray().ToHexString());
            string LogicalChannelNoDisplay(byte LogicalChannelNo)
            {
                switch (LogicalChannelNo)
                {
                case 1:
                    return("驾驶员");

                case 2:
                    return("车辆正前方");

                case 3:
                    return("车前门");

                case 4:
                    return("车厢前部");

                case 5:
                    return("车厢后部");

                case 7:
                    return("行李舱");

                case 8:
                    return("车辆左侧");

                case 9:
                    return("车辆右侧");

                case 10:
                    return("车辆正后方");

                case 11:
                    return("车厢中部");

                case 12:
                    return("车中门");

                case 13:
                    return("驾驶席车门");

                case 33:
                    return("驾驶员");

                case 36:
                    return("车厢前部");

                case 37:
                    return("车厢后部");

                default:
                    return("预留");
                }
            }

            string AVResourceTypeDisplay(byte AVResourceType)
            {
                switch (AVResourceType)
                {
                case 0:
                    return("音视频");

                case 1:
                    return("音频");

                case 2:
                    return("视频");

                default:
                    break;
                }
                return("未知");
            }

            string StreamTypeDisplay(byte StreamType)
            {
                switch (StreamType)
                {
                case 1:
                    return("主码流");

                case 2:
                    return("子码流");

                default:
                    return("未知");
                }
            }

            string MemoryTypeDisplay(byte MemoryType)
            {
                switch (MemoryType)
                {
                case 1:
                    return("主存储器");

                case 2:
                    return("灾备存储器");

                default:
                    return("未知");
                }
            }
        }
示例#26
0
        public JT809_0x9200_0x9203 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9200_0x9203 value = new JT809_0x9200_0x9203();

            value.GNSSCount = reader.ReadByte();
            value.GNSS      = new List <JT809_0x9200_0x9202>();
            if (value.GNSSCount > 0)
            {
                for (int i = 0; i < value.GNSSCount; i++)
                {
                    try
                    {
                        JT809MessagePackReader jT809_0x9200_0x9202Reader = new JT809MessagePackReader(reader.ReadArray(36));
                        JT809_0x9200_0x9202    jT809_0x1200_0x1202       = config.GetMessagePackFormatter <JT809_0x9200_0x9202>().Deserialize(ref jT809_0x9200_0x9202Reader, config);
                        value.GNSS.Add(jT809_0x1200_0x1202);
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            return(value);
        }
示例#27
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9200_0x9203 value = new JT809_0x9200_0x9203();

            value.GNSSCount = reader.ReadByte();
            writer.WriteNumber($"[{value.GNSSCount.ReadNumber()}]卫星定位数据个数", value.GNSSCount);
            value.GNSS = new List <JT809_0x9200_0x9202>();
            if (value.GNSSCount > 0)
            {
                writer.WriteStartArray("卫星定位数据集合");
                for (int i = 0; i < value.GNSSCount; i++)
                {
                    try
                    {
                        writer.WriteStartObject();
                        JT809MessagePackReader jT809_0x9200_0x9202Reader = new JT809MessagePackReader(reader.ReadArray(36));
                        config.GetMessagePackFormatter <JT809_0x9200_0x9202>().Analyze(ref jT809_0x9200_0x9202Reader, writer, config);
                        writer.WriteEndObject();
                    }
                    catch (Exception)
                    {
                    }
                }
                writer.WriteEndArray();
            }
        }
示例#28
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1200_0x1202 value = new JT809_0x1200_0x1202();

            writer.WriteStartObject("车辆定位信息");
            if (config.Version == JT809Version.JTT2011)
            {
                value.VehiclePosition         = new JT809VehiclePositionProperties();
                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.ReadNumber()}]日", value.VehiclePosition.Day);
                value.VehiclePosition.Month = reader.ReadByte();
                writer.WriteNumber($"[{value.VehiclePosition.Month.ReadNumber()}]月", value.VehiclePosition.Month);
                value.VehiclePosition.Year = reader.ReadUInt16();
                writer.WriteNumber($"[{value.VehiclePosition.Year.ReadNumber()}]年", value.VehiclePosition.Year);
                value.VehiclePosition.Hour = reader.ReadByte();
                writer.WriteNumber($"[{value.VehiclePosition.Hour.ReadNumber()}]时", value.VehiclePosition.Hour);
                value.VehiclePosition.Minute = reader.ReadByte();
                writer.WriteNumber($"[{value.VehiclePosition.Minute.ReadNumber()}]分", value.VehiclePosition.Minute);
                value.VehiclePosition.Second = reader.ReadByte();
                writer.WriteNumber($"[{value.VehiclePosition.Second.ReadNumber()}]秒", value.VehiclePosition.Second);
                value.VehiclePosition.Lon = reader.ReadUInt32();
                writer.WriteNumber($"[{value.VehiclePosition.Lon.ReadNumber()}]经度", value.VehiclePosition.Lon);
                value.VehiclePosition.Lat = reader.ReadUInt32();
                writer.WriteNumber($"[{value.VehiclePosition.Lat.ReadNumber()}]经度", value.VehiclePosition.Lat);
                value.VehiclePosition.Vec1 = reader.ReadUInt16();
                writer.WriteNumber($"[{value.VehiclePosition.Vec1.ReadNumber()}]速度", value.VehiclePosition.Vec1);
                value.VehiclePosition.Vec2 = reader.ReadUInt16();
                writer.WriteNumber($"[{value.VehiclePosition.Vec2.ReadNumber()}]行驶记录仪速度", value.VehiclePosition.Vec2);
                value.VehiclePosition.Vec3 = reader.ReadUInt32();
                writer.WriteNumber($"[{value.VehiclePosition.Vec3.ReadNumber()}]车辆当前总里程数", value.VehiclePosition.Vec3);
                value.VehiclePosition.Direction = reader.ReadUInt16();
                writer.WriteNumber($"[{value.VehiclePosition.Direction.ReadNumber()}]方向", value.VehiclePosition.Direction);
                value.VehiclePosition.Altitude = reader.ReadUInt16();
                writer.WriteNumber($"[{value.VehiclePosition.Altitude.ReadNumber()}]海拔高度", value.VehiclePosition.Altitude);
                value.VehiclePosition.State = reader.ReadUInt32();
                writer.WriteNumber($"[{value.VehiclePosition.State.ReadNumber()}]车辆状态", value.VehiclePosition.State);
                value.VehiclePosition.Alarm = reader.ReadUInt32();
                writer.WriteNumber($"[{value.VehiclePosition.Alarm.ReadNumber()}]报警", value.VehiclePosition.Alarm);
            }
            else
            {
                value.GNSSData         = new JT809VehiclePositionProperties_2019();
                value.GNSSData.Encrypt = (JT809_VehiclePositionEncrypt)reader.ReadByte();
                writer.WriteString($"[{value.VehiclePosition.Encrypt.ToByteValue()}]是否使用国家测绘局批准的地图保密插件进行加密", value.VehiclePosition.Encrypt.ToString());
                value.GNSSData.DataLength = reader.ReadUInt32();
                writer.WriteNumber($"[{value.GNSSData.DataLength.ReadNumber()}]车辆定位信息数据长度", value.GNSSData.DataLength);
                value.GNSSData.GnssData = reader.ReadArray((int)value.GNSSData.DataLength).ToArray();
#warning 此处需要提供接口注入
                writer.WriteString($"[{value.GNSSData.GnssData.ToHexString()}]车辆定位信息内容", value.GNSSData.GnssData.ToHexString());
                var virtualHex = reader.ReadVirtualArray(11);
                value.GNSSData.PlatformId1 = reader.ReadString(11);
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]监控平台唯一编码", value.GNSSData.PlatformId1);
                value.GNSSData.Alarm1 = reader.ReadUInt32();
                writer.WriteNumber($"[{value.GNSSData.Alarm1.ReadNumber()}]报警状态", value.GNSSData.Alarm1);
                virtualHex = reader.ReadVirtualArray(11);
                value.GNSSData.PlatformId2 = reader.ReadString(11);
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]市级监控平台唯一编码", value.GNSSData.PlatformId2);
                value.GNSSData.Alarm2 = reader.ReadUInt32();
                writer.WriteNumber($"[{value.GNSSData.Alarm1.ReadNumber()}]报警状态", value.GNSSData.Alarm1);
                virtualHex = reader.ReadVirtualArray(11);
                value.GNSSData.PlatformId3 = reader.ReadString(11);
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]省级监控平台唯一编码", value.GNSSData.PlatformId3);
                value.GNSSData.Alarm3 = reader.ReadUInt32();
                writer.WriteNumber($"[{value.GNSSData.Alarm1.ReadNumber()}]报警状态", value.GNSSData.Alarm1);
            }
            writer.WriteEndObject();
        }
示例#29
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_JT1078_0x9800_0x9801 value = new JT809_JT1078_0x9800_0x9801();

            value.ChannelId = reader.ReadByte();
            writer.WriteString($"[{value.ChannelId.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelId));
            value.AVitemType = reader.ReadByte();
            writer.WriteString($"[{value.AVitemType.ReadNumber()}]音视频资源类型", AVResourceTypeDisplay(value.AVitemType));
            var virtualHex = reader.ReadVirtualArray(64);

            value.AuthorizeCode = reader.ReadString(64);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]时效口令", value.AuthorizeCode);
            if (reader.ReadCurrentRemainContentLength() >= 36)
            {
                value.GnssData = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
                writer.WriteString($"[车辆进入跨域地区后5min之内的任何位置]", value.GnssData.ToHexString());
            }
            string LogicalChannelNoDisplay(byte LogicalChannelNo)
            {
                switch (LogicalChannelNo)
                {
                case 1:
                    return("驾驶员");

                case 2:
                    return("车辆正前方");

                case 3:
                    return("车前门");

                case 4:
                    return("车厢前部");

                case 5:
                    return("车厢后部");

                case 7:
                    return("行李舱");

                case 8:
                    return("车辆左侧");

                case 9:
                    return("车辆右侧");

                case 10:
                    return("车辆正后方");

                case 11:
                    return("车厢中部");

                case 12:
                    return("车中门");

                case 13:
                    return("驾驶席车门");

                case 33:
                    return("驾驶员");

                case 36:
                    return("车厢前部");

                case 37:
                    return("车厢后部");

                default:
                    return("预留");
                }
            }

            string AVResourceTypeDisplay(byte AVResourceType)
            {
                switch (AVResourceType)
                {
                case 0:
                    return("音视频");

                case 1:
                    return("音频");

                case 2:
                    return("视频");

                default:
                    break;
                }
                return("未知");
            }
        }
示例#30
0
        public JT809_0x9200_0x9203 Deserialize(ref JT809MessagePackReader reader, IJT809Config config)
        {
            JT809_0x9200_0x9203 jT809_0X1200_0x9203 = new JT809_0x9200_0x9203();

            jT809_0X1200_0x9203.GNSSCount = reader.ReadByte();
            jT809_0X1200_0x9203.GNSS      = new List <JT809_0x9200_0x9202>();
            if (jT809_0X1200_0x9203.GNSSCount > 0)
            {
                for (int i = 0; i < jT809_0X1200_0x9203.GNSSCount; i++)
                {
                    try
                    {
                        JT809MessagePackReader jT809_0x9200_0x9202Reader = new JT809MessagePackReader(reader.ReadArray(36));
                        //todo:JT809_0x9200_0x9202
                        //JT809_0x9200_0x9202 jT809_0x1200_0x1202 = JT809_0x9200_0x9202_Formatter.Instance.Deserialize(ref jT809_0x9200_0x9202Reader, config);
                        //jT809_0X1200_0x9203.GNSS.Add(jT809_0x1200_0x1202);
                    }
                    catch (Exception)
                    {
                    }
                }
            }
            return(jT809_0X1200_0x9203);
        }