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

            value.DynamicInfoTotal = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DynamicInfoTotal.ReadNumber()}START_TIME_END_TIME共收到的车辆定位信息数量]", value.DynamicInfoTotal);
            var virtualHex = reader.ReadVirtualArray(8);

            value.StartTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}开始时间]", value.StartTime);
            virtualHex    = reader.ReadVirtualArray(8);
            value.EndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}结束时间]", value.EndTime);
        }
示例#2
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9102 value      = new JT809_0x9102();
            var          virtualHex = reader.ReadVirtualArray(11);

            value.PlateformId = reader.ReadString(11);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]平台唯一编码", value.PlateformId);
            virtualHex      = reader.ReadVirtualArray(8);
            value.StartTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]开始时间", value.StartTime);
            virtualHex    = reader.ReadVirtualArray(8);
            value.EndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]结束时间", value.EndTime);
        }
示例#3
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9600 value      = new JT809_0x9600();
            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()}");
            }
        }
示例#4
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9103 value = new JT809_0x9103();

            value.SubBusinessType = reader.ReadUInt16();
            writer.WriteString($"[{value.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)value.SubBusinessType).ToString());
            value.DataLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DataLength.ReadNumber()}]后续数据长度", value.DataLength);
            value.Count = reader.ReadByte();
            writer.WriteNumber($"[{value.Count.ReadNumber()}]总数", value.Count);
            writer.WriteStartArray();
            for (int i = 0; i < value.Count; i++)
            {
                writer.WriteStartObject("子业务数据类型");
                JT809ManageMsgSNInform item = new JT809ManageMsgSNInform();
                item.SubBusinessType = reader.ReadUInt16();
                writer.WriteString($"[{item.SubBusinessType.ReadNumber()}]子业务类型标识", ((JT809SubBusinessType)item.SubBusinessType).ToString());
                item.MsgSN = reader.ReadUInt32();
                writer.WriteNumber($"[{item.MsgSN.ReadNumber()}对应得子业务数据类型报文序列号]", item.MsgSN);
                var virtualHex = reader.ReadVirtualArray(8);
                item.Time = reader.ReadUTCDateTime();
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]系统UTC时间", item.Time);
            }
            writer.WriteEndArray();
        }
示例#5
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);
            }
        }
示例#6
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value      = new JT809_0x1200_0x120E();
            var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            value.DRVLine = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]路线信息", value.DRVLine);
        }
示例#7
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9200_0x9204 value = new JT809_0x9200_0x9204();
            var virtualHex            = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            value.CarInfo = reader.ReadRemainStringContent();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车辆信息", value.CarInfo);
        }
示例#8
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9500_0x9501 value = new JT809_0x9500_0x9501();
            var virtualHex            = reader.ReadVirtualArray(20);

            value.MonitorTel = reader.ReadString(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]回拨电话号码", value.MonitorTel);
        }
示例#9
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9300_0x9302 value = new JT809_0x9300_0x9302();

            value.ObjectType = (JT809_0x9302_ObjectType)reader.ReadByte();
            writer.WriteString($"[{value.ObjectType.ToByteValue()}]查岗对象的类型", value.ObjectType.ToString());
            var virtualHex = reader.ReadVirtualArray(12);

            value.ObjectID = reader.ReadString(12);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]查岗对象的ID", value.ObjectID);
            value.InfoID = reader.ReadUInt32();
            writer.WriteNumber($"[{value.InfoID.ReadNumber() }]信息ID", value.InfoID);
            value.InfoLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.InfoLength.ReadNumber() }]数据长度", value.InfoLength);
            virtualHex        = reader.ReadVirtualArray((int)value.InfoLength);
            value.InfoContent = reader.ReadString((int)value.InfoLength);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]应答内容", value.InfoContent);
        }
示例#10
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);
            }
        }
示例#11
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);
        }
示例#12
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1102 value      = new JT809_0x1102();
            var          virtualHex = reader.ReadVirtualArray(11);

            value.PlateformId = reader.ReadBigNumber(11);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]平台唯一编码", value.PlateformId);
            virtualHex      = reader.ReadVirtualArray(8);
            value.StartTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]开始时间", value.StartTime);
            virtualHex    = reader.ReadVirtualArray(8);
            value.EndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]结束时间", value.EndTime);
            value.LoseDymamicSum = reader.ReadUInt32();
            writer.WriteNumber($"[{value.LoseDymamicSum.ReadNumber()}]START_TIME~END_TIME期间下级平台丢失得车辆定位消息总数", value.LoseDymamicSum);
            value.DisconnectNum = reader.ReadByte();
            writer.WriteNumber($"[{value.DisconnectNum.ReadNumber()}]START_TIME~END_TIME期间下级监控平台链路断开次数", value.DisconnectNum);
            value.DisconnectTime = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DisconnectTime.ReadNumber()}]START_TIME~END_TIME期间下级监控平台链路断开总时长,用秒表示", value.DisconnectTime);
        }
示例#13
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1003 value = new JT809_0x1003();

            value.UserId = reader.ReadUInt32();
            writer.WriteNumber($"[{value.UserId.ReadNumber()}]用户名", value.UserId);
            var virtualHex = reader.ReadVirtualArray(8);

            value.Password = reader.ReadString(8);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]密码", value.Password);
        }
示例#14
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1200_0x120D value = new JT809_0x1200_0x120D();

            value.EwaybillLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.EwaybillLength.ReadNumber()}]电子运单数据体长度", value.EwaybillLength);
            var virtualHex = reader.ReadVirtualArray((int)value.EwaybillLength);

            value.EwaybillInfo = reader.ReadString((int)value.EwaybillLength);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]电子运单数据内容", value.EwaybillInfo);
        }
示例#15
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1001 value = new JT809_0x1001();

            value.UserId = reader.ReadUInt32();
            writer.WriteNumber($"[{value.UserId.ReadNumber()}]用户名", value.UserId);
            var virtualHex = reader.ReadVirtualArray(8);

            value.Password = reader.ReadString(8);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]密码", value.Password);
            if (config.Version == JT809Version.JTT2019)
            {
                value.MsgGNSSCENTERID = reader.ReadUInt32();
                writer.WriteNumber($"[{value.MsgGNSSCENTERID.ReadNumber()}]下级平台接入码", value.MsgGNSSCENTERID);
            }
            virtualHex       = reader.ReadVirtualArray(32);
            value.DownLinkIP = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]下级平台提供对应的从链路服务端IP地址", value.DownLinkIP);
            value.DownLinkPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.DownLinkPort.ReadNumber()}]下级平台提供对应的从链路服务器端口号", value.DownLinkPort);
        }
示例#16
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_JT1078_0x1A00_0x1A01 value = new JT809_JT1078_0x1A00_0x1A01();
            var virtualHex = reader.ReadVirtualArray(32);

            value.ServerIp = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]企业视频服务器ip地址", value.ServerIp);
            value.ServerPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.ServerPort.ReadNumber()}]企业视频服务器端口号", value.ServerPort);
            value.Result = (JT809_JT1078_0x1A00_0x1A01_Result)reader.ReadByte();
            writer.WriteString($"[{((byte)value.Result).ReadNumber()}]应答结果", value.Result.ToString());
        }
示例#17
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9500_0x9505 value = new JT809_0x9500_0x9505();
            var virtualHex            = reader.ReadVirtualArray(10);

            value.AuthenticationCode = reader.ReadBCD(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]监管平台下发的鉴权码", value.AuthenticationCode);
            virtualHex            = reader.ReadVirtualArray(20);
            value.AccessPointName = reader.ReadString(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]拨号点名称", value.AccessPointName);
            virtualHex     = reader.ReadVirtualArray(49);
            value.UserName = reader.ReadString(49);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]拨号用户名", value.UserName);
            virtualHex     = reader.ReadVirtualArray(49);
            value.Password = reader.ReadString(22);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]拨号密码", value.Password);
            virtualHex     = reader.ReadVirtualArray(32);
            value.ServerIP = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]地址", value.ServerIP);
            value.TcpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]", value.TcpPort);
            value.UdpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.UdpPort.ReadNumber()}]", value.UdpPort);
            virtualHex    = reader.ReadVirtualArray(8);
            value.EndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]结束时间", value.EndTime);
        }
示例#18
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);
        }
示例#19
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value      = new JT809_0x1400_0x1413();
            var virtualHex = reader.ReadVirtualArray(11);

            value.SourcePlatformId = reader.ReadBigNumber(11);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]发起报警平台唯一编码", value.SourcePlatformId);
            virtualHex     = reader.ReadVirtualArray(8);
            value.WarnTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]报警时间", value.WarnTime);
            value.SourceDataType = reader.ReadUInt16();
            writer.WriteString($"[{value.SourceDataType.ReadNumber()}]对应启动车辆定位信息交换请求消息源子业务类型标识", ((JT809SubBusinessType)value.SourceDataType).ToString());
            value.SourceMsgSn = reader.ReadUInt32();
            writer.WriteNumber($"[{value.SourceMsgSn.ReadNumber()}对应启动车辆定位信息交换请求消息源报文序列号]", value.SourceMsgSn);
            virtualHex = reader.ReadVirtualArray(8);
            value.SupervisionEndTime = reader.ReadUTCDateTime();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]督办截止时间", value.SupervisionEndTime);
            value.SupervisionLevel = (JT809_0x1413_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.SupervisorTel);
        }
示例#20
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9300_0x9301 value = new JT809_0x9300_0x9301();
            ReadOnlySpan <byte> virtualHex;

            if (config.Version == JT809Version.JTT2019)
            {
                value.ObjectType = (JT809_0x9301_ObjectType)reader.ReadByte();
                writer.WriteString($"[{value.ObjectType.ToByteValue()}]查岗对象的类型", value.ObjectType.ToString());
                virtualHex     = reader.ReadVirtualArray(20);
                value.ObjectID = reader.ReadString(20);
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]查岗对象的ID", value.ObjectID);
                writer.WriteNumber($"[{value.AnswerTime.ReadNumber()}]查岗应答时限", value.AnswerTime);
            }
            value.InfoID = reader.ReadUInt32();
            writer.WriteNumber($"[{value.InfoID.ReadNumber() }]信息ID", value.InfoID);
            value.InfoLength = reader.ReadUInt32();
            writer.WriteNumber($"[{value.InfoLength.ReadNumber() }]数据长度", value.InfoLength);
            virtualHex        = reader.ReadVirtualArray((int)value.InfoLength);
            value.InfoContent = reader.ReadString((int)value.InfoLength);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]应答内容", value.InfoContent);
        }
示例#21
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);
        }
示例#22
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);
            writer.WriteNumber($"[{value.BeginMessageNumber.ReadNumber()}需要重传消息的起始报文序列号]", value.BeginMessageNumber);
            writer.WriteNumber($"[{value.EndMessageNumber.ReadNumber()}需要重传消息的结束报文序列号]", value.EndMessageNumber);
            var virtualHex = reader.ReadVirtualArray(8);

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

            value.DriverName = reader.ReadString(16);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]驾驶员姓名", value.DriverName);
            virtualHex     = reader.ReadVirtualArray(20);
            value.DriverID = reader.ReadString(20);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]身份证编号", value.DriverID);
            virtualHex    = reader.ReadVirtualArray(40);
            value.Licence = reader.ReadString(40);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]从业资格证", value.Licence);
            virtualHex    = reader.ReadVirtualArray(200);
            value.OrgName = reader.ReadString(200);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]发证机构名称", value.OrgName);
            if (config.Version == JT809Version.JTT2019)
            {
                virtualHex      = reader.ReadVirtualArray(8);
                value.ValidDate = reader.ReadUTCDateTime();
                writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]证件有效期", value.ValidDate);
            }
        }
示例#24
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();
        }
示例#25
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);
        }
示例#26
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            var value = new JT809_0x9200_0x920D();

            value.DRVLineID = reader.ReadUInt32();
            writer.WriteNumber($"[{value.DRVLineID.ReadNumber()}]线路ID", value.DRVLineID);
            value.Result = (JT809_0x920D_Result)reader.ReadByte();
            writer.WriteString($"[{value.Result.ToByteValue()}]处理结果", value.Result.ToString());
            value.ReasonLength = reader.ReadUInt16();
            writer.WriteNumber($"[{value.ReasonLength.ReadNumber()}]未通过原因内容长度", value.ReasonLength);
            var virtualHex = reader.ReadVirtualArray(value.ReasonLength);

            value.Reason = reader.ReadString(value.ReasonLength);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]经过GBK编码后的未通过原因", value.Reason);
        }
示例#27
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x9500_0x9503 value = new JT809_0x9500_0x9503();

            value.MsgSequence = reader.ReadUInt32();
            writer.WriteNumber($"[{value.MsgSequence.ReadNumber()}]消息ID序号", value.MsgSequence);
            value.MsgPriority = (JT809_0x9503_MsgPriority)reader.ReadByte();
            writer.WriteString($"[{value.MsgPriority.ToByteValue()}]报文优先级", value.MsgPriority.ToString());
            value.MsgLength = reader.ReadUInt32();
            writer.WriteNumber($"[{ value.MsgLength.ReadNumber()}]报文信息长度", value.MsgLength);
            var virtualHex = reader.ReadVirtualArray((int)value.MsgLength);

            value.MsgContent = reader.ReadString((int)value.MsgLength);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]报文信息内容", value.MsgContent);
        }
示例#28
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_JT1078_0x1B00_0x1B02 value = new JT809_JT1078_0x1B00_0x1B02();

            value.Result = (JT809_JT1078_0x1B00_0x1B02_Result)reader.ReadByte();
            writer.WriteString($"[{((byte)value.Result).ReadNumber() }]应答结果", value.Result.ToString());
            value.SessionId = reader.ReadUInt16();
            writer.WriteNumber($"[{value.SessionId.ReadNumber()}]对应平台文件上传消息的流水号", value.SessionId);
            var virtualHex = reader.ReadVirtualArray(32);

            value.ServerIp = reader.ReadString(32);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]FTP服务器ip地址", value.ServerIp);
            value.TcpPort = reader.ReadUInt16();
            writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]FTP服务器端口", value.TcpPort);
            virtualHex     = reader.ReadVirtualArray(49);
            value.UserName = reader.ReadString(49);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]FTP用户名", value.UserName);
            virtualHex     = reader.ReadVirtualArray(22);
            value.Password = reader.ReadString(22);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]FTP密码", value.Password);
            virtualHex     = reader.ReadVirtualArray(200);
            value.FilePath = reader.ReadString(200);
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]文件存储路径", value.FilePath);
        }
示例#29
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1600_0x1601 value = new JT809_0x1600_0x1601();

            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);
            }
            var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength());

            value.CarInfo = reader.ReadRemainStringContent();
            writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]车辆信息", value.CarInfo);
        }
示例#30
0
        public void Analyze(ref JT809MessagePackReader reader, Utf8JsonWriter writer, IJT809Config config)
        {
            JT809_0x1300_0x1302 value = new JT809_0x1300_0x1302();

            if (config.Version == JT809Version.JTT2019)
            {
                var virtualHex = reader.ReadVirtualArray(16);
                value.SourceDataType = reader.ReadUInt16();
                writer.WriteString($"[{value.SourceDataType.ReadNumber()}]对应启动车辆定位信息交换请求消息源子业务类型标识", ((JT809SubBusinessType)value.SourceDataType).ToString());
                value.SourceMsgSn = reader.ReadUInt32();
                writer.WriteNumber($"[{value.SourceMsgSn.ReadNumber()}对应启动车辆定位信息交换请求消息源报文序列号]", value.SourceMsgSn);
            }
            else
            {
                value.InfoID = reader.ReadUInt32();
                writer.WriteNumber($"[{value.InfoID.ReadNumber()}]信息ID", value.InfoID);
            }
        }