public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x0900_0x83 value = new JT808_0x0900_0x83(); value.PassthroughContent = reader.ReadRemainStringContent(); writer.WriteString("透传内容", value.PassthroughContent); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x0102 jT808_0X0102 = new JT808_0x0102(); if (reader.Version == JT808Version.JTT2019) { jT808_0X0102.CodeLength = reader.ReadByte(); writer.WriteNumber($"[{ jT808_0X0102.CodeLength.ReadNumber()}]鉴权码长度", jT808_0X0102.CodeLength); ReadOnlySpan <byte> codeSpan = reader.ReadVirtualArray(jT808_0X0102.CodeLength); jT808_0X0102.Code = reader.ReadString(jT808_0X0102.CodeLength); writer.WriteString($"[{codeSpan.ToArray().ToHexString()}]鉴权码", jT808_0X0102.Code); ReadOnlySpan <byte> imeiSpan = reader.ReadVirtualArray(15); jT808_0X0102.IMEI = reader.ReadString(15); writer.WriteString($"[{imeiSpan.ToArray().ToHexString()}]IMEI", jT808_0X0102.IMEI); ReadOnlySpan <byte> svSpan = reader.ReadVirtualArray(20); jT808_0X0102.SoftwareVersion = reader.ReadString(20); writer.WriteString($"[{svSpan.ToArray().ToHexString()}]软件版本号", jT808_0X0102.SoftwareVersion); } else { ReadOnlySpan <byte> codeSpan = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()); jT808_0X0102.Code = reader.ReadRemainStringContent(); writer.WriteString($"[{codeSpan.ToArray().ToHexString()}]鉴权码", jT808_0X0102.Code); } }
public JT808_0x0900_0x83 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0900_0x83 jT808PassthroughType0x83 = new JT808_0x0900_0x83(); jT808PassthroughType0x83.PassthroughContent = reader.ReadRemainStringContent(); return(jT808PassthroughType0x83); }
public JT808_0x0B04 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0B04 value = new JT808_0x0B04(); value.GprsId = reader.ReadUInt32(); value.ViolationType = reader.ReadByte(); if (value.ViolationType >= 0x01 && value.ViolationType <= 0x0A) { value.ViolationValue = reader.ReadUInt16(); value.ViolationStandard = reader.ReadUInt16(); } else if (value.ViolationType == 0x0C) { value.ViolationValue = reader.ReadUInt16(); } value.Latitude = reader.ReadUInt32(); value.Longitude = reader.ReadUInt32(); value.Altitude = reader.ReadUInt16(); value.Speed = reader.ReadUInt16(); value.Direction = reader.ReadUInt16(); value.Time = reader.ReadDateTime6(); value.Reissue = reader.ReadByte(); value.Additional = reader.ReadRemainStringContent(); return(value); }
public JT808_0x0900_0x83 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0900_0x83 value = new JT808_0x0900_0x83(); value.PassthroughContent = reader.ReadRemainStringContent(); return(value); }
public JT808_0x0102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0102 jT808_0X0102 = new JT808_0x0102(); jT808_0X0102.Code = reader.ReadRemainStringContent(); return(jT808_0X0102); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0100 jT808_0X0100 = new JT808_0x0100(); jT808_0X0100.AreaID = reader.ReadUInt16(); jT808_0X0100.CityOrCountyId = reader.ReadUInt16(); if (reader.Version == JT808Version.JTT2019) { jT808_0X0100.MakerId = reader.ReadString(11); jT808_0X0100.TerminalModel = reader.ReadString(30); jT808_0X0100.TerminalId = reader.ReadString(30); } else if (reader.Version == JT808Version.JTT2013) { if (reader.ReadCurrentRemainContentLength() > 33) { jT808_0X0100.MakerId = reader.ReadString(5); jT808_0X0100.TerminalModel = reader.ReadString(20); jT808_0X0100.TerminalId = reader.ReadString(7); } else { jT808_0X0100.MakerId = reader.ReadString(5); jT808_0X0100.TerminalModel = reader.ReadString(8); jT808_0X0100.TerminalId = reader.ReadString(7); } } jT808_0X0100.PlateColor = reader.ReadByte(); jT808_0X0100.PlateNo = reader.ReadRemainStringContent(); return(jT808_0X0100); }
public JT808_0x8300 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8300 jT808_0X8300 = new JT808_0x8300(); jT808_0X8300.TextFlag = reader.ReadByte(); jT808_0X8300.TextInfo = reader.ReadRemainStringContent(); return(jT808_0X8300); }
public JT808_0x8B05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8B05 value = new JT808_0x8B05(); value.Response = reader.ReadByte(); value.Time = reader.ReadDateTime6(); value.Additional = reader.ReadRemainStringContent(); return(value); }
public JT808_0x8400 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8400 jT808_0X8400 = new JT808_0x8400(); jT808_0X8400.CallBack = (JT808CallBackType)reader.ReadByte(); // 最长为 20 字节 jT808_0X8400.PhoneNumber = reader.ReadRemainStringContent(); return(jT808_0X8400); }
public JT808_0x8B02 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8B02 value = new JT808_0x8B02(); value.GprsId = reader.ReadUInt32(); value.TrafficType = reader.ReadByte(); value.Additional = reader.ReadRemainStringContent(); return(value); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x8300 value = new JT808_0x8300(); value.TextFlag = reader.ReadByte(); writer.WriteNumber($"[{ value.TextFlag.ReadNumber()}]文本信息标志位", value.TextFlag); ReadOnlySpan <char> textFlagBits = Convert.ToString(value.TextFlag, 2).PadLeft(8, '0').AsSpan(); if (reader.Version == JT808Version.JTT2019) { writer.WriteStartObject($"文本信息标志对象[{textFlagBits.ToString()}]"); writer.WriteString($"[bit6~-bit7]保留", textFlagBits.Slice(6, 2).ToString()); writer.WriteString($"[bit5]{textFlagBits[5]}", textFlagBits[5] == '0' ? "中心导航信息" : "CAN故障码信息"); writer.WriteString($"[bit4]{textFlagBits[4]}", "-"); writer.WriteString($"[bit3]{textFlagBits[3]}", "终端TTS播读"); writer.WriteString($"[bit2]{textFlagBits[2]}", "终端显示器显示"); var bit0And1 = textFlagBits.Slice(0, 2).ToString(); switch (bit0And1) { case "01": writer.WriteString($"[bit0]{textFlagBits[0]}", "服务"); break; case "10": writer.WriteString($"[bit0]{textFlagBits[0]}", "紧急"); break; case "11": writer.WriteString($"[bit0]{textFlagBits[0]}", "通知"); break; case "00": writer.WriteString($"[bit0]{textFlagBits[0]}", "保留"); break; } writer.WriteEndObject(); value.TextType = reader.ReadByte(); writer.WriteNumber($"[{ value.TextType.ReadNumber()}]文本类型-{(value.TextType==1? "通知":"服务")}", value.TextType); } else { writer.WriteStartObject($"文本信息标志对象[{textFlagBits.ToString()}]"); writer.WriteString($"[bit6~-bit7]保留", textFlagBits.Slice(6, 2).ToString()); writer.WriteString($"[bit5]{textFlagBits[5]}", textFlagBits[5] == '0' ? "中心导航信息" : "CAN故障码信息"); writer.WriteString($"[bit4]{textFlagBits[4]}", "广告屏显示"); writer.WriteString($"[bit3]{textFlagBits[3]}", "终端TTS播读"); writer.WriteString($"[bit2]{textFlagBits[2]}", "终端显示器显示"); writer.WriteString($"[bit1]{textFlagBits[1]}", "保留"); writer.WriteString($"[bit0]{textFlagBits[0]}", "紧急"); writer.WriteEndObject(); } var txtBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray(); value.TextInfo = reader.ReadRemainStringContent(); writer.WriteString($"[{txtBuffer.ToHexString()}]答案内容", value.TextInfo); }
public JT808_0x0B0A Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0B0A value = new JT808_0x0B0A(); value.GprsId = reader.ReadUInt32(); value.UpdateResultCode = reader.ReadByte(); value.Time = reader.ReadDateTime6(); value.UpdateFile = reader.ReadRemainStringContent(); 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_0x0100 jT808_0X0100 = new JT808_0x0100(); jT808_0X0100.AreaID = reader.ReadUInt16(); writer.WriteNumber($"[{jT808_0X0100.AreaID.ReadNumber()}]省域ID", jT808_0X0100.AreaID); jT808_0X0100.CityOrCountyId = reader.ReadUInt16(); writer.WriteNumber($"[{jT808_0X0100.CityOrCountyId.ReadNumber()}]市县域ID", jT808_0X0100.CityOrCountyId); if (reader.Version == JT808Version.JTT2019) { ReadOnlySpan <byte> midSpan = reader.ReadVirtualArray(11); jT808_0X0100.MakerId = reader.ReadString(11); writer.WriteString($"[{midSpan.ToArray().ToHexString()}]制造商ID(11)", jT808_0X0100.MakerId); ReadOnlySpan <byte> tmSpan = reader.ReadVirtualArray(30); jT808_0X0100.TerminalModel = reader.ReadString(30); writer.WriteString($"[{tmSpan.ToArray().ToHexString()}]终端型号(30)", jT808_0X0100.TerminalModel); ReadOnlySpan <byte> tidSpan = reader.ReadVirtualArray(30); jT808_0X0100.TerminalId = reader.ReadString(30); writer.WriteString($"[{tidSpan.ToArray().ToHexString()}]终端ID(30)", jT808_0X0100.TerminalId); } else if (reader.Version == JT808Version.JTT2013) { var length = reader.ReadCurrentRemainContentLength(); if (length > 33) { ReadOnlySpan <byte> midSpan = reader.ReadVirtualArray(5); jT808_0X0100.MakerId = reader.ReadString(5); writer.WriteString($"[{midSpan.ToArray().ToHexString()}]制造商ID(5)", jT808_0X0100.MakerId); ReadOnlySpan <byte> tmSpan = reader.ReadVirtualArray(20); jT808_0X0100.TerminalModel = reader.ReadString(20); writer.WriteString($"[{tmSpan.ToArray().ToHexString()}]终端型号(20)", jT808_0X0100.TerminalModel); ReadOnlySpan <byte> tidSpan = reader.ReadVirtualArray(7); jT808_0X0100.TerminalId = reader.ReadString(7); writer.WriteString($"[{tidSpan.ToArray().ToHexString()}]终端ID(7)", jT808_0X0100.TerminalId); } else { ReadOnlySpan <byte> midSpan = reader.ReadVirtualArray(5); jT808_0X0100.MakerId = reader.ReadString(5); writer.WriteString($"[{midSpan.ToArray().ToHexString()}]制造商ID(5)", jT808_0X0100.MakerId); ReadOnlySpan <byte> tmSpan = reader.ReadVirtualArray(8); jT808_0X0100.TerminalModel = reader.ReadString(8); writer.WriteString($"[{tmSpan.ToArray().ToHexString()}]终端型号(8)", jT808_0X0100.TerminalModel); ReadOnlySpan <byte> tidSpan = reader.ReadVirtualArray(7); jT808_0X0100.TerminalId = reader.ReadString(7); writer.WriteString($"[{tidSpan.ToArray().ToHexString()}]终端ID(7)", jT808_0X0100.TerminalId); } } jT808_0X0100.PlateColor = reader.ReadByte(); writer.WriteNumber($"[{jT808_0X0100.PlateColor.ReadNumber()}]车牌颜色", jT808_0X0100.PlateColor); ReadOnlySpan <byte> vnoSpan = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()); jT808_0X0100.PlateNo = reader.ReadRemainStringContent(); writer.WriteString($"[{vnoSpan.ToArray().ToHexString()}]车牌号码", jT808_0X0100.PlateNo); }
public JT808LocationAttachImpl0x06 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808LocationAttachImpl0x06 jT808LocationAttachImpl0x06 = new JT808LocationAttachImpl0x06(); jT808LocationAttachImpl0x06.AttachInfoId = reader.ReadByte(); jT808LocationAttachImpl0x06.AttachInfoLength = reader.ReadByte(); jT808LocationAttachImpl0x06.Age = reader.ReadInt32(); jT808LocationAttachImpl0x06.Gender = reader.ReadByte(); jT808LocationAttachImpl0x06.UserName = reader.ReadRemainStringContent(); return(jT808LocationAttachImpl0x06); }
public JT808_0x0200_DT1_0x81 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0200_DT1_0x81 jT808_0X0200_DT1_0X81 = new JT808_0x0200_DT1_0x81(); jT808_0X0200_DT1_0X81.AttachInfoId = reader.ReadByte(); jT808_0X0200_DT1_0X81.AttachInfoLength = reader.ReadByte(); jT808_0X0200_DT1_0X81.Age = reader.ReadUInt32(); jT808_0X0200_DT1_0X81.Gender = reader.ReadByte(); jT808_0X0200_DT1_0X81.UserName = reader.ReadRemainStringContent(); return(jT808_0X0200_DT1_0X81); }
/// <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_0x8400 value = new JT808_0x8400(); value.CallBack = (JT808CallBackType)reader.ReadByte(); writer.WriteNumber($"[{((byte)value.CallBack).ReadNumber()}]{value.CallBack.ToString()}", (byte)value.CallBack); // 最长为 20 字节 var pnoBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray(); value.PhoneNumber = reader.ReadRemainStringContent(); writer.WriteString($"[{pnoBuffer.ToHexString()}]电话号码", value.PhoneNumber); }
public JT808_0x8300 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8300 jT808_0X8300 = new JT808_0x8300(); jT808_0X8300.TextFlag = reader.ReadByte(); if (reader.Version == JT808Version.JTT2019) { jT808_0X8300.TextType = reader.ReadByte(); } jT808_0X8300.TextInfo = reader.ReadRemainStringContent(); return(jT808_0X8300); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x8B02 value = new JT808_0x8B02(); value.GprsId = reader.ReadUInt32(); writer.WriteNumber($"[{value.GprsId.ReadNumber()}]线路编号", value.GprsId); value.TrafficType = reader.ReadByte(); writer.WriteNumber($"[{value.TrafficType.ReadNumber()}]业务类型-{Enum.GetName(typeof(TrafficType), value.TrafficType)}", value.TrafficType); var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()); value.Additional = reader.ReadRemainStringContent(); writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]附加内容", value.Additional); }
public JT808_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0100 jT808_0X0100 = new JT808_0x0100(); jT808_0X0100.AreaID = reader.ReadUInt16(); jT808_0X0100.CityOrCountyId = reader.ReadUInt16(); jT808_0X0100.MakerId = reader.ReadString(5); jT808_0X0100.TerminalModel = reader.ReadString(20); jT808_0X0100.TerminalId = reader.ReadString(7); jT808_0X0100.PlateColor = reader.ReadByte(); jT808_0X0100.PlateNo = reader.ReadRemainStringContent(); return(jT808_0X0100); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x8B05 value = new JT808_0x8B05(); value.Response = reader.ReadByte(); writer.WriteNumber($"[{value.Response.ReadNumber()}]业务请求结果", value.Response); value.Time = reader.ReadDateTime6(); writer.WriteString($"[{value.Time:yyMMddHHmmss}]应答时间", value.Time.ToString("yyyy-MM-dd HH:mm:ss")); var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()); value.Additional = reader.ReadRemainStringContent(); writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]附加内容", value.Additional); }
public JT808_0x8100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8100 jT808_0X8100 = new JT808_0x8100(); jT808_0X8100.MsgNum = reader.ReadUInt16(); jT808_0X8100.JT808TerminalRegisterResult = (JT808TerminalRegisterResult)reader.ReadByte(); // 只有在成功后才有该字段 if (jT808_0X8100.JT808TerminalRegisterResult == JT808TerminalRegisterResult.成功) { jT808_0X8100.Code = reader.ReadRemainStringContent(); } return(jT808_0X8100); }
public JT808_0x8105 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8105 jT808_0x8105 = new JT808_0x8105 { CommandWord = reader.ReadByte() }; if (jT808_0x8105.CommandWord == 1 || jT808_0x8105.CommandWord == 2) { jT808_0x8105.CommandValue = new CommandParams(); jT808_0x8105.CommandValue.SetCommandParams(reader.ReadRemainStringContent()); } return(jT808_0x8105); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x0B0A value = new JT808_0x0B0A(); value.GprsId = reader.ReadUInt32(); writer.WriteNumber($"[{value.GprsId.ReadNumber()}]线路编号", value.GprsId); value.UpdateResultCode = reader.ReadByte(); writer.WriteNumber($"[{value.UpdateResultCode.ReadNumber()}]升级结果代码-{Enum.GetName(typeof(UpdateResultCode), value.UpdateResultCode)}", value.UpdateResultCode); value.Time = reader.ReadDateTime6(); writer.WriteString($"[{value.Time:yyMMddHHmmss}]时间", value.Time.ToString("yyyy-MM-dd HH:mm:ss")); var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()); value.UpdateFile = reader.ReadRemainStringContent(); writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]升级文件", value.UpdateFile); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x8300 jT808_0X8300 = new JT808_0x8300(); jT808_0X8300.TextFlag = reader.ReadByte(); writer.WriteNumber($"[{ jT808_0X8300.TextFlag.ReadNumber()}]文本信息标志位", jT808_0X8300.TextFlag); if (reader.Version == JT808Version.JTT2019) { jT808_0X8300.TextType = reader.ReadByte(); writer.WriteNumber($"[{ jT808_0X8300.TextType.ReadNumber()}]文本类型-{(jT808_0X8300.TextType==1? "通知":"服务")}", jT808_0X8300.TextType); } var txtBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray(); jT808_0X8300.TextInfo = reader.ReadRemainStringContent(); writer.WriteString($"[{txtBuffer.ToHexString()}]答案内容", jT808_0X8300.TextInfo); }
/// <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_0x8100 value = new JT808_0x8100(); value.AckMsgNum = reader.ReadUInt16(); writer.WriteNumber($"[{ value.AckMsgNum.ReadNumber()}]应答流水号", value.AckMsgNum); value.JT808TerminalRegisterResult = (JT808TerminalRegisterResult)reader.ReadByte(); writer.WriteNumber($"[{ ((byte)value.JT808TerminalRegisterResult).ReadNumber()}]结果-{value.JT808TerminalRegisterResult.ToString()}", (byte)value.JT808TerminalRegisterResult); // 只有在成功后才有该字段 if (value.JT808TerminalRegisterResult == JT808TerminalRegisterResult.成功) { var codeBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray(); value.Code = reader.ReadRemainStringContent(); writer.WriteString($"[{codeBuffer.ToHexString()}]鉴权码", value.Code); } }
public JT808_0x0102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0102 jT808_0X0102 = new JT808_0x0102(); if (reader.Version == JT808Version.JTT2019) { jT808_0X0102.CodeLength = reader.ReadByte(); jT808_0X0102.Code = reader.ReadString(jT808_0X0102.CodeLength); jT808_0X0102.IMEI = reader.ReadString(15); jT808_0X0102.SoftwareVersion = reader.ReadString(20); } else { jT808_0X0102.Code = reader.ReadRemainStringContent(); } return(jT808_0X0102); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_0x0B04 value = new JT808_0x0B04(); value.GprsId = reader.ReadUInt32(); writer.WriteNumber($"[{value.GprsId.ReadNumber()}]线路编号", value.GprsId); value.ViolationType = reader.ReadByte(); writer.WriteNumber($"[{value.ViolationType.ReadNumber()}]违规类型-{Enum.GetName(typeof(ViolationType), value.ViolationType)}", value.ViolationType); if ((value.ViolationType >= 0x01 && value.ViolationType <= 0x0A) || value.ViolationType == 0x0D) { value.ViolationValue = reader.ReadUInt16(); writer.WriteNumber($"[{value.ViolationValue.ReadNumber()}]违规值", value.ViolationValue); value.ViolationStandard = reader.ReadUInt16(); writer.WriteNumber($"[{value.ViolationStandard.ReadNumber()}]违规标准", value.ViolationStandard); } else if (value.ViolationType == 0x0C) { value.ViolationValue = reader.ReadUInt16(); writer.WriteNumber($"[{value.ViolationValue.ReadNumber()}]违规值", value.ViolationValue); } value.Latitude = reader.ReadUInt32(); writer.WriteNumber($"[{value.Latitude.ReadNumber()}]纬度", value.Latitude); value.Longitude = reader.ReadUInt32(); writer.WriteNumber($"[{value.Longitude.ReadNumber()}]经度", value.Longitude); value.Altitude = reader.ReadUInt16(); writer.WriteNumber($"[{value.Altitude.ReadNumber()}]高程", value.Altitude); value.Speed = reader.ReadUInt16(); writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); value.Direction = reader.ReadUInt16(); writer.WriteNumber($"[{value.Direction.ReadNumber()}]方向", value.Direction); value.Time = reader.ReadDateTime6(); writer.WriteString($"[{value.Time:yyMMddHHmmss}]时间", value.Time.ToString("yyyy-MM-dd HH:mm:ss")); value.Reissue = reader.ReadByte(); writer.WriteNumber($"[{value.Reissue.ReadNumber()}]补发标识", value.Reissue); var virtualHex = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()); value.Additional = reader.ReadRemainStringContent(); writer.WriteString($"[{virtualHex.ToArray().ToHexString()}]附加内容", value.Additional); }
/// <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_0x8105 value = new JT808_0x8105 { CommandWord = reader.ReadByte() }; writer.WriteNumber($"[{ value.CommandWord.ReadNumber()}]命令字", value.CommandWord); if (value.CommandWord == 1 || value.CommandWord == 2) { value.CommandValue = new CommandParams(); var commandValueBuffer = reader.ReadVirtualArray(reader.ReadCurrentRemainContentLength()).ToArray(); string commandValue = reader.ReadRemainStringContent(); writer.WriteString($"[{ commandValueBuffer.ToHexString()}]命令参数", commandValue); writer.WriteStartObject("命令参数对象"); var values = commandValue.Split(';'); if (!string.IsNullOrEmpty(values[0])) { var connectionControl = byte.Parse(values[0]); writer.WriteNumber("连接控制", connectionControl); } else { writer.WriteNull("连接控制"); } if (!string.IsNullOrEmpty(values[1])) { var dialPointName = values[1]; writer.WriteString("拨号点名称", dialPointName); } else { writer.WriteNull("拨号点名称"); } if (!string.IsNullOrEmpty(values[2])) { var dialUserName = values[2]; writer.WriteString("拨号用户名", dialUserName); } else { writer.WriteNull("拨号用户名"); } if (!string.IsNullOrEmpty(values[3])) { var dialPwd = values[3]; writer.WriteString("拨号密码", dialPwd); } else { writer.WriteNull("拨号密码"); } if (!string.IsNullOrEmpty(values[4])) { var serverUrl = values[4]; writer.WriteString("服务器地址", serverUrl); } else { writer.WriteNull("服务器地址"); } if (!string.IsNullOrEmpty(values[5])) { var tcpPort = ushort.Parse(values[5]); writer.WriteNumber("TCP端口", tcpPort); } else { writer.WriteNull("TCP端口"); } if (!string.IsNullOrEmpty(values[6])) { var udpPort = ushort.Parse(values[6]); writer.WriteNumber("UDP端口", udpPort); } else { writer.WriteNull("UDP端口"); } if (!string.IsNullOrEmpty(values[7])) { var manufacturerCode = long.Parse(values[7]); writer.WriteNumber("制造商ID", manufacturerCode); } else { writer.WriteNull("制造商ID"); } if (!string.IsNullOrEmpty(values[8])) { var monitoringPlatformAuthenticationCode = values[8]; writer.WriteString("监管平台鉴权码", monitoringPlatformAuthenticationCode); } else { writer.WriteNull("监管平台鉴权码"); } if (!string.IsNullOrEmpty(values[9])) { var hardwareVersion = values[9]; writer.WriteString("硬件版本号", hardwareVersion); } else { writer.WriteNull("硬件版本号"); } if (!string.IsNullOrEmpty(values[10])) { var firmwareVersion = values[10]; writer.WriteString("固件版本号", firmwareVersion); } else { writer.WriteNull("固件版本号"); } if (!string.IsNullOrEmpty(values[11])) { var url = values[11]; writer.WriteString("URL地址", url); } else { writer.WriteNull("URL地址"); } if (!string.IsNullOrEmpty(values[12])) { var connectTimeLimit = ushort.Parse(values[12]); writer.WriteNumber("连接到指定服务器时限", connectTimeLimit); } else { writer.WriteNull("连接到指定服务器时限"); } writer.WriteEndObject(); } }