/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x0200_0x65 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0200_0x65 value = new JT808_0x0200_0x65(); value.AttachInfoId = reader.ReadByte(); value.AttachInfoLength = reader.ReadByte(); value.AlarmId = reader.ReadUInt32(); value.FlagState = reader.ReadByte(); value.AlarmOrEventType = reader.ReadByte(); value.AlarmLevel = reader.ReadByte(); value.Fatigue = reader.ReadByte(); value.Retain = reader.ReadArray(4).ToArray(); value.Speed = reader.ReadByte(); value.Altitude = reader.ReadUInt16(); value.Latitude = (int)reader.ReadUInt32(); value.Longitude = (int)reader.ReadUInt32(); value.AlarmTime = reader.ReadDateTime_yyMMddHHmmss(); value.VehicleState = reader.ReadUInt16(); value.AlarmIdentification = new AlarmIdentificationProperty { TerminalId = reader.ReadString(30), Time = reader.ReadDateTime_yyMMddHHmmss(), SN = reader.ReadByte(), AttachCount = reader.ReadByte(), Retain1 = reader.ReadByte(), Retain2 = reader.ReadByte() }; return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x0200_0x64 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0200_0x64 value = new JT808_0x0200_0x64(); value.AttachInfoId = reader.ReadByte(); value.AttachInfoLength = reader.ReadByte(); value.AlarmId = reader.ReadUInt32(); value.FlagState = reader.ReadByte(); value.AlarmOrEventType = reader.ReadByte(); value.AlarmLevel = reader.ReadByte(); value.VehicleSpeed = reader.ReadByte(); value.CarOrPedestrianDistanceAhead = reader.ReadByte(); value.DeviateType = reader.ReadByte(); value.RoadSignIdentificationType = reader.ReadByte(); value.RoadSignIdentificationData = reader.ReadByte(); value.Speed = reader.ReadByte(); value.Altitude = reader.ReadUInt16(); value.Latitude = (int)reader.ReadUInt32(); value.Longitude = (int)reader.ReadUInt32(); value.AlarmTime = reader.ReadDateTime_yyMMddHHmmss(); value.VehicleState = reader.ReadUInt16(); value.AlarmIdentification = new AlarmIdentificationProperty { TerminalID = reader.ReadString(7), Time = reader.ReadDateTime_yyMMddHHmmss(), SN = reader.ReadByte(), AttachCount = reader.ReadByte(), Retain = reader.ReadByte() }; return(value); }
/// <summary> /// 格式分析 /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { var value = new JT808_0x9201(); value.ServerIpLength = reader.ReadByte(); writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength); string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString(); value.ServerIp = reader.ReadString(value.ServerIpLength); writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIp); value.TcpPort = reader.ReadUInt16(); writer.WriteNumber($"[{value.TcpPort.ReadNumber()}]服务器视频通道监听端口号(TCP)", value.TcpPort); value.UdpPort = reader.ReadUInt16(); writer.WriteNumber($"[{value.UdpPort.ReadNumber()}]服务器视频通道监听端口号(UDP)", value.UdpPort); value.ChannelNo = reader.ReadByte(); writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.MediaType = reader.ReadByte(); writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVItemTypeDisplay(value.MediaType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType)); value.MemoryType = reader.ReadByte(); writer.WriteString($"[{value.MemoryType.ReadNumber()}]存储器类型", MemTypeDisplay(value.MemoryType)); value.PlaybackWay = reader.ReadByte(); writer.WriteString($"[{value.PlaybackWay.ReadNumber()}]回访方式", PlayBackWayDisplay(value.PlaybackWay)); value.PlaySpeed = reader.ReadByte(); writer.WriteString($"[{value.PlaySpeed.ReadNumber()}]快进或快退倍数", FastForwardOrFastRewindMultiplesDisplay(value.PlaySpeed)); value.BeginTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.BeginTime:yyMMddHHmmss}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.EndTime:yyMMddHHmmss}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss"));
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Down_0x14 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Down_0x14 value = new JT808_CarDVR_Down_0x14(); value.StartTime = reader.ReadDateTime_yyMMddHHmmss(); value.EndTime = reader.ReadDateTime_yyMMddHHmmss(); value.Count = reader.ReadUInt16(); return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x1005 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x1005 jT808_0x1005 = new JT808_0x1005(); jT808_0x1005.BeginTime = reader.ReadDateTime_yyMMddHHmmss(); jT808_0x1005.EndTime = reader.ReadDateTime_yyMMddHHmmss(); jT808_0x1005.GettingOnNumber = reader.ReadUInt16(); jT808_0x1005.GettingOffNumber = reader.ReadUInt16(); return(jT808_0x1005); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Down_0xC4 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Down_0xC4 value = new JT808_CarDVR_Down_0xC4(); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); value.FirstInstallTime = reader.ReadDateTime_yyMMddHHmmss(); value.FirstMileage = reader.ReadBCD(8); value.TotalMilage = reader.ReadBCD(8); return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x8802 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8802 jT808_0X8802 = new JT808_0x8802(); jT808_0X8802.MultimediaType = reader.ReadByte(); jT808_0X8802.ChannelId = reader.ReadByte(); jT808_0X8802.EventItemCoding = reader.ReadByte(); jT808_0X8802.StartTime = reader.ReadDateTime_yyMMddHHmmss(); jT808_0X8802.EndTime = reader.ReadDateTime_yyMMddHHmmss(); return(jT808_0X8802); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Down_0x14 value = new JT808_CarDVR_Down_0x14(); value.StartTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.StartTime:yyMMddHHmmss}]开始时间", value.StartTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.EndTime:yyMMddHHmmss}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); value.Count = reader.ReadUInt16(); writer.WriteNumber($"[{value.Count.ReadNumber()}]最大单位数据块个数", value.Count); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x0702 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0702 value = new JT808_0x0702(); var firstByte = reader.ReadVirtualByte(); //因2011第一个字节代表姓名长度 所以该值长度只能为 2,3,4,整个数据长度 62+m+n if (firstByte == 0x01) { value.IC_Card_Status = (JT808ICCardStatus)reader.ReadByte(); value.IC_Card_PlugDateTime = reader.ReadDateTime_yyMMddHHmmss(); if (value.IC_Card_Status == JT808ICCardStatus.从业资格证IC卡插入_驾驶员上班) { value.IC_Card_ReadResult = (JT808ICCardReadResult)reader.ReadByte(); if (value.IC_Card_ReadResult == JT808ICCardReadResult.IC卡读卡成功) { value.DriverUserNameLength = reader.ReadByte(); value.DriverUserName = reader.ReadString(value.DriverUserNameLength); value.QualificationCode = reader.ReadString(20); value.LicenseIssuingLength = reader.ReadByte(); value.LicenseIssuing = reader.ReadString(value.LicenseIssuingLength); value.CertificateExpiresDate = reader.ReadDateTime_YYYYMMDD(); if (reader.Version == JT808Version.JTT2019) { value.DriverIdentityCard = reader.ReadString(20); //兼容808-2019 补充 if (reader.ReadCurrentRemainContentLength() > 0) { value.FaceMatchValue = reader.ReadByte(); value.UID = reader.ReadString(20); } } } } } else { if (firstByte == 0x02 && reader.ReadCurrentRemainContentLength() == 7) { //如果字节是0x02且长度只有7,那么该协议就是2013或者2019 value.IC_Card_Status = (JT808ICCardStatus)reader.ReadByte(); value.IC_Card_PlugDateTime = reader.ReadDateTime_yyMMddHHmmss(); } else { value.DriverUserNameLength = reader.ReadByte(); value.DriverUserName = reader.ReadString(value.DriverUserNameLength); value.DriverIdentityCard = reader.ReadString(20); value.QualificationCode = reader.ReadString(40); value.LicenseIssuingLength = reader.ReadByte(); value.LicenseIssuing = reader.ReadString(value.LicenseIssuingLength); } } return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Down_0xC4 value = new JT808_CarDVR_Down_0xC4(); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.RealTime:yyMMddHHmmss}]当前时间", value.RealTime.ToString("yyyy-MM-dd HH:mm:ss")); value.FirstInstallTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.FirstInstallTime:yyMMddHHmmss}]初次安装时间", value.FirstInstallTime.ToString("yyyy-MM-dd HH:mm:ss")); value.FirstMileage = reader.ReadBCD(8); writer.WriteString($"[{value.FirstMileage}]初始里程", value.FirstMileage); value.TotalMilage = reader.ReadBCD(8); writer.WriteString($"[{value.TotalMilage}]累计里程", value.TotalMilage); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x1005 value = new JT808_0x1005(); value.BeginTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]开始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]结束时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); value.GettingOnNumber = reader.ReadUInt16(); writer.WriteNumber($"[{value.GettingOnNumber.ReadNumber()}]从开始时间到结束时间的上车人数", value.GettingOnNumber); value.GettingOffNumber = reader.ReadUInt16(); writer.WriteNumber($"[{value.GettingOffNumber.ReadNumber()}]从开始时间到结束时间的下车人数", value.GettingOffNumber); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x8606 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8606 jT808_0X8606 = new JT808_0x8606(); jT808_0X8606.RouteId = reader.ReadUInt32(); jT808_0X8606.RouteProperty = reader.ReadUInt16(); ReadOnlySpan <char> routeProperty16Bit = Convert.ToString(jT808_0X8606.RouteProperty, 2).PadLeft(16, '0').AsSpan(); bool bit0Flag = routeProperty16Bit.Slice(routeProperty16Bit.Length - 1).ToString().Equals("0"); if (!bit0Flag) { jT808_0X8606.StartTime = reader.ReadDateTime_yyMMddHHmmss(); jT808_0X8606.EndTime = reader.ReadDateTime_yyMMddHHmmss(); } jT808_0X8606.InflectionPointCount = reader.ReadUInt16(); jT808_0X8606.InflectionPointItems = new List <JT808InflectionPointProperty>(); for (var i = 0; i < jT808_0X8606.InflectionPointCount; i++) { JT808InflectionPointProperty jT808InflectionPointProperty = new JT808InflectionPointProperty(); jT808InflectionPointProperty.InflectionPointId = reader.ReadUInt32(); jT808InflectionPointProperty.SectionId = reader.ReadUInt32(); jT808InflectionPointProperty.InflectionPointLat = reader.ReadUInt32(); jT808InflectionPointProperty.InflectionPointLng = reader.ReadUInt32(); jT808InflectionPointProperty.SectionWidth = reader.ReadByte(); jT808InflectionPointProperty.SectionProperty = reader.ReadByte(); ReadOnlySpan <char> sectionProperty16Bit = Convert.ToString(jT808InflectionPointProperty.SectionProperty, 2).PadLeft(16, '0').AsSpan(); bool sectionBit0Flag = sectionProperty16Bit.Slice(sectionProperty16Bit.Length - 1).ToString().Equals("0"); if (!sectionBit0Flag) { jT808InflectionPointProperty.SectionLongDrivingThreshold = reader.ReadUInt16(); jT808InflectionPointProperty.SectionDrivingUnderThreshold = reader.ReadUInt16(); } bool sectionBit1Flag = sectionProperty16Bit.Slice(sectionProperty16Bit.Length - 2, 1).ToString().Equals("0"); if (!sectionBit1Flag) { jT808InflectionPointProperty.SectionHighestSpeed = reader.ReadUInt16(); jT808InflectionPointProperty.SectionOverspeedDuration = reader.ReadByte(); if (reader.Version == JT808Version.JTT2019) { jT808InflectionPointProperty.NightMaximumSpeed = reader.ReadUInt16(); } } jT808_0X8606.InflectionPointItems.Add(jT808InflectionPointProperty); } if (reader.Version == JT808Version.JTT2019) { jT808_0X8606.RouteNameLength = reader.ReadUInt16(); jT808_0X8606.RouteName = reader.ReadString(jT808_0X8606.RouteNameLength); } return(jT808_0X8606); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x1205_AVResouce Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x1205_AVResouce jT808_0x1205_AVResouce = new JT808_0x1205_AVResouce(); jT808_0x1205_AVResouce.LogicChannelNo = reader.ReadByte(); jT808_0x1205_AVResouce.BeginTime = reader.ReadDateTime_yyMMddHHmmss(); jT808_0x1205_AVResouce.EndTime = reader.ReadDateTime_yyMMddHHmmss(); jT808_0x1205_AVResouce.AlarmFlag = reader.ReadUInt64(); jT808_0x1205_AVResouce.AVResourceType = reader.ReadByte(); jT808_0x1205_AVResouce.StreamType = reader.ReadByte(); jT808_0x1205_AVResouce.MemoryType = reader.ReadByte(); jT808_0x1205_AVResouce.FileSize = reader.ReadUInt32(); return(jT808_0x1205_AVResouce); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { writer.WriteStartArray("请求发送指定的时间范围内 N 个单位数据块的数据"); var count = (reader.ReadCurrentRemainContentLength() - 1) / 126;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x08_SpeedPerMinute jT808_CarDVR_Up_0X08_SpeedPerMinute = new JT808_CarDVR_Up_0x08_SpeedPerMinute(); writer.WriteStartObject(); writer.WriteStartObject($"第{i+1}分钟行驶速度记录数据块格式"); var hex = reader.ReadVirtualArray(6); jT808_CarDVR_Up_0X08_SpeedPerMinute.StartTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{hex.ToArray().ToHexString()}]开始时间", jT808_CarDVR_Up_0X08_SpeedPerMinute.StartTime); for (int j = 0; j < 60; j++)//60秒 { JT808_CarDVR_Up_0x08_SpeedPerSecond jT808_CarDVR_Up_0X08_SpeedPerSecond = new JT808_CarDVR_Up_0x08_SpeedPerSecond(); writer.WriteStartObject($"开始时间之后第{j+1}秒钟的平均速度和状态信号"); jT808_CarDVR_Up_0X08_SpeedPerSecond.AvgSpeedAfterStartTime = reader.ReadByte(); writer.WriteNumber($"[{jT808_CarDVR_Up_0X08_SpeedPerSecond.AvgSpeedAfterStartTime.ReadNumber()}]平均速度", jT808_CarDVR_Up_0X08_SpeedPerSecond.AvgSpeedAfterStartTime); jT808_CarDVR_Up_0X08_SpeedPerSecond.StatusSignalAfterStartTime = reader.ReadByte(); writer.WriteNumber($"[{jT808_CarDVR_Up_0X08_SpeedPerSecond.StatusSignalAfterStartTime.ReadNumber()}]状态信号", jT808_CarDVR_Up_0X08_SpeedPerSecond.StatusSignalAfterStartTime); writer.WriteEndObject(); } writer.WriteEndObject(); writer.WriteEndObject(); } writer.WriteEndArray(); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Down_0x84 value = new JT808_CarDVR_Down_0x84(); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.RealTime:yyMMddHHmmss}]实时时间", value.RealTime.ToString("yyyy-MM-dd HH:mm:ss")); value.SignalOperate = reader.ReadByte(); writer.WriteNumber($"[{value.SignalOperate.ReadNumber()}]信号个数", value.SignalOperate); var display = reader.ReadVirtualArray(10); value.D0 = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]D0", value.D0); display = reader.ReadVirtualArray(10); value.D1 = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]D1", value.D1); display = reader.ReadVirtualArray(10); value.D2 = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]D2", value.D2); display = reader.ReadVirtualArray(10); value.NearLight = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]近光灯", value.NearLight); display = reader.ReadVirtualArray(10); value.FarLight = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]远光灯", value.FarLight); display = reader.ReadVirtualArray(10); value.RightTurn = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]右转向", value.RightTurn); display = reader.ReadVirtualArray(10); value.LeftTurn = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]左转向", value.LeftTurn); display = reader.ReadVirtualArray(10); value.Brake = reader.ReadString(10); writer.WriteString($"[{display.ToArray().ToHexString()}]制动", value.Brake); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Down_0x83 value = new JT808_CarDVR_Down_0x83(); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.RealTime:yyMMddHHmmss}]初次安装日期", value.RealTime.ToString("yyyy-MM-dd HH:mm:ss")); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Up_0x08 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x08 value = new JT808_CarDVR_Up_0x08(); value.JT808_CarDVR_Up_0x08_SpeedPerMinutes = new List <JT808_CarDVR_Up_0x08_SpeedPerMinute>(); var count = (reader.ReadCurrentRemainContentLength() - 1) / 126;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x08_SpeedPerMinute jT808_CarDVR_Up_0X08_SpeedPerMinute = new JT808_CarDVR_Up_0x08_SpeedPerMinute() { StartTime = reader.ReadDateTime_yyMMddHHmmss(), JT808_CarDVR_Up_0x08_SpeedPerSeconds = new List <JT808_CarDVR_Up_0x08_SpeedPerSecond>() }; for (int j = 0; j < 60; j++)//60秒 { jT808_CarDVR_Up_0X08_SpeedPerMinute.JT808_CarDVR_Up_0x08_SpeedPerSeconds.Add(new JT808_CarDVR_Up_0x08_SpeedPerSecond { AvgSpeedAfterStartTime = reader.ReadByte(), StatusSignalAfterStartTime = reader.ReadByte() }); } value.JT808_CarDVR_Up_0x08_SpeedPerMinutes.Add(jT808_CarDVR_Up_0X08_SpeedPerMinute); } return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x8004 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8004 value = new JT808_0x8004(); value.Time = reader.ReadDateTime_yyMMddHHmmss(); return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9208 value = new JT808_0x9208(); value.AttachmentServerIPLength = reader.ReadByte(); writer.WriteNumber($"[{value.AttachmentServerIPLength.ReadNumber()}]服务IP地址长度", value.AttachmentServerIPLength); string attachmentServerIPHex = reader.ReadVirtualArray(value.AttachmentServerIPLength).ToArray().ToHexString(); value.AttachmentServerIP = reader.ReadString(value.AttachmentServerIPLength); writer.WriteString($"[{AttachmentServerIP}]服务IP地址", value.AttachmentServerIP); value.AttachmentServerIPTcpPort = reader.ReadUInt16(); writer.WriteNumber($"[{value.AttachmentServerIPTcpPort.ReadNumber()}]TCP端口", value.AttachmentServerIPTcpPort); value.AttachmentServerIPUdpPort = reader.ReadUInt16(); writer.WriteNumber($"[{value.AttachmentServerIPUdpPort.ReadNumber()}]UDP端口", value.AttachmentServerIPUdpPort); value.AlarmIdentification = new AlarmIdentificationProperty(); string terminalIDHex = reader.ReadVirtualArray(7).ToArray().ToHexString(); value.AlarmIdentification.TerminalID = reader.ReadString(7); value.AlarmIdentification.Time = reader.ReadDateTime_yyMMddHHmmss(); value.AlarmIdentification.SN = reader.ReadByte(); value.AlarmIdentification.AttachCount = reader.ReadByte(); value.AlarmIdentification.Retain = reader.ReadByte(); writer.WriteString($"[{terminalIDHex}]终端ID", value.AlarmIdentification.TerminalID); writer.WriteString($"[{value.AlarmIdentification.Time.ToString("yyMMddHHmmss")}]日期时间", value.AlarmIdentification.Time.ToString("yyyy-MM-dd HH:mm:ss")); writer.WriteNumber($"[{value.AlarmIdentification.SN.ReadNumber()}]序号", value.AlarmIdentification.SN); writer.WriteNumber($"[{value.AlarmIdentification.AttachCount.ReadNumber()}]附件数量", value.AlarmIdentification.AttachCount); writer.WriteNumber($"[{value.AlarmIdentification.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain); string alarmIdHex = reader.ReadVirtualArray(32).ToArray().ToHexString(); value.AlarmId = reader.ReadString(32); writer.WriteString($"[{alarmIdHex}]平台给报警分配的唯一编号", value.AlarmId); string retainHex = reader.ReadVirtualArray(16).ToArray().ToHexString(); writer.WriteString($"预留", retainHex); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Up_0x09 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x09 value = new JT808_CarDVR_Up_0x09(); value.JT808_CarDVR_Up_0x09_PositionPerHours = new List <JT808_CarDVR_Up_0x09_PositionPerHour>(); var count = (reader.ReadCurrentRemainContentLength() - 1) / 666;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x09_PositionPerHour jT808_CarDVR_Up_0x09_PositionPerHour = new JT808_CarDVR_Up_0x09_PositionPerHour() { StartTime = reader.ReadDateTime_yyMMddHHmmss(), JT808_CarDVR_Up_0x09_PositionPerMinutes = new List <JT808_CarDVR_Up_0x09_PositionPerMinute>() }; for (int j = 0; j < 60; j++)//60钟 { jT808_CarDVR_Up_0x09_PositionPerHour.JT808_CarDVR_Up_0x09_PositionPerMinutes.Add(new JT808_CarDVR_Up_0x09_PositionPerMinute { GpsLng = reader.ReadInt32(), GpsLat = reader.ReadInt32(), Height = reader.ReadInt16(), AvgSpeedAfterStartTime = reader.ReadByte() }); } value.JT808_CarDVR_Up_0x09_PositionPerHours.Add(jT808_CarDVR_Up_0x09_PositionPerHour); } return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { writer.WriteStartArray("请求发送指定的时间范围内 N 个单位数据块的数据"); var count = (reader.ReadCurrentRemainContentLength() - 1) / 666;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x09_PositionPerHour jT808_CarDVR_Up_0x09_PositionPerHour = new JT808_CarDVR_Up_0x09_PositionPerHour(); writer.WriteStartObject(); writer.WriteStartObject($"指定的结束时间之前最近的第{i+1}小时的位置信息记录"); var hex = reader.ReadVirtualArray(6); jT808_CarDVR_Up_0x09_PositionPerHour.StartTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{hex.ToArray().ToHexString()}]开始时间", jT808_CarDVR_Up_0x09_PositionPerHour.StartTime); for (int j = 0; j < 60; j++)//60钟 { JT808_CarDVR_Up_0x09_PositionPerMinute jT808_CarDVR_Up_0X09_PositionPerMinute = new JT808_CarDVR_Up_0x09_PositionPerMinute(); writer.WriteStartObject($"开始时间之后第{j+1}分钟的平均速度和位置信息"); jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLng = reader.ReadInt32(); writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLng.ReadNumber()}]经度", jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLng); jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLat = reader.ReadInt32(); writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLat.ReadNumber()}]纬度", jT808_CarDVR_Up_0X09_PositionPerMinute.GpsLat); jT808_CarDVR_Up_0X09_PositionPerMinute.Height = reader.ReadInt16(); writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.Height.ReadNumber()}]高度", jT808_CarDVR_Up_0X09_PositionPerMinute.Height); jT808_CarDVR_Up_0X09_PositionPerMinute.AvgSpeedAfterStartTime = reader.ReadByte(); writer.WriteNumber($"[{jT808_CarDVR_Up_0X09_PositionPerMinute.AvgSpeedAfterStartTime.ReadNumber()}]平均速度", jT808_CarDVR_Up_0X09_PositionPerMinute.AvgSpeedAfterStartTime); writer.WriteEndObject(); } writer.WriteEndObject(); writer.WriteEndObject(); } writer.WriteEndArray(); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Up_0x10 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x10 value = new JT808_CarDVR_Up_0x10(); value.JT808_CarDVR_Up_0x10_AccidentSuspectins = new List <JT808_CarDVR_Up_0x10_AccidentSuspectin>(); var count = (reader.ReadCurrentRemainContentLength() - 1) / 234;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x10_AccidentSuspectin jT808_CarDVR_Up_0x10_AccidentSuspectin = new JT808_CarDVR_Up_0x10_AccidentSuspectin(); jT808_CarDVR_Up_0x10_AccidentSuspectin.EndTime = reader.ReadDateTime_yyMMddHHmmss(); jT808_CarDVR_Up_0x10_AccidentSuspectin.DriverLicenseNo = reader.ReadASCII(18); jT808_CarDVR_Up_0x10_AccidentSuspectin.JT808_CarDVR_Up_0x10_DrivingStatuss = new List <JT808_CarDVR_Up_0x10_DrivingStatus>(); for (int j = 0; j < 100; j++)//100组 { jT808_CarDVR_Up_0x10_AccidentSuspectin.JT808_CarDVR_Up_0x10_DrivingStatuss.Add(new JT808_CarDVR_Up_0x10_DrivingStatus { Speed = reader.ReadByte(), StatusSignal = reader.ReadByte() }); } jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng = reader.ReadInt32(); jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat = reader.ReadInt32(); jT808_CarDVR_Up_0x10_AccidentSuspectin.Height = reader.ReadInt16(); value.JT808_CarDVR_Up_0x10_AccidentSuspectins.Add(jT808_CarDVR_Up_0x10_AccidentSuspectin); } return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Down_0x83 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Down_0x83 value = new JT808_CarDVR_Down_0x83(); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Up_0x06 value = new JT808_CarDVR_Up_0x06(); var hex = reader.ReadVirtualArray(6); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{hex.ToArray().ToHexString()}]实时时间", value.RealTime); value.SignalOperate = reader.ReadByte(); writer.WriteNumber($"[{value.SignalOperate.ReadNumber()}]信号个数", value.SignalOperate); hex = reader.ReadVirtualArray(10); value.D0 = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]D0", value.D0); hex = reader.ReadVirtualArray(10); value.D1 = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]D1", value.D1); hex = reader.ReadVirtualArray(10); value.D2 = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]D2", value.D2); hex = reader.ReadVirtualArray(10); value.NearLight = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]近光灯", value.NearLight); hex = reader.ReadVirtualArray(10); value.FarLight = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]远光灯", value.FarLight); hex = reader.ReadVirtualArray(10); value.RightTurn = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]右转向", value.RightTurn); hex = reader.ReadVirtualArray(10); value.LeftTurn = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]左转向", value.LeftTurn); hex = reader.ReadVirtualArray(10); value.Brake = reader.ReadString(10); writer.WriteString($"[{hex.ToArray().ToHexString()}]制动", value.Brake); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x1210 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x1210 value = new JT808_0x1210(); value.TerminalId = reader.ReadString(30); value.AlarmIdentification = new AlarmIdentificationProperty { TerminalId = reader.ReadString(30), Time = reader.ReadDateTime_yyMMddHHmmss(), SN = reader.ReadByte(), AttachCount = reader.ReadByte(), Retain1 = reader.ReadByte(), Retain2 = reader.ReadByte() }; value.AlarmId = reader.ReadString(32); value.InfoType = reader.ReadByte(); value.AttachCount = reader.ReadByte(); if (value.AttachCount > 0) { value.AttachInfos = new List <AttachProperty>(); for (int i = 0; i < value.AttachCount; i++) { AttachProperty attachProperty = new AttachProperty(); attachProperty.FileNameLength = reader.ReadByte(); attachProperty.FileName = reader.ReadString(attachProperty.FileNameLength); attachProperty.FileSize = reader.ReadUInt32(); value.AttachInfos.Add(attachProperty); } } return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9206 value = new JT808_0x9206(); value.ServerIpLength = reader.ReadByte(); writer.WriteNumber($"[{value.ServerIpLength.ReadNumber()}]服务器IP地址长度", value.ServerIpLength); string ipHex = reader.ReadVirtualArray(value.ServerIpLength).ToArray().ToHexString(); value.ServerIp = reader.ReadString(value.ServerIpLength); writer.WriteString($"[{ipHex}]服务器IP地址", value.ServerIp); value.Port = reader.ReadUInt16(); writer.WriteNumber($"[{value.Port.ReadNumber()}]服务器端口", value.Port); value.UserNameLength = reader.ReadByte(); writer.WriteNumber($"[{value.UserNameLength.ReadNumber()}]用户名长度", value.UserNameLength); string userNameHex = reader.ReadVirtualArray(value.UserNameLength).ToArray().ToHexString(); value.UserName = reader.ReadString(value.UserNameLength); writer.WriteString($"[{userNameHex}]用户名", value.UserName); value.PasswordLength = reader.ReadByte(); writer.WriteNumber($"[{value.PasswordLength.ReadNumber()}]密码长度", value.PasswordLength); string passwordHex = reader.ReadVirtualArray(value.PasswordLength).ToArray().ToHexString(); value.Password = reader.ReadString(value.PasswordLength); writer.WriteString($"[{passwordHex}]密码", value.Password); value.FileUploadPathLength = reader.ReadByte(); writer.WriteNumber($"[{value.FileUploadPathLength.ReadNumber()}]文件上传路径长度", value.FileUploadPathLength); string fileUploadPathHex = reader.ReadVirtualArray(value.FileUploadPathLength).ToArray().ToHexString(); value.FileUploadPath = reader.ReadString(value.FileUploadPathLength); writer.WriteString($"[{fileUploadPathHex}]文件上传路径", value.FileUploadPath); value.ChannelNo = reader.ReadByte(); writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.BeginTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]起始时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); value.AlarmFlag = reader.ReadUInt64(); writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag); value.MediaType = reader.ReadByte(); writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.MediaType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType)); value.MemoryPositon = reader.ReadByte(); writer.WriteString($"[{value.MemoryPositon.ReadNumber()}]存储器类型", MemoryPositonDisplay(value.MemoryPositon)); value.TaskExcuteCondition = reader.ReadByte(); writer.WriteString($"[{value.TaskExcuteCondition.ReadNumber()}]任务执行条件", TaskExcuteConditionDisplay(value.TaskExcuteCondition));
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Up_0x03 value = new JT808_CarDVR_Up_0x03(); var hex = reader.ReadVirtualArray(6); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{hex.ToArray().ToHexString()}]实时时间", value.RealTime); hex = reader.ReadVirtualArray(6); value.FirstInstallTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{hex.ToArray().ToHexString()}]初次安装时间", value.RealTime); hex = reader.ReadVirtualArray(4); value.FirstMileage = reader.ReadBCD(8); writer.WriteString($"[{hex.ToArray().ToHexString()}]初始里程", value.FirstMileage); hex = reader.ReadVirtualArray(4); value.TotalMilage = reader.ReadBCD(8); writer.WriteString($"[{hex.ToArray().ToHexString()}]累计里程", value.TotalMilage); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="writer"></param> /// <param name="config"></param> public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Up_0x02 value = new JT808_CarDVR_Up_0x02(); var hex = reader.ReadVirtualArray(6); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{hex.ToArray().ToHexString()}]实时时间", value.RealTime); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Up_0x04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x04 value = new JT808_CarDVR_Up_0x04(); value.RealTime = reader.ReadDateTime_yyMMddHHmmss(); value.PulseCoefficient = reader.ReadUInt16(); return(value); }
#pragma warning disable CS1591 // 缺少对公共可见类型或成员的 XML 注释 public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x9205 value = new JT808_0x9205(); value.ChannelNo = reader.ReadByte(); writer.WriteString($"[{value.ChannelNo.ReadNumber()}]逻辑通道号", LogicalChannelNoDisplay(value.ChannelNo)); value.BeginTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.BeginTime.ToString("yyMMddHHmmss")}]起始时间", value.BeginTime.ToString("yyyy-MM-dd HH:mm:ss")); value.EndTime = reader.ReadDateTime_yyMMddHHmmss(); writer.WriteString($"[{value.EndTime.ToString("yyMMddHHmmss")}]起始时间", value.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); value.AlarmFlag = reader.ReadUInt64(); writer.WriteNumber($"[{value.AlarmFlag.ReadNumber()}]报警标志", value.AlarmFlag); value.MediaType = reader.ReadByte(); writer.WriteString($"[{value.MediaType.ReadNumber()}]音视频类型", AVResourceTypeDisplay(value.MediaType)); value.StreamType = reader.ReadByte(); writer.WriteString($"[{value.StreamType.ReadNumber()}]码流类型", StreamTypeDisplay(value.StreamType)); value.MemoryType = reader.ReadByte(); writer.WriteString($"[{value.MemoryType.ReadNumber()}]存储器类型", MemoryTypeDisplay(value.MemoryType));