/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_CarDVR_Up_0x07 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x07 value = new JT808_CarDVR_Up_0x07(); value.ProductionPlantCCCCertificationCode = reader.ReadASCII(7); value.CertifiedProductModels = reader.ReadASCII(16); value.ProductionDate = reader.ReadDateTime3(); value.ProductProductionFlowNumber = reader.ReadString(4); value.Reversed = reader.ReadString(5); return(value); }
public JT808_CarDVR_Down_0x82 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Down_0x82 value = new JT808_CarDVR_Down_0x82(); value.Vin = reader.ReadASCII(17); value.VehicleNo = reader.ReadASCII(9); reader.Skip(3); value.VehicleType = reader.ReadString(6); reader.Skip(4); return(value); }
public void ReadASCIITest() { byte[] array1 = new byte[] { 0x53, 0x56, 0x31, 0x2E, 0x31, 0x2E, 0x30 }; JT808MessagePackReader jT808MessagePackReader = new JT808MessagePackReader(array1); Assert.Equal("SV1.1.0", jT808MessagePackReader.ReadASCII(7)); }
/// <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); }
public JT808_CarDVR_Up_0x01 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x01 value = new JT808_CarDVR_Up_0x01(); value.DriverLicenseNo = reader.ReadASCII(18); return(value); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Up_0x01 value = new JT808_CarDVR_Up_0x01(); var hex = reader.ReadVirtualArray(18); value.DriverLicenseNo = reader.ReadASCII(18); writer.WriteString($"[{hex.ToArray().ToHexString()}]当前驾驶人的机动车驾驶证号码", value.DriverLicenseNo); }
public JT808_CarDVR_Up_0x05 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x05 value = new JT808_CarDVR_Up_0x05(); value.Vin = reader.ReadASCII(17); value.VehicleNo = reader.ReadString(12); value.VehicleType = reader.ReadString(10); return(value); }
public JT808_CarDVR_Down_0xE1 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Down_0xE1 value = new JT808_CarDVR_Down_0xE1(); value.UniqueNumber = reader.ReadASCII(35); value.PulseCoefficient = reader.ReadUInt16(); value.Speed = reader.ReadUInt16(); value.TotalMileage = reader.ReadUInt32(); value.StatusSignal = 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) { JT808_CarDVR_Up_0x07 value = new JT808_CarDVR_Up_0x07(); var hex = reader.ReadVirtualArray(7); value.ProductionPlantCCCCertificationCode = reader.ReadASCII(7); writer.WriteString($"[{hex.ToArray().ToHexString()}]生产厂 CCC 认证代码", value.ProductionPlantCCCCertificationCode); hex = reader.ReadVirtualArray(16); value.CertifiedProductModels = reader.ReadASCII(16); writer.WriteString($"[{hex.ToArray().ToHexString()}]认证产品型号", value.CertifiedProductModels); hex = reader.ReadVirtualArray(3); value.ProductionDate = reader.ReadDateTime3(); writer.WriteString($"[{hex.ToArray().ToHexString()}]生产日期", value.ProductionDate); hex = reader.ReadVirtualArray(4); value.ProductProductionFlowNumber = reader.ReadString(4); writer.WriteString($"[{hex.ToArray().ToHexString()}]产品生产流水号", value.ProductProductionFlowNumber); hex = reader.ReadVirtualArray(5); value.Reversed = reader.ReadString(5); writer.WriteString($"[{hex.ToArray().ToHexString()}]备用", value.Reversed); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x0900_0xF8 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x0900_0xF8 value = new JT808_0x0900_0xF8(); value.USBMessageCount = reader.ReadByte(); if (value.USBMessageCount > 0) { value.USBMessages = new List <JT808_0x0900_0xF8_USB>(); for (int i = 0; i < value.USBMessageCount; i++) { JT808_0x0900_0xF8_USB item = new JT808_0x0900_0xF8_USB(); item.USBID = reader.ReadByte(); item.MessageLength = reader.ReadByte(); item.CompantNameLength = reader.ReadByte(); item.CompantName = reader.ReadASCII(item.CompantNameLength); item.ProductModelLength = reader.ReadByte(); item.ProductModel = reader.ReadASCII(item.ProductModelLength); item.HardwareVersionNumberLength = reader.ReadByte(); item.HardwareVersionNumber = reader.ReadASCII(item.HardwareVersionNumberLength); item.SoftwareVersionNumberLength = reader.ReadByte(); item.SoftwareVersionNumber = reader.ReadASCII(item.SoftwareVersionNumberLength); item.DevicesIDLength = reader.ReadByte(); item.DevicesID = reader.ReadASCII(item.DevicesIDLength); item.CustomerCodeLength = reader.ReadByte(); item.CustomerCode = reader.ReadASCII(item.CustomerCodeLength); value.USBMessages.Add(item); } } return(value); }
public JT808_CarDVR_Down_0x84 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Down_0x84 value = new JT808_CarDVR_Down_0x84(); value.RealTime = reader.ReadDateTime6(); value.SignalOperate = reader.ReadByte(); value.D0 = reader.ReadASCII(10); value.D1 = reader.ReadASCII(10); value.D2 = reader.ReadASCII(10); value.NearLight = reader.ReadASCII(10); value.FarLight = reader.ReadASCII(10); value.RightTurn = reader.ReadASCII(10); value.LeftTurn = reader.ReadASCII(10); value.Brake = reader.ReadASCII(10); 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_0x05 value = new JT808_CarDVR_Up_0x05(); var hex = reader.ReadVirtualArray(17); value.Vin = reader.ReadASCII(17); writer.WriteString($"[{hex.ToArray().ToHexString()}]车辆识别代号", value.Vin); hex = reader.ReadVirtualArray(12); value.VehicleNo = reader.ReadString(12); writer.WriteString($"[{hex.ToArray().ToHexString()}]机动车号牌号码", value.VehicleNo); hex = reader.ReadVirtualArray(12); value.VehicleType = reader.ReadString(12); writer.WriteString($"[{hex.ToArray().ToHexString()}]机动车号牌分类", value.VehicleType); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Down_0xE1 value = new JT808_CarDVR_Down_0xE1(); var hex = reader.ReadVirtualArray(35); value.UniqueNumber = reader.ReadASCII(35); writer.WriteString($"[{hex.ToArray().ToHexString()}]记录仪唯一性编号", value.UniqueNumber); value.PulseCoefficient = reader.ReadUInt16(); writer.WriteNumber($"[{value.PulseCoefficient.ReadNumber()}]脉冲系数", value.PulseCoefficient); value.Speed = reader.ReadUInt16(); writer.WriteNumber($"[{value.Speed.ReadNumber()}]当前速度", value.Speed); value.TotalMileage = reader.ReadUInt32(); writer.WriteNumber($"[{value.TotalMileage.ReadNumber()}]累计里程", value.TotalMileage); value.StatusSignal = reader.ReadByte(); writer.WriteNumber($"[{value.StatusSignal.ReadNumber()}]状态信号", value.StatusSignal); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Up_0x10 value = new JT808_CarDVR_Up_0x10(); writer.WriteStartArray("请求发送指定的时间范围内 N 个单位数据块的数据"); 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(); writer.WriteStartObject(); writer.WriteStartObject($"指定的结束时间之前最近的第{i+1}条事故疑点记录"); var hex = reader.ReadVirtualArray(6); jT808_CarDVR_Up_0x10_AccidentSuspectin.EndTime = reader.ReadDateTime6(); writer.WriteString($"[{hex.ToArray().ToHexString()}]行驶结束时间", jT808_CarDVR_Up_0x10_AccidentSuspectin.EndTime); hex = reader.ReadVirtualArray(18); jT808_CarDVR_Up_0x10_AccidentSuspectin.DriverLicenseNo = reader.ReadASCII(18); writer.WriteString($"[{hex.ToArray().ToHexString()}]机动车驾驶证号码", jT808_CarDVR_Up_0x10_AccidentSuspectin.DriverLicenseNo); for (int j = 0; j < 100; j++)//100组 { JT808_CarDVR_Up_0x10_DrivingStatus jT808_CarDVR_Up_0X10_DrivingStatus = new JT808_CarDVR_Up_0x10_DrivingStatus(); if (j == 0) { writer.WriteStartObject("行驶结束时的速度"); } else { writer.WriteStartObject($"行驶结束时间前 { (j * 0.2).ToString("F1")} 秒时的速度"); } jT808_CarDVR_Up_0X10_DrivingStatus.Speed = reader.ReadByte(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0X10_DrivingStatus.Speed.ReadNumber()}]速度", jT808_CarDVR_Up_0X10_DrivingStatus.Speed); jT808_CarDVR_Up_0X10_DrivingStatus.StatusSignal = reader.ReadByte(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0X10_DrivingStatus.StatusSignal.ReadNumber()}]状态信号", jT808_CarDVR_Up_0X10_DrivingStatus.StatusSignal); writer.WriteEndObject(); } jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng = reader.ReadInt32(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng.ReadNumber()}]经度", jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLng); jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat = reader.ReadInt32(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat.ReadNumber()}]纬度", jT808_CarDVR_Up_0x10_AccidentSuspectin.GpsLat); jT808_CarDVR_Up_0x10_AccidentSuspectin.Height = reader.ReadInt16(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x10_AccidentSuspectin.Height.ReadNumber()}]高度", jT808_CarDVR_Up_0x10_AccidentSuspectin.Height); writer.WriteEndObject(); writer.WriteEndObject(); } writer.WriteEndArray(); }
public JT808_CarDVR_Up_0x12 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x12 value = new JT808_CarDVR_Up_0x12(); value.JT808_CarDVR_Up_0x12_DriveLogins = new List <JT808_CarDVR_Up_0x12_DriveLogin>(); var count = (reader.ReadCurrentRemainContentLength() - 1) / 25;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x12_DriveLogin jT808_CarDVR_Up_0x12_DriveLogin = new JT808_CarDVR_Up_0x12_DriveLogin(); jT808_CarDVR_Up_0x12_DriveLogin.LoginTime = reader.ReadDateTime6(); jT808_CarDVR_Up_0x12_DriveLogin.DriverLicenseNo = reader.ReadASCII(18); jT808_CarDVR_Up_0x12_DriveLogin.LoginType = reader.ReadByte(); value.JT808_CarDVR_Up_0x12_DriveLogins.Add(jT808_CarDVR_Up_0x12_DriveLogin); } return(value); }
/// <summary> /// /// </summary> /// <param name="reader"></param> /// <param name="config"></param> /// <returns></returns> public JT808_0x8103_0xF366 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); value.ParamId = reader.ReadUInt32(); value.ParamLength = reader.ReadByte(); value.TyreSpecificationType = reader.ReadASCII(12); value.TyrePressureUnit = reader.ReadUInt16(); value.NormalFetalPressure = reader.ReadUInt16(); value.ThresholdUnbalancedTirePressure = reader.ReadUInt16(); value.SlowLeakageThreshold = reader.ReadUInt16(); value.LowVoltageThreshold = reader.ReadUInt16(); value.HighVoltageThreshold = reader.ReadUInt16(); value.HighTemperatureThreshold = reader.ReadUInt16(); value.VoltageThreshold = reader.ReadUInt16(); value.TimedReportingInterval = reader.ReadUInt16(); value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); return(value); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Up_0x11 value = new JT808_CarDVR_Up_0x11(); writer.WriteStartArray("请求发送指定的时间范围内 N 个单位数据块的数据"); var count = (reader.ReadCurrentRemainContentLength() - 1) / 50;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x11_DriveOverTime jT808_CarDVR_Up_0x11_DriveOverTime = new JT808_CarDVR_Up_0x11_DriveOverTime(); writer.WriteStartObject(); writer.WriteStartObject($"指定的结束时间前最近的第 {i+1}条超时驾驶记录"); var hex = reader.ReadVirtualArray(18); jT808_CarDVR_Up_0x11_DriveOverTime.DriverLicenseNo = reader.ReadASCII(18); writer.WriteString($"[{hex.ToArray().ToHexString()}机动车驾驶证号码]", jT808_CarDVR_Up_0x11_DriveOverTime.DriverLicenseNo); hex = reader.ReadVirtualArray(6); jT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingStartTime = reader.ReadDateTime6(); writer.WriteString($"[{hex.ToArray().ToHexString()}连续驾驶开始时间]", jT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingStartTime); hex = reader.ReadVirtualArray(6); jT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingEndTime = reader.ReadDateTime6(); writer.WriteString($"[{hex.ToArray().ToHexString()}连续驾驶结束时间]", jT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingEndTime); writer.WriteStartObject("连续驾驶开始时间所在的最近一次有效位置信息"); jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLng = reader.ReadInt32(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLng.ReadNumber()}]经度", jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLng); jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLat = reader.ReadInt32(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLat.ReadNumber()}纬度", jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLat); jT808_CarDVR_Up_0x11_DriveOverTime.StartHeight = reader.ReadInt16(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x11_DriveOverTime.StartHeight.ReadNumber()}]高度", jT808_CarDVR_Up_0x11_DriveOverTime.StartHeight); writer.WriteEndObject(); writer.WriteStartObject("连续驾驶结束时间所在的最近一次有效位置信息"); jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLng = reader.ReadInt32(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLng.ReadNumber()}]经度", jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLng); jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLat = reader.ReadInt32(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLat.ReadNumber()}]纬度", jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLat); jT808_CarDVR_Up_0x11_DriveOverTime.EndHeight = reader.ReadInt16(); writer.WriteNumber($"[{ jT808_CarDVR_Up_0x11_DriveOverTime.EndHeight.ReadNumber()}]高度", jT808_CarDVR_Up_0x11_DriveOverTime.EndHeight); writer.WriteEndObject(); writer.WriteEndObject(); writer.WriteEndObject(); } writer.WriteEndArray(); }
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) { JT808_CarDVR_Up_0x12 value = new JT808_CarDVR_Up_0x12(); writer.WriteStartArray("请求发送指定的时间范围内 N 个单位数据块的数据"); var count = (reader.ReadCurrentRemainContentLength() - 1) / 25;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x12_DriveLogin jT808_CarDVR_Up_0x12_DriveLogin = new JT808_CarDVR_Up_0x12_DriveLogin(); writer.WriteStartObject(); writer.WriteStartObject($"指定的结束时间之前最近的第 {i+1}条驾驶人登录退出记录"); var hex = reader.ReadVirtualArray(6); jT808_CarDVR_Up_0x12_DriveLogin.LoginTime = reader.ReadDateTime6(); writer.WriteString($"[{hex.ToArray().ToHexString()}]登录/登出发生时间", jT808_CarDVR_Up_0x12_DriveLogin.LoginTime); hex = reader.ReadVirtualArray(18); jT808_CarDVR_Up_0x12_DriveLogin.DriverLicenseNo = reader.ReadASCII(18); writer.WriteString($"[{hex.ToArray().ToHexString()}]机动车驾驶证号码", jT808_CarDVR_Up_0x12_DriveLogin.DriverLicenseNo); jT808_CarDVR_Up_0x12_DriveLogin.LoginType = reader.ReadByte(); writer.WriteString($"[{ jT808_CarDVR_Up_0x12_DriveLogin.LoginType.ReadNumber()}]登录/登出事件", LoginTypeDisplay(jT808_CarDVR_Up_0x12_DriveLogin.LoginType)); writer.WriteEndObject(); writer.WriteEndObject(); } writer.WriteEndArray(); string LoginTypeDisplay(byte loginType) { if (loginType == 1) { return("登录"); } else if (loginType == 2) { return("退出"); } else { return("保留"); } } }
public JT808_CarDVR_Up_0x11 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) { JT808_CarDVR_Up_0x11 value = new JT808_CarDVR_Up_0x11(); value.JT808_CarDVR_Up_0x11_DriveOverTimes = new List <JT808_CarDVR_Up_0x11_DriveOverTime>(); var count = (reader.ReadCurrentRemainContentLength() - 1) / 50;//记录块个数, -1 去掉校验位 for (int i = 0; i < count; i++) { JT808_CarDVR_Up_0x11_DriveOverTime jT808_CarDVR_Up_0x11_DriveOverTime = new JT808_CarDVR_Up_0x11_DriveOverTime(); jT808_CarDVR_Up_0x11_DriveOverTime.DriverLicenseNo = reader.ReadASCII(18); jT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingStartTime = reader.ReadDateTime6(); jT808_CarDVR_Up_0x11_DriveOverTime.ContinueDrivingEndTime = reader.ReadDateTime6(); jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLng = reader.ReadInt32(); jT808_CarDVR_Up_0x11_DriveOverTime.GpsStartLat = reader.ReadInt32(); jT808_CarDVR_Up_0x11_DriveOverTime.StartHeight = reader.ReadInt16(); jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLng = reader.ReadInt32(); jT808_CarDVR_Up_0x11_DriveOverTime.GpsEndLat = reader.ReadInt32(); jT808_CarDVR_Up_0x11_DriveOverTime.EndHeight = reader.ReadInt16(); value.JT808_CarDVR_Up_0x11_DriveOverTimes.Add(jT808_CarDVR_Up_0x11_DriveOverTime); } return(value); }