@@ -129,5 +129,11 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test | |||||
Assert.Equal(45, jT808_0X8103_0XF364.WarningVolume); | Assert.Equal(45, jT808_0X8103_0XF364.WarningVolume); | ||||
Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364, jT808_0X8103_0XF364.ParamId); | Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364, jT808_0X8103_0XF364.ParamId); | ||||
} | } | ||||
[Fact] | |||||
public void Json() | |||||
{ | |||||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304".ToHexBytes()); | |||||
} | |||||
} | } | ||||
} | } |
@@ -107,5 +107,10 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test | |||||
Assert.Equal(66, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm); | Assert.Equal(66, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm); | ||||
Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365, jT808_0X8103_0XF365.ParamId); | Assert.Equal(JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365, jT808_0X8103_0XF365.ParamId); | ||||
} | } | ||||
[Fact] | |||||
public void Json() | |||||
{ | |||||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes()); | |||||
} | |||||
} | } | ||||
} | } |
@@ -0,0 +1,18 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
{ | |||||
/// <summary> | |||||
/// 主动拍照策略 | |||||
/// </summary> | |||||
public enum ActivePhotographyStrategyType:byte | |||||
{ | |||||
不开启=0x00, | |||||
定时拍照=0x01, | |||||
定距拍照=0x02, | |||||
保留=0x03, | |||||
不修改参数=0xFF | |||||
} | |||||
} |
@@ -1,20 +0,0 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
{ | |||||
public enum JT808_JTActiveSafety_0x0900_Type : byte | |||||
{ | |||||
/// <summary> | |||||
/// 状态查询 | |||||
/// 外设状态信息:外设工作状态、设备报警信息 | |||||
/// </summary> | |||||
QueryState = 0xF7, | |||||
/// <summary> | |||||
/// 信息查询 | |||||
/// 外设传感器的基本信息:公司信息、产品代码、版本号、外设ID、客户代码。 | |||||
/// </summary> | |||||
QueryInfomation = 0xF8 | |||||
} | |||||
} |
@@ -0,0 +1,20 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
{ | |||||
/// <summary> | |||||
/// 拍照分辨率 | |||||
/// </summary> | |||||
public enum PhotoResolutionType:byte | |||||
{ | |||||
x352_288=0x01, | |||||
x704_288=0x02, | |||||
x704_576=0x03, | |||||
x640_480=0x04, | |||||
x1280_720=0x05, | |||||
x1920_1080=0x06, | |||||
不修改参数=0xFF | |||||
} | |||||
} |
@@ -0,0 +1,21 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.Enums | |||||
{ | |||||
/// <summary> | |||||
/// 视频录制分辨率 | |||||
/// </summary> | |||||
public enum VideoRecordingResolutionType:byte | |||||
{ | |||||
CIF=0x01, | |||||
HD1=0x02, | |||||
D1=0x03, | |||||
WD1=0x04, | |||||
VGA=0x05, | |||||
_720P=0x06, | |||||
_1080P=0x07, | |||||
不修改参数=0xFF | |||||
} | |||||
} |
@@ -4,16 +4,14 @@ | |||||
<name>JT808.Protocol.Extensions.JTActiveSafety</name> | <name>JT808.Protocol.Extensions.JTActiveSafety</name> | ||||
</assembly> | </assembly> | ||||
<members> | <members> | ||||
<member name="F:JT808.Protocol.Extensions.JTActiveSafety.Enums.JT808_JTActiveSafety_0x0900_Type.QueryState"> | |||||
<member name="T:JT808.Protocol.Extensions.JTActiveSafety.Enums.ActivePhotographyStrategyType"> | |||||
<summary> | <summary> | ||||
状态查询 | |||||
外设状态信息:外设工作状态、设备报警信息 | |||||
主动拍照策略 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT808.Protocol.Extensions.JTActiveSafety.Enums.JT808_JTActiveSafety_0x0900_Type.QueryInfomation"> | |||||
<member name="T:JT808.Protocol.Extensions.JTActiveSafety.Enums.PhotoResolutionType"> | |||||
<summary> | <summary> | ||||
信息查询 | |||||
外设传感器的基本信息:公司信息、产品代码、版本号、外设ID、客户代码。 | |||||
拍照分辨率 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT808.Protocol.Extensions.JTActiveSafety.Enums.USBIDType.ADAS"> | <member name="F:JT808.Protocol.Extensions.JTActiveSafety.Enums.USBIDType.ADAS"> | ||||
@@ -36,6 +34,11 @@ | |||||
盲点监测系统 | 盲点监测系统 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.Extensions.JTActiveSafety.Enums.VideoRecordingResolutionType"> | |||||
<summary> | |||||
视频录制分辨率 | |||||
</summary> | |||||
</member> | |||||
<member name="T:JT808.Protocol.Extensions.JTActiveSafety.Enums.WorkingConditionType"> | <member name="T:JT808.Protocol.Extensions.JTActiveSafety.Enums.WorkingConditionType"> | ||||
<summary> | <summary> | ||||
工作状态 | 工作状态 | ||||
@@ -483,6 +486,7 @@ | |||||
<member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.ActivePhotographyStrategy"> | <member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.ActivePhotographyStrategy"> | ||||
<summary> | <summary> | ||||
主动拍照策略 | 主动拍照策略 | ||||
<see cref="T:JT808.Protocol.Extensions.JTActiveSafety.Enums.ActivePhotographyStrategyType"/> | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.ActivelyTimePhotoInterval"> | <member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.ActivelyTimePhotoInterval"> | ||||
@@ -508,6 +512,7 @@ | |||||
<member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.PhotoResolution"> | <member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.PhotoResolution"> | ||||
<summary> | <summary> | ||||
拍照分辨率 | 拍照分辨率 | ||||
<see cref="T:JT808.Protocol.Extensions.JTActiveSafety.Enums.PhotoResolutionType"/> | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.VideoRecordingResolution"> | <member name="P:JT808.Protocol.Extensions.JTActiveSafety.MessageBody.JT808_0x8103_0xF364.VideoRecordingResolution"> | ||||
@@ -1,13 +1,17 @@ | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Extensions.JTActiveSafety.Enums; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 高级驾驶辅助系统参数 | /// 高级驾驶辅助系统参数 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8103_0xF364 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF364> | |||||
public class JT808_0x8103_0xF364 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF364>, IJT808Analyze | |||||
{ | { | ||||
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364; | public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF364; | ||||
public override byte ParamLength { get; set; } | public override byte ParamLength { get; set; } | ||||
@@ -21,6 +25,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
public byte WarningVolume { get; set; } | public byte WarningVolume { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 主动拍照策略 | /// 主动拍照策略 | ||||
/// <see cref="JT808.Protocol.Extensions.JTActiveSafety.Enums.ActivePhotographyStrategyType"/> | |||||
/// </summary> | /// </summary> | ||||
public byte ActivePhotographyStrategy { get; set; } | public byte ActivePhotographyStrategy { get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -41,6 +46,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
public byte SingleInitiativePhotosInterval { get; set; } | public byte SingleInitiativePhotosInterval { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 拍照分辨率 | /// 拍照分辨率 | ||||
/// <see cref="JT808.Protocol.Extensions.JTActiveSafety.Enums.PhotoResolutionType"/> | |||||
/// </summary> | /// </summary> | ||||
public byte PhotoResolution { get; set; } | public byte PhotoResolution { get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -193,57 +199,185 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte[] Placeholder2 { get; set; } = new byte[4]; | public byte[] Placeholder2 { get; set; } = new byte[4]; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); | |||||
value.ParamId = reader.ReadUInt32(); | |||||
value.ParamLength = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId); | |||||
writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength); | |||||
value.AlarmJudgeSpeedThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AlarmJudgeSpeedThreshold.ReadNumber()}]报警判断速度阈值", value.AlarmJudgeSpeedThreshold); | |||||
value.WarningVolume = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.WarningVolume.ReadNumber()}]报警提示音量", value.WarningVolume); | |||||
value.ActivePhotographyStrategy = reader.ReadByte(); | |||||
var activePhotographyStrategy = (ActivePhotographyStrategyType)ActivePhotographyStrategy; | |||||
writer.WriteNumber($"[{value.ActivePhotographyStrategy.ReadNumber()}]主动拍照策略-{activePhotographyStrategy.ToString()}", value.ActivePhotographyStrategy); | |||||
value.ActivelyTimePhotoInterval = reader.ReadUInt16(); | |||||
writer.WriteNumber($"[{value.ActivelyTimePhotoInterval.ReadNumber()}]主动定时拍照时间间隔", value.ActivelyTimePhotoInterval); | |||||
value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); | |||||
writer.WriteNumber($"[{value.ActiveDistancePhotographyDistanceInterval.ReadNumber()}]主动定距拍照距离间隔", value.ActiveDistancePhotographyDistanceInterval); | |||||
value.SingleInitiativePhotos = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SingleInitiativePhotos.ReadNumber()}]单次主动拍照张数", value.SingleInitiativePhotos); | |||||
value.SingleInitiativePhotosInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SingleInitiativePhotosInterval.ReadNumber()}]单次主动拍照时间间隔", value.SingleInitiativePhotosInterval); | |||||
value.PhotoResolution = reader.ReadByte(); | |||||
var photoResolutionType = (PhotoResolutionType)value.PhotoResolution; | |||||
writer.WriteNumber($"[{value.PhotoResolution.ReadNumber()}]拍照分辨率-{photoResolutionType.ToString()}", value.PhotoResolution); | |||||
value.VideoRecordingResolution = reader.ReadByte(); | |||||
var videoRecordingResolution = (VideoRecordingResolutionType)value.VideoRecordingResolution; | |||||
writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); | |||||
value.AlarmEnable = reader.ReadUInt32(); | |||||
writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); | |||||
var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').AsSpan(); | |||||
writer.WriteStartObject("报警使能对象"); | |||||
writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30,2).ToString()); | |||||
writer.WriteString("[bit17~bit29]用户自定义", alarmEnableBits.Slice(17, 13).ToString()); | |||||
writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16]=='0'?"关闭":"打开"); | |||||
writer.WriteString("[bit12~bit15]道路标识超限报警", alarmEnableBits.Slice(12, 4).ToString()); | |||||
writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit8]行人碰撞一级报警", alarmEnableBits[8] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit7]前向碰撞二级报警", alarmEnableBits[7] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit6]前向碰撞一级报警", alarmEnableBits[6] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit5]车道偏离二级报警", alarmEnableBits[5] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit4]车道偏离一级报警", alarmEnableBits[4] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit3]频繁变道二级报警", alarmEnableBits[3] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit2]频繁变道一级报警", alarmEnableBits[2] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit1]障碍检测二级报警", alarmEnableBits[1] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit0]障碍检测一级报警", alarmEnableBits[0] == '0' ? "关闭" : "打开"); | |||||
writer.WriteEndObject(); | |||||
value.EventEnable = reader.ReadUInt32(); | |||||
writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); | |||||
var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').AsSpan(); | |||||
writer.WriteStartObject("事件使能对象"); | |||||
writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString()); | |||||
writer.WriteString("[bit2~bit29]用户自定义", alarmEnableBits.Slice(2, 28).ToString()); | |||||
writer.WriteString("[bit1]主动拍照", alarmEnableBits[1] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit0]道路标识识别", alarmEnableBits[0] == '0' ? "关闭" : "打开"); | |||||
writer.WriteEndObject(); | |||||
value.Placeholder1 = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.Placeholder1.ReadNumber()}]预留字段", value.Placeholder1); | |||||
value.DistanceThresholdObstacleAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.DistanceThresholdObstacleAlarm.ReadNumber()}]障碍物报警距离阈值", value.DistanceThresholdObstacleAlarm); | |||||
value.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.HierarchicalSpeedThresholdObstacleAlarm.ReadNumber()}]障碍物报警分级速度阈值", value.HierarchicalSpeedThresholdObstacleAlarm); | |||||
value.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterObstacleAlarm.ReadNumber()}]障碍物报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterObstacleAlarm); | |||||
value.BarrierAlarmPhotographs = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.BarrierAlarmPhotographs.ReadNumber()}]障碍物报警拍照张数", value.BarrierAlarmPhotographs); | |||||
value.ObstacleAlarmInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ObstacleAlarmInterval.ReadNumber()}]障碍物报警拍照间隔", value.ObstacleAlarmInterval); | |||||
value.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.FrequentChannelChangeAlarmJudgmentTimePeriod.ReadNumber()}]频繁变道报警判断时间段", value.FrequentChannelChangeAlarmJudgmentTimePeriod); | |||||
value.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.FrequentAlarmJudgmentNumberChannelChange.ReadNumber()}]频繁变道报警判断次数", value.FrequentAlarmJudgmentNumberChannelChange); | |||||
value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm.ReadNumber()}]频繁变道报警分级速度阈值", value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm); | |||||
value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm.ReadNumber()}]频繁变道报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm); | |||||
value.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.FrequentChannelChangeAlarmPhotos.ReadNumber()}]频繁变道报警拍照张数", value.FrequentChannelChangeAlarmPhotos); | |||||
value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.FrequentLaneChangeAlarmInterval.ReadNumber()}]频繁变道报警拍照间隔", value.FrequentLaneChangeAlarmInterval); | |||||
value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.GradedSpeedThresholdLaneDeviationAlarm.ReadNumber()}]车道偏离报警分级速度阈值", value.GradedSpeedThresholdLaneDeviationAlarm); | |||||
value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm.ReadNumber()}]车道偏离报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); | |||||
value.LaneDepartureAlarmPhoto = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.LaneDepartureAlarmPhoto.ReadNumber()}]车道偏离报警拍照张数", value.LaneDepartureAlarmPhoto); | |||||
value.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.LaneDepartureAlarmPhotoInterval.ReadNumber()}]车道偏离报警拍照间隔", value.LaneDepartureAlarmPhotoInterval); | |||||
value.ForwardCollisionWarningTimeThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ForwardCollisionWarningTimeThreshold.ReadNumber()}]前向碰撞报警时间阈值", value.ForwardCollisionWarningTimeThreshold); | |||||
value.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.HierarchicalSpeedThresholdForwardCollisionWarning.ReadNumber()}]前向碰撞报警分级速度阈值", value.HierarchicalSpeedThresholdForwardCollisionWarning); | |||||
value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm.ReadNumber()}]前向碰撞报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm); | |||||
value.ForwardCollisionAlarmPhotographs = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ForwardCollisionAlarmPhotographs.ReadNumber()}]前向碰撞报警拍照张数", value.ForwardCollisionAlarmPhotographs); | |||||
value.ForwardCollisionAlarmInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ForwardCollisionAlarmInterval.ReadNumber()}]前向碰撞报警拍照间隔", value.ForwardCollisionAlarmInterval); | |||||
value.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PedestrianCollisionAlarmTimeThreshold.ReadNumber()}]行人碰撞报警时间阈值", value.PedestrianCollisionAlarmTimeThreshold); | |||||
value.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PedestrianCollisionAlarmEnablingSpeedThreshold.ReadNumber()}]行人碰撞报警使能速度阈值", value.PedestrianCollisionAlarmEnablingSpeedThreshold); | |||||
value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm.ReadNumber()}]行人碰撞报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm); | |||||
value.PedestrianCollisionAlarmPhotos = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PedestrianCollisionAlarmPhotos.ReadNumber()}]行人碰撞报警拍照张数", value.PedestrianCollisionAlarmPhotos); | |||||
value.PedestrianCollisionAlarmInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PedestrianCollisionAlarmInterval.ReadNumber()}]行人碰撞报警拍照间隔", value.PedestrianCollisionAlarmInterval); | |||||
value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAlarmDistanceThreshold.ReadNumber()}]车距监控报警距离阈值", value.VehicleDistanceMonitoringAlarmDistanceThreshold); | |||||
value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold.ReadNumber()}]车距监控报警分级速度阈值", value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); | |||||
value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity.ReadNumber()}]车距过近报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity); | |||||
value.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AlarmPhotoVehicleCloseDistance.ReadNumber()}]车距过近报警拍照张数", value.AlarmPhotoVehicleCloseDistance); | |||||
value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AlarmPhotoVehicleCloseDistanceInterval.ReadNumber()}]车距过近报警拍照间隔", value.AlarmPhotoVehicleCloseDistanceInterval); | |||||
value.RoadSignRecognitionPhotographs = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.RoadSignRecognitionPhotographs.ReadNumber()}]道路标志识别拍照张数", value.RoadSignRecognitionPhotographs); | |||||
value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.RoadSignRecognitionPhotographsInterval.ReadNumber()}]道路标志识别拍照间隔", value.RoadSignRecognitionPhotographsInterval); | |||||
value.Placeholder2 = reader.ReadArray(4).ToArray(); | |||||
writer.WriteString("保留字段", value.Placeholder2.ToHexString()); | |||||
} | |||||
public JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF364 jT808_0X8103_0XF364 = new JT808_0x8103_0xF364(); | |||||
jT808_0X8103_0XF364.ParamId = reader.ReadUInt32(); | |||||
jT808_0X8103_0XF364.ParamLength = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.AlarmJudgeSpeedThreshold = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.WarningVolume = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.ActivePhotographyStrategy = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.ActivelyTimePhotoInterval = reader.ReadUInt16(); | |||||
jT808_0X8103_0XF364.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); | |||||
jT808_0X8103_0XF364.SingleInitiativePhotos = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.SingleInitiativePhotosInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.PhotoResolution = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VideoRecordingResolution = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.AlarmEnable = reader.ReadUInt32(); | |||||
jT808_0X8103_0XF364.EventEnable = reader.ReadUInt32(); | |||||
jT808_0X8103_0XF364.Placeholder1 = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.DistanceThresholdObstacleAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.BarrierAlarmPhotographs = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.ObstacleAlarmInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.LaneDepartureAlarmPhoto = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.ForwardCollisionWarningTimeThreshold = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.ForwardCollisionAlarmPhotographs = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.ForwardCollisionAlarmInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.PedestrianCollisionAlarmPhotos = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.PedestrianCollisionAlarmInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.RoadSignRecognitionPhotographs = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF364.Placeholder2 = reader.ReadArray(4).ToArray(); | |||||
return jT808_0X8103_0XF364; | |||||
JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364(); | |||||
value.ParamId = reader.ReadUInt32(); | |||||
value.ParamLength = reader.ReadByte(); | |||||
value.AlarmJudgeSpeedThreshold = reader.ReadByte(); | |||||
value.WarningVolume = reader.ReadByte(); | |||||
value.ActivePhotographyStrategy = reader.ReadByte(); | |||||
value.ActivelyTimePhotoInterval = reader.ReadUInt16(); | |||||
value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); | |||||
value.SingleInitiativePhotos = reader.ReadByte(); | |||||
value.SingleInitiativePhotosInterval = reader.ReadByte(); | |||||
value.PhotoResolution = reader.ReadByte(); | |||||
value.VideoRecordingResolution = reader.ReadByte(); | |||||
value.AlarmEnable = reader.ReadUInt32(); | |||||
value.EventEnable = reader.ReadUInt32(); | |||||
value.Placeholder1 = reader.ReadByte(); | |||||
value.DistanceThresholdObstacleAlarm = reader.ReadByte(); | |||||
value.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte(); | |||||
value.BarrierAlarmPhotographs = reader.ReadByte(); | |||||
value.ObstacleAlarmInterval = reader.ReadByte(); | |||||
value.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte(); | |||||
value.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte(); | |||||
value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); | |||||
value.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); | |||||
value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | |||||
value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | |||||
value.LaneDepartureAlarmPhoto = reader.ReadByte(); | |||||
value.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); | |||||
value.ForwardCollisionWarningTimeThreshold = reader.ReadByte(); | |||||
value.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte(); | |||||
value.ForwardCollisionAlarmPhotographs = reader.ReadByte(); | |||||
value.ForwardCollisionAlarmInterval = reader.ReadByte(); | |||||
value.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte(); | |||||
value.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte(); | |||||
value.PedestrianCollisionAlarmPhotos = reader.ReadByte(); | |||||
value.PedestrianCollisionAlarmInterval = reader.ReadByte(); | |||||
value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); | |||||
value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); | |||||
value.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); | |||||
value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); | |||||
value.RoadSignRecognitionPhotographs = reader.ReadByte(); | |||||
value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | |||||
value.Placeholder2 = reader.ReadArray(4).ToArray(); | |||||
return value; | |||||
} | } | ||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF364 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF364 value, IJT808Config config) | ||||
@@ -1,13 +1,17 @@ | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Extensions.JTActiveSafety.Enums; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | ||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 驾驶员状态监测系统参数 | /// 驾驶员状态监测系统参数 | ||||
/// </summary> | /// </summary> | ||||
public class JT808_0x8103_0xF365 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF365> | |||||
public class JT808_0x8103_0xF365 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0xF365>, IJT808Analyze | |||||
{ | { | ||||
public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365; | public override uint ParamId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X8103_0xF365; | ||||
public override byte ParamLength { get; set; } | public override byte ParamLength { get; set; } | ||||
@@ -148,46 +152,152 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte[] Retain { get; set; } = new byte[2]; | public byte[] Retain { get; set; } = new byte[2]; | ||||
public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config) | |||||
{ | |||||
JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); | |||||
value.ParamId = reader.ReadUInt32(); | |||||
value.ParamLength = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId); | |||||
writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength); | |||||
value.AlarmJudgeSpeedThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AlarmJudgeSpeedThreshold.ReadNumber()}]报警判断速度阈值", value.AlarmJudgeSpeedThreshold); | |||||
value.WarningVolume = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.WarningVolume.ReadNumber()}]报警提示音量", value.WarningVolume); | |||||
value.ActivePhotographyStrategy = reader.ReadByte(); | |||||
var activePhotographyStrategy = (ActivePhotographyStrategyType)ActivePhotographyStrategy; | |||||
writer.WriteNumber($"[{value.ActivePhotographyStrategy.ReadNumber()}]主动拍照策略-{activePhotographyStrategy.ToString()}", value.ActivePhotographyStrategy); | |||||
value.ActivelyTimePhotoInterval = reader.ReadUInt16(); | |||||
writer.WriteNumber($"[{value.ActivelyTimePhotoInterval.ReadNumber()}]主动定时拍照时间间隔", value.ActivelyTimePhotoInterval); | |||||
value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); | |||||
writer.WriteNumber($"[{value.ActiveDistancePhotographyDistanceInterval.ReadNumber()}]主动定距拍照距离间隔", value.ActiveDistancePhotographyDistanceInterval); | |||||
value.SingleInitiativePhotos = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SingleInitiativePhotos.ReadNumber()}]单次主动拍照张数", value.SingleInitiativePhotos); | |||||
value.SingleInitiativePhotosInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SingleInitiativePhotosInterval.ReadNumber()}]单次主动拍照时间间隔", value.SingleInitiativePhotosInterval); | |||||
value.PhotoResolution = reader.ReadByte(); | |||||
var photoResolutionType = (PhotoResolutionType)value.PhotoResolution; | |||||
writer.WriteNumber($"[{value.PhotoResolution.ReadNumber()}]拍照分辨率-{photoResolutionType.ToString()}", value.PhotoResolution); | |||||
value.VideoRecordingResolution = reader.ReadByte(); | |||||
var videoRecordingResolution = (VideoRecordingResolutionType)value.VideoRecordingResolution; | |||||
writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); | |||||
value.AlarmEnable = reader.ReadUInt32(); | |||||
writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); | |||||
var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').AsSpan(); | |||||
writer.WriteStartObject("报警使能对象"); | |||||
writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30, 2).ToString()); | |||||
writer.WriteString("[bit17~bit29]用户自定义", alarmEnableBits.Slice(17, 13).ToString()); | |||||
writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit12~bit15]道路标识超限报警", alarmEnableBits.Slice(12, 4).ToString()); | |||||
writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit8]行人碰撞一级报警", alarmEnableBits[8] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit7]前向碰撞二级报警", alarmEnableBits[7] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit6]前向碰撞一级报警", alarmEnableBits[6] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit5]车道偏离二级报警", alarmEnableBits[5] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit4]车道偏离一级报警", alarmEnableBits[4] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit3]频繁变道二级报警", alarmEnableBits[3] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit2]频繁变道一级报警", alarmEnableBits[2] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit1]障碍检测二级报警", alarmEnableBits[1] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit0]障碍检测一级报警", alarmEnableBits[0] == '0' ? "关闭" : "打开"); | |||||
writer.WriteEndObject(); | |||||
value.EventEnable = reader.ReadUInt32(); | |||||
writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); | |||||
var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').AsSpan(); | |||||
writer.WriteStartObject("事件使能对象"); | |||||
writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString()); | |||||
writer.WriteString("[bit2~bit29]用户自定义", alarmEnableBits.Slice(2, 28).ToString()); | |||||
writer.WriteString("[bit1]主动拍照", alarmEnableBits[1] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit0]道路标识识别", alarmEnableBits[0] == '0' ? "关闭" : "打开"); | |||||
writer.WriteEndObject(); | |||||
value.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); | |||||
writer.WriteNumber($"[{value.TimeIntervalSmokingAlarmJudgment.ReadNumber()}]吸烟报警判断时间间隔", value.TimeIntervalSmokingAlarmJudgment); | |||||
value.CallAlarmDetermineTimeInterval = reader.ReadUInt16(); | |||||
writer.WriteNumber($"[{value.CallAlarmDetermineTimeInterval.ReadNumber()}]接打电话报警判断时间间隔", value.CallAlarmDetermineTimeInterval); | |||||
value.Reserve = reader.ReadArray(3).ToArray(); | |||||
writer.WriteString("预留字段", value.Reserve.ToHexString()); | |||||
value.GradedSpeedThresholdFatigueDrivingAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.GradedSpeedThresholdFatigueDrivingAlarm.ReadNumber()}]疲劳驾驶报警分级速度阈值", value.GradedSpeedThresholdFatigueDrivingAlarm); | |||||
value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm.ReadNumber()}]疲劳驾驶报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm); | |||||
value.FatigueDrivingAlarmPhotograph = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.FatigueDrivingAlarmPhotograph.ReadNumber()}]疲劳驾驶报警拍照张数", value.FatigueDrivingAlarmPhotograph); | |||||
value.FatigueDrivingAlarmPhotographInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.FatigueDrivingAlarmPhotographInterval.ReadNumber()}]疲劳驾驶报警拍照间隔时间", value.FatigueDrivingAlarmPhotographInterval); | |||||
value.ClassifiedSpeedThresholdCallAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdCallAlarm.ReadNumber()}]接打电话报警分级速度阈值", value.ClassifiedSpeedThresholdCallAlarm); | |||||
value.VideoRecordingTimeBeforeAndAfterCallAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterCallAlarm.ReadNumber()}]接打电话报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterCallAlarm); | |||||
value.CallAlarmTakePicturesDriverFacialFeatures = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.CallAlarmTakePicturesDriverFacialFeatures.ReadNumber()}]接打电话报警拍驾驶员面部特征照片张数", value.CallAlarmTakePicturesDriverFacialFeatures); | |||||
value.CallAlarmTakePicturesDriverFacialFeaturesInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.CallAlarmTakePicturesDriverFacialFeaturesInterval.ReadNumber()}]接打电话报警拍驾驶员面部特征照片间隔时间", value.CallAlarmTakePicturesDriverFacialFeaturesInterval); | |||||
value.ClassifiedSpeedThresholdSmokingAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdSmokingAlarm.ReadNumber()}]抽烟报警分级车速阈值", value.ClassifiedSpeedThresholdSmokingAlarm); | |||||
value.VideoRecordingTimeBeforeAndAfterSmokingAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterSmokingAlarm.ReadNumber()}]抽烟报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterSmokingAlarm); | |||||
value.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SmokingAlarmPhotographsDriverFaceCharacteristics.ReadNumber()}]抽烟报警拍驾驶员面部特征照片张数", value.SmokingAlarmPhotographsDriverFaceCharacteristics); | |||||
value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval.ReadNumber()}]抽烟报警拍驾驶员面部特征照片间隔时间", value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); | |||||
value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdDistractedDrivingAlarm.ReadNumber()}]分神驾驶报警分级车速阈值", value.ClassifiedSpeedThresholdDistractedDrivingAlarm); | |||||
value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotography.ReadNumber()}]分神驾驶报警拍照张数", value.DistractedDrivingAlarmPhotography); | |||||
value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotographyInterval.ReadNumber()}]分神驾驶报警拍照间隔时间", value.DistractedDrivingAlarmPhotographyInterval); | |||||
value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常视频录制时间", value.VideoRecordingTimeAbnormalDrivingBehavior); | |||||
value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PhotographsAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常抓拍照片张数", value.PhotographsAbnormalDrivingBehavior); | |||||
value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PictureIntervalAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常拍照间隔", value.PictureIntervalAbnormalDrivingBehavior); | |||||
value.DriverIdentificationTrigger = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.DriverIdentificationTrigger.ReadNumber()}]驾驶员身份识别触发", value.DriverIdentificationTrigger); | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | |||||
writer.WriteString("保留字段", value.Retain.ToHexString()); | |||||
} | |||||
public JT808_0x8103_0xF365 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | public JT808_0x8103_0xF365 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | ||||
{ | { | ||||
JT808_0x8103_0xF365 jT808_0X8103_0XF365 = new JT808_0x8103_0xF365(); | |||||
jT808_0X8103_0XF365.ParamId = reader.ReadUInt32(); | |||||
jT808_0X8103_0XF365.ParamLength = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.AlarmJudgeSpeedThreshold = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.WarningVolume = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.ActivePhotographyStrategy = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.ActivelyTimePhotoInterval = reader.ReadUInt16(); | |||||
jT808_0X8103_0XF365.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); | |||||
jT808_0X8103_0XF365.SingleInitiativePhotos = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.SingleInitiativePhotosInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.PhotoResolution = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.VideoRecordingResolution = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.AlarmEnable = reader.ReadUInt32(); | |||||
jT808_0X8103_0XF365.EventEnable = reader.ReadUInt32(); | |||||
jT808_0X8103_0XF365.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); | |||||
jT808_0X8103_0XF365.CallAlarmDetermineTimeInterval = reader.ReadUInt16(); | |||||
jT808_0X8103_0XF365.Reserve = reader.ReadArray(3).ToArray(); | |||||
jT808_0X8103_0XF365.GradedSpeedThresholdFatigueDrivingAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.FatigueDrivingAlarmPhotograph = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.FatigueDrivingAlarmPhotographInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.ClassifiedSpeedThresholdCallAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterCallAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeatures = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.CallAlarmTakePicturesDriverFacialFeaturesInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.ClassifiedSpeedThresholdSmokingAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.DistractedDrivingAlarmPhotography = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.DriverIdentificationTrigger = reader.ReadByte(); | |||||
jT808_0X8103_0XF365.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | |||||
return jT808_0X8103_0XF365; | |||||
JT808_0x8103_0xF365 value = new JT808_0x8103_0xF365(); | |||||
value.ParamId = reader.ReadUInt32(); | |||||
value.ParamLength = reader.ReadByte(); | |||||
value.AlarmJudgeSpeedThreshold = reader.ReadByte(); | |||||
value.WarningVolume = reader.ReadByte(); | |||||
value.ActivePhotographyStrategy = reader.ReadByte(); | |||||
value.ActivelyTimePhotoInterval = reader.ReadUInt16(); | |||||
value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16(); | |||||
value.SingleInitiativePhotos = reader.ReadByte(); | |||||
value.SingleInitiativePhotosInterval = reader.ReadByte(); | |||||
value.PhotoResolution = reader.ReadByte(); | |||||
value.VideoRecordingResolution = reader.ReadByte(); | |||||
value.AlarmEnable = reader.ReadUInt32(); | |||||
value.EventEnable = reader.ReadUInt32(); | |||||
value.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); | |||||
value.CallAlarmDetermineTimeInterval = reader.ReadUInt16(); | |||||
value.Reserve = reader.ReadArray(3).ToArray(); | |||||
value.GradedSpeedThresholdFatigueDrivingAlarm = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm = reader.ReadByte(); | |||||
value.FatigueDrivingAlarmPhotograph = reader.ReadByte(); | |||||
value.FatigueDrivingAlarmPhotographInterval = reader.ReadByte(); | |||||
value.ClassifiedSpeedThresholdCallAlarm = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterCallAlarm = reader.ReadByte(); | |||||
value.CallAlarmTakePicturesDriverFacialFeatures = reader.ReadByte(); | |||||
value.CallAlarmTakePicturesDriverFacialFeaturesInterval = reader.ReadByte(); | |||||
value.ClassifiedSpeedThresholdSmokingAlarm = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterSmokingAlarm = reader.ReadByte(); | |||||
value.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); | |||||
value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); | |||||
value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | |||||
value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | |||||
value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | |||||
value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | |||||
value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | |||||
value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | |||||
value.DriverIdentificationTrigger = reader.ReadByte(); | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | |||||
return value; | |||||
} | } | ||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF365 value, IJT808Config config) | public void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF365 value, IJT808Config config) | ||||