@@ -1831,16 +1831,6 @@ | |||||
文件上传指令 | 文件上传指令 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.Description"> | |||||
<summary> | |||||
文件上传指令 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.MsgId"> | |||||
<summary> | |||||
0x9206 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.ServerIpLength"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.ServerIpLength"> | ||||
<summary> | <summary> | ||||
服务器IP地址服务 | 服务器IP地址服务 | ||||
@@ -1893,12 +1883,12 @@ | |||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.BeginTime"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.BeginTime"> | ||||
<summary> | <summary> | ||||
起始时间 | |||||
起始时间 BCD[6] | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.EndTime"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.EndTime"> | ||||
<summary> | <summary> | ||||
结束时间 | |||||
结束时间 BCD[6] | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.AlarmFlag"> | <member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.AlarmFlag"> | ||||
@@ -1926,30 +1916,6 @@ | |||||
任务执行条件 | 任务执行条件 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="M:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="reader"></param> | |||||
<param name="writer"></param> | |||||
<param name="config"></param> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.Deserialize(JT808.Protocol.MessagePack.JT808MessagePackReader@,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="reader"></param> | |||||
<param name="config"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.Serialize(JT808.Protocol.MessagePack.JT808MessagePackWriter@,JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="writer"></param> | |||||
<param name="value"></param> | |||||
<param name="config"></param> | |||||
</member> | |||||
<member name="T:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9207"> | <member name="T:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9207"> | ||||
<summary> | <summary> | ||||
文件上传控制 | 文件上传控制 | ||||
@@ -71,13 +71,13 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
VehicleState = 19 | VehicleState = 19 | ||||
}); | }); | ||||
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | ||||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106653000000010C1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506020400010003000500020900060008000A0007", hex); | |||||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106655000000010C1100070000000D0000000E1912111831000013343434343434340000000000000000000000000000000000000000000000191210183100030205060200040001000300050002000900060008000A0007", hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106653000000010C1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506020400010003000500020900060008000A0007".ToHexBytes()); | |||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106655000000010C1100070000000D0000000E1912111831000013343434343434340000000000000000000000000000000000000000000000191210183100030205060200040001000300050002000900060008000A0007".ToHexBytes()); | |||||
jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_YueBiao_Constants.JT808_0X0200_0x66, out var value); | jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_YueBiao_Constants.JT808_0X0200_0x66, out var value); | ||||
JT808_0x0200_0x66 jT808_0X0200_0X66 = value as JT808_0x0200_0x66; | JT808_0x0200_0x66 jT808_0X0200_0X66 = value as JT808_0x0200_0x66; | ||||
Assert.Equal(1u, jT808_0X0200_0X66.AlarmId); | Assert.Equal(1u, jT808_0X0200_0X66.AlarmId); | ||||
@@ -111,7 +111,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
[Fact] | [Fact] | ||||
public void Json() | public void Json() | ||||
{ | { | ||||
var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106653000000010C1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506020400010003000500020900060008000A0007".ToHexBytes()); | |||||
var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106655000000010C1100070000000D0000000E1912111831000013343434343434340000000000000000000000000000000000000000000000191210183100030205060200040001000300050002000900060008000A0007".ToHexBytes()); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -42,26 +42,25 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
SN = 3, | SN = 3, | ||||
TerminalId = "4444444", | TerminalId = "4444444", | ||||
Time = Convert.ToDateTime("2019-12-10 18:31:00"), | Time = Convert.ToDateTime("2019-12-10 18:31:00"), | ||||
Retain1=5, | |||||
Retain2=6 | |||||
Retain1=5, | |||||
Retain2=6 | |||||
}, | }, | ||||
AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"), | AlarmTime = Convert.ToDateTime("2019-12-11 18:31:00"), | ||||
Altitude = 7, | Altitude = 7, | ||||
AlarmLevel = 8, | |||||
AlarmOrEventType = 9, | AlarmOrEventType = 9, | ||||
FlagState = 12, | |||||
FlagState = 12, | |||||
Latitude = 13, | Latitude = 13, | ||||
Longitude = 14, | Longitude = 14, | ||||
Speed = 17, | Speed = 17, | ||||
VehicleState = 19 | VehicleState = 19 | ||||
}); | }); | ||||
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | ||||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106742000000010C09081100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506", hex); | |||||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506", hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106742000000010C09081100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes()); | |||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes()); | |||||
jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_YueBiao_Constants.JT808_0X0200_0x67, out var value); | jT808UploadLocationRequest.JT808LocationAttachData.TryGetValue(JT808_YueBiao_Constants.JT808_0X0200_0x67, out var value); | ||||
JT808_0x0200_0x67 jT808_0X0200_0X67 = value as JT808_0x0200_0x67; | JT808_0x0200_0x67 jT808_0X0200_0X67 = value as JT808_0x0200_0x67; | ||||
Assert.Equal(1u, jT808_0X0200_0X67.AlarmId); | Assert.Equal(1u, jT808_0X0200_0X67.AlarmId); | ||||
@@ -73,10 +72,9 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X67.AlarmIdentification.Time); | Assert.Equal(Convert.ToDateTime("2019-12-10 18:31:00"), jT808_0X0200_0X67.AlarmIdentification.Time); | ||||
Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X67.AlarmTime); | Assert.Equal(Convert.ToDateTime("2019-12-11 18:31:00"), jT808_0X0200_0X67.AlarmTime); | ||||
Assert.Equal(7, jT808_0X0200_0X67.Altitude); | Assert.Equal(7, jT808_0X0200_0X67.Altitude); | ||||
Assert.Equal(8, jT808_0X0200_0X67.AlarmLevel); | |||||
Assert.Equal(9, jT808_0X0200_0X67.AlarmOrEventType); | Assert.Equal(9, jT808_0X0200_0X67.AlarmOrEventType); | ||||
Assert.Equal(0x67, jT808_0X0200_0X67.AttachInfoId); | Assert.Equal(0x67, jT808_0X0200_0X67.AttachInfoId); | ||||
Assert.Equal(66, jT808_0X0200_0X67.AttachInfoLength); | |||||
Assert.Equal(65, jT808_0X0200_0X67.AttachInfoLength); | |||||
Assert.Equal(12, jT808_0X0200_0X67.FlagState); | Assert.Equal(12, jT808_0X0200_0X67.FlagState); | ||||
Assert.Equal(13, jT808_0X0200_0X67.Latitude); | Assert.Equal(13, jT808_0X0200_0X67.Latitude); | ||||
Assert.Equal(14, jT808_0X0200_0X67.Longitude); | Assert.Equal(14, jT808_0X0200_0X67.Longitude); | ||||
@@ -86,7 +84,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
[Fact] | [Fact] | ||||
public void Json() | public void Json() | ||||
{ | { | ||||
var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106742000000010C09081100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes()); | |||||
var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes()); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -43,7 +43,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
FrequentChannelChangeAlarmJudgmentTimePeriod=15, | FrequentChannelChangeAlarmJudgmentTimePeriod=15, | ||||
FrequentChannelChangeAlarmPhotos=16, | FrequentChannelChangeAlarmPhotos=16, | ||||
FrequentLaneChangeAlarmInterval=17, | FrequentLaneChangeAlarmInterval=17, | ||||
GradedSpeedThresholdLaneDeviationAlarm=18, | |||||
GradedSpeedThresholdLaneDepartureAlarm=18, | |||||
HierarchicalSpeedThresholdForwardCollisionWarning=19, | HierarchicalSpeedThresholdForwardCollisionWarning=19, | ||||
HierarchicalSpeedThresholdFrequentChannelChangeAlarm=20, | HierarchicalSpeedThresholdFrequentChannelChangeAlarm=20, | ||||
HierarchicalSpeedThresholdObstacleAlarm=21, | HierarchicalSpeedThresholdObstacleAlarm=21, | ||||
@@ -70,17 +70,27 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm=42, | VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm=42, | ||||
VideoRecordingTimeBeforeAndAfterObstacleAlarm=43, | VideoRecordingTimeBeforeAndAfterObstacleAlarm=43, | ||||
VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm=44, | VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm=44, | ||||
WarningVolume=45 | |||||
WarningVolume=45, | |||||
CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold=46, | |||||
VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm=47, | |||||
CarriageAislePassengerDetectionAlarmPhotographs=48, | |||||
CarriageAislePassengerDetectionAlarmPhotoInterval=49, | |||||
SolidLineChangeLanesAlarmClassificationSpeedThreshold=50, | |||||
VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm=51, | |||||
SolidLineChangeLanesAlarmPhotographs=52, | |||||
SolidLineChangeLanesAlarmPhotoInterval=53 | |||||
} | } | ||||
} | } | ||||
}; | }; | ||||
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | ||||
Assert.Equal("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304", hex); | |||||
Assert.Equal("010000F36440052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A24252706072021323334352E2F303101020304", hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x8103>("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304".ToHexBytes()); | |||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x8103>("010000F36440052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A24252706072021323334352E2F303101020304".ToHexBytes()); | |||||
JT808_0x8103_0xF364 jT808_0X8103_0XF364 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF364; | JT808_0x8103_0xF364 jT808_0X8103_0XF364 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF364; | ||||
Assert.Equal(1, jT808_0X8103_0XF364.ActiveDistancePhotographyDistanceInterval); | Assert.Equal(1, jT808_0X8103_0XF364.ActiveDistancePhotographyDistanceInterval); | ||||
Assert.Equal(2, jT808_0X8103_0XF364.ActivelyTimePhotoInterval); | Assert.Equal(2, jT808_0X8103_0XF364.ActivelyTimePhotoInterval); | ||||
@@ -99,7 +109,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
Assert.Equal(15, jT808_0X8103_0XF364.FrequentChannelChangeAlarmJudgmentTimePeriod); | Assert.Equal(15, jT808_0X8103_0XF364.FrequentChannelChangeAlarmJudgmentTimePeriod); | ||||
Assert.Equal(16, jT808_0X8103_0XF364.FrequentChannelChangeAlarmPhotos); | Assert.Equal(16, jT808_0X8103_0XF364.FrequentChannelChangeAlarmPhotos); | ||||
Assert.Equal(17, jT808_0X8103_0XF364.FrequentLaneChangeAlarmInterval); | Assert.Equal(17, jT808_0X8103_0XF364.FrequentLaneChangeAlarmInterval); | ||||
Assert.Equal(18, jT808_0X8103_0XF364.GradedSpeedThresholdLaneDeviationAlarm); | |||||
Assert.Equal(18, jT808_0X8103_0XF364.GradedSpeedThresholdLaneDepartureAlarm); | |||||
Assert.Equal(19, jT808_0X8103_0XF364.HierarchicalSpeedThresholdForwardCollisionWarning); | Assert.Equal(19, jT808_0X8103_0XF364.HierarchicalSpeedThresholdForwardCollisionWarning); | ||||
Assert.Equal(20, jT808_0X8103_0XF364.HierarchicalSpeedThresholdFrequentChannelChangeAlarm); | Assert.Equal(20, jT808_0X8103_0XF364.HierarchicalSpeedThresholdFrequentChannelChangeAlarm); | ||||
Assert.Equal(21, jT808_0X8103_0XF364.HierarchicalSpeedThresholdObstacleAlarm); | Assert.Equal(21, jT808_0X8103_0XF364.HierarchicalSpeedThresholdObstacleAlarm); | ||||
@@ -127,13 +137,23 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
Assert.Equal(43, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterObstacleAlarm); | Assert.Equal(43, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterObstacleAlarm); | ||||
Assert.Equal(44, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm); | Assert.Equal(44, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm); | ||||
Assert.Equal(45, jT808_0X8103_0XF364.WarningVolume); | Assert.Equal(45, jT808_0X8103_0XF364.WarningVolume); | ||||
Assert.Equal(46, jT808_0X8103_0XF364.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold); | |||||
Assert.Equal(47, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm); | |||||
Assert.Equal(48, jT808_0X8103_0XF364.CarriageAislePassengerDetectionAlarmPhotographs); | |||||
Assert.Equal(49, jT808_0X8103_0XF364.CarriageAislePassengerDetectionAlarmPhotoInterval); | |||||
Assert.Equal(50, jT808_0X8103_0XF364.SolidLineChangeLanesAlarmClassificationSpeedThreshold); | |||||
Assert.Equal(51, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm); | |||||
Assert.Equal(52, jT808_0X8103_0XF364.SolidLineChangeLanesAlarmPhotographs); | |||||
Assert.Equal(53, jT808_0X8103_0XF364.SolidLineChangeLanesAlarmPhotoInterval); | |||||
Assert.Equal(JT808_YueBiao_Constants.JT808_0X8103_0xF364, jT808_0X8103_0XF364.ParamId); | Assert.Equal(JT808_YueBiao_Constants.JT808_0X8103_0xF364, jT808_0X8103_0XF364.ParamId); | ||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Json() | public void Json() | ||||
{ | { | ||||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304".ToHexBytes()); | |||||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F36440052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A24252706072021323334352E2F303101020304".ToHexBytes()); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -49,6 +49,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
FatigueDrivingAlarmPhotograph=55, | FatigueDrivingAlarmPhotograph=55, | ||||
FatigueDrivingAlarmPhotographInterval=56, | FatigueDrivingAlarmPhotographInterval=56, | ||||
GradedSpeedThresholdFatigueDrivingAlarm=57, | GradedSpeedThresholdFatigueDrivingAlarm=57, | ||||
PhotographsAbnormalDrivingBehavior=58, | PhotographsAbnormalDrivingBehavior=58, | ||||
PictureIntervalAbnormalDrivingBehavior=59, | PictureIntervalAbnormalDrivingBehavior=59, | ||||
Reserve=new byte[]{1,2,3 }, | Reserve=new byte[]{1,2,3 }, | ||||
@@ -59,17 +60,42 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
VideoRecordingTimeAbnormalDrivingBehavior=63, | VideoRecordingTimeAbnormalDrivingBehavior=63, | ||||
VideoRecordingTimeBeforeAndAfterCallAlarm=64, | VideoRecordingTimeBeforeAndAfterCallAlarm=64, | ||||
VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm=65, | VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm=65, | ||||
VideoRecordingTimeBeforeAndAfterSmokingAlarm=66 | |||||
VideoRecordingTimeBeforeAndAfterSmokingAlarm=66, | |||||
ClassifiedSpeedThresholdCameraOcclusion=68, | |||||
ClassifiedSpeedThresholdDoubleHanderOff=69, | |||||
VideoRecordingTimeDoubleHanderOff=70, | |||||
PhotographsDoubleHanderOff=71, | |||||
PictureIntervalDoubleHanderOff=72, | |||||
ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure=73, | |||||
VideoRecordingTimeInfraredSunglassesBlockingFailure=74, | |||||
PhotographsInfraredSunglassesBlockingFailure=75, | |||||
PictureIntervalInfraredSunglassesBlockingFailure=76, | |||||
ClassifiedSpeedThresholdNotBuckleUp=77, | |||||
VideoRecordingTimeNotBuckleUp=78, | |||||
PhotographsNotBuckleUp=79, | |||||
PictureIntervalNotBuckleUp=80, | |||||
ClassifiedSpeedThresholdPlayMobile=81, | |||||
VideoRecordingTimePlayMobile=82, | |||||
PhotographsPlayMobile=83, | |||||
PictureIntervalPlayMobile=84, | |||||
ClassifiedSpeedThresholdAbnormalDrivingBehavior=67, | |||||
VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm=85 | |||||
} | } | ||||
} | } | ||||
}; | }; | ||||
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | ||||
Assert.Equal("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506", hex); | |||||
Assert.Equal("010000F36542052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D32553435433F3A3B36444D4E4F50494A4B4C45464748515253540506", hex); | |||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Deserialize() | public void Deserialize() | ||||
{ | { | ||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x8103>("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes()); | |||||
var jT808UploadLocationRequest = JT808Serializer.Deserialize<JT808_0x8103>("010000F36542052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D32553435433F3A3B36444D4E4F50494A4B4C45464748515253540506".ToHexBytes()); | |||||
JT808_0x8103_0xF365 jT808_0X8103_0XF365 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF365; | JT808_0x8103_0xF365 jT808_0X8103_0XF365 = jT808UploadLocationRequest.ParamList[0] as JT808_0x8103_0xF365; | ||||
Assert.Equal(1, jT808_0X8103_0XF365.ActiveDistancePhotographyDistanceInterval); | Assert.Equal(1, jT808_0X8103_0XF365.ActiveDistancePhotographyDistanceInterval); | ||||
Assert.Equal(2, jT808_0X8103_0XF365.ActivelyTimePhotoInterval); | Assert.Equal(2, jT808_0X8103_0XF365.ActivelyTimePhotoInterval); | ||||
@@ -105,12 +131,37 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||||
Assert.Equal(64, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterCallAlarm); | Assert.Equal(64, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterCallAlarm); | ||||
Assert.Equal(65, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm); | Assert.Equal(65, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm); | ||||
Assert.Equal(66, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm); | Assert.Equal(66, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterSmokingAlarm); | ||||
Assert.Equal(67, jT808_0X8103_0XF365.ClassifiedSpeedThresholdAbnormalDrivingBehavior); | |||||
Assert.Equal(68, jT808_0X8103_0XF365.ClassifiedSpeedThresholdCameraOcclusion); | |||||
Assert.Equal(85, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm); | |||||
Assert.Equal(69, jT808_0X8103_0XF365.ClassifiedSpeedThresholdDoubleHanderOff); | |||||
Assert.Equal(70, jT808_0X8103_0XF365.VideoRecordingTimeDoubleHanderOff); | |||||
Assert.Equal(71, jT808_0X8103_0XF365.PhotographsDoubleHanderOff); | |||||
Assert.Equal(72, jT808_0X8103_0XF365.PictureIntervalDoubleHanderOff); | |||||
Assert.Equal(73, jT808_0X8103_0XF365.ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure); | |||||
Assert.Equal(74, jT808_0X8103_0XF365.VideoRecordingTimeInfraredSunglassesBlockingFailure); | |||||
Assert.Equal(75, jT808_0X8103_0XF365.PhotographsInfraredSunglassesBlockingFailure); | |||||
Assert.Equal(76, jT808_0X8103_0XF365.PictureIntervalInfraredSunglassesBlockingFailure); | |||||
Assert.Equal(77, jT808_0X8103_0XF365.ClassifiedSpeedThresholdNotBuckleUp); | |||||
Assert.Equal(78, jT808_0X8103_0XF365.VideoRecordingTimeNotBuckleUp); | |||||
Assert.Equal(79, jT808_0X8103_0XF365.PhotographsNotBuckleUp); | |||||
Assert.Equal(80, jT808_0X8103_0XF365.PictureIntervalNotBuckleUp); | |||||
Assert.Equal(81, jT808_0X8103_0XF365.ClassifiedSpeedThresholdPlayMobile); | |||||
Assert.Equal(82, jT808_0X8103_0XF365.VideoRecordingTimePlayMobile); | |||||
Assert.Equal(83, jT808_0X8103_0XF365.PhotographsPlayMobile); | |||||
Assert.Equal(84, jT808_0X8103_0XF365.PictureIntervalPlayMobile); | |||||
Assert.Equal(JT808_YueBiao_Constants.JT808_0X8103_0xF365, jT808_0X8103_0XF365.ParamId); | Assert.Equal(JT808_YueBiao_Constants.JT808_0X8103_0xF365, jT808_0X8103_0XF365.ParamId); | ||||
} | } | ||||
[Fact] | [Fact] | ||||
public void Json() | public void Json() | ||||
{ | { | ||||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes()); | |||||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F36542052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D32553435433F3A3B36444D4E4F50494A4B4C45464748515253540506".ToHexBytes()); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -307,6 +307,16 @@ | |||||
附加信息ID 盲区监测系统报警信息 | 附加信息ID 盲区监测系统报警信息 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="F:JT808.Protocol.Extensions.YueBiao.JT808_YueBiao_Constants.JT808_0X0200_0xF1"> | |||||
<summary> | |||||
附加信息ID 安装信息异常 | |||||
</summary> | |||||
</member> | |||||
<member name="F:JT808.Protocol.Extensions.YueBiao.JT808_YueBiao_Constants.JT808_0X0200_0xF2"> | |||||
<summary> | |||||
附加信息ID 算法异常信息 | |||||
</summary> | |||||
</member> | |||||
<member name="F:JT808.Protocol.Extensions.YueBiao.JT808_YueBiao_Constants.JT808_0X8103_0xF364"> | <member name="F:JT808.Protocol.Extensions.YueBiao.JT808_YueBiao_Constants.JT808_0X8103_0xF364"> | ||||
<summary> | <summary> | ||||
高级驾驶辅助系统参数设置 | 高级驾驶辅助系统参数设置 | ||||
@@ -400,7 +410,7 @@ | |||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x64.RoadSignIdentificationData"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x64.RoadSignIdentificationData"> | ||||
<summary> | <summary> | ||||
道路标志识别类型 | |||||
道路标志识别数据 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x64.Speed"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x64.Speed"> | ||||
@@ -696,11 +706,6 @@ | |||||
报警/事件类型 | 报警/事件类型 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x67.AlarmLevel"> | |||||
<summary> | |||||
报警/事件类型 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x67.Speed"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x67.Speed"> | ||||
<summary> | <summary> | ||||
车速 | 车速 | ||||
@@ -762,6 +767,94 @@ | |||||
<param name="value"></param> | <param name="value"></param> | ||||
<param name="config"></param> | <param name="config"></param> | ||||
</member> | </member> | ||||
<member name="T:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1"> | |||||
<summary> | |||||
安装异常信息 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1.AttachInfoId"> | |||||
<summary> | |||||
安装异常信息附件ID | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1.AttachInfoLength"> | |||||
<summary> | |||||
算法异常信息长度 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1.Retain"> | |||||
<summary> | |||||
厂家自定义 | |||||
</summary> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="reader"></param> | |||||
<param name="writer"></param> | |||||
<param name="config"></param> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1.Deserialize(JT808.Protocol.MessagePack.JT808MessagePackReader@,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="reader"></param> | |||||
<param name="config"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1.Serialize(JT808.Protocol.MessagePack.JT808MessagePackWriter@,JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF1,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="writer"></param> | |||||
<param name="value"></param> | |||||
<param name="config"></param> | |||||
</member> | |||||
<member name="T:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2"> | |||||
<summary> | |||||
算法异常信息 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2.AttachInfoId"> | |||||
<summary> | |||||
算法异常信息附件ID | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2.AttachInfoLength"> | |||||
<summary> | |||||
算法异常信息长度 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2.Retain"> | |||||
<summary> | |||||
厂家自定义 | |||||
</summary> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2.Analyze(JT808.Protocol.MessagePack.JT808MessagePackReader@,System.Text.Json.Utf8JsonWriter,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="reader"></param> | |||||
<param name="writer"></param> | |||||
<param name="config"></param> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2.Deserialize(JT808.Protocol.MessagePack.JT808MessagePackReader@,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="reader"></param> | |||||
<param name="config"></param> | |||||
<returns></returns> | |||||
</member> | |||||
<member name="M:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2.Serialize(JT808.Protocol.MessagePack.JT808MessagePackWriter@,JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0xF2,JT808.Protocol.IJT808Config)"> | |||||
<summary> | |||||
</summary> | |||||
<param name="writer"></param> | |||||
<param name="value"></param> | |||||
<param name="config"></param> | |||||
</member> | |||||
<member name="T:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0900_0xF7"> | <member name="T:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0900_0xF7"> | ||||
<summary> | <summary> | ||||
透传数据 | 透传数据 | ||||
@@ -1241,7 +1334,7 @@ | |||||
频繁变道报警拍照间隔 | 频繁变道报警拍照间隔 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.GradedSpeedThresholdLaneDeviationAlarm"> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.GradedSpeedThresholdLaneDepartureAlarm"> | |||||
<summary> | <summary> | ||||
车道偏离报警分级速度阈值 | 车道偏离报警分级速度阈值 | ||||
</summary> | </summary> | ||||
@@ -1313,12 +1406,12 @@ | |||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VehicleDistanceMonitoringAlarmDistanceThreshold"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VehicleDistanceMonitoringAlarmDistanceThreshold"> | ||||
<summary> | <summary> | ||||
车距监控报警距离阈值 | |||||
车距过近报警距离阈值 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold"> | ||||
<summary> | <summary> | ||||
车距监控报警分级速度阈值 | |||||
车距过近报警分级速度阈值 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity"> | ||||
@@ -1346,6 +1439,46 @@ | |||||
道路标志识别拍照间隔 | 道路标志识别拍照间隔 | ||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.SolidLineChangeLanesAlarmClassificationSpeedThreshold"> | |||||
<summary> | |||||
实线变道报警分级速度阈值 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm"> | |||||
<summary> | |||||
实线变道报警前后视频录制时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.SolidLineChangeLanesAlarmPhotographs"> | |||||
<summary> | |||||
实线变道报警拍照张数 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.SolidLineChangeLanesAlarmPhotoInterval"> | |||||
<summary> | |||||
实线变道报警拍照间隔 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold"> | |||||
<summary> | |||||
车厢过道行人检测报警分级速度阈值 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm"> | |||||
<summary> | |||||
车厢过道行人检测报警前后视频录制时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.CarriageAislePassengerDetectionAlarmPhotographs"> | |||||
<summary> | |||||
车厢过道行人检测报警拍照张数 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.CarriageAislePassengerDetectionAlarmPhotoInterval"> | |||||
<summary> | |||||
车厢过道行人检测报警拍照间隔 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.Placeholder2"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.Placeholder2"> | ||||
<summary> | <summary> | ||||
保留字段 | 保留字段 | ||||
@@ -1522,17 +1655,27 @@ | |||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdDistractedDrivingAlarm"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdDistractedDrivingAlarm"> | ||||
<summary> | <summary> | ||||
分神驾驶报警分级车速阈值 | |||||
不目视前方报警分级车速阈值 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm"> | |||||
<summary> | |||||
不目视前方报警前后视频录制时间 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DistractedDrivingAlarmPhotography"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DistractedDrivingAlarmPhotography"> | ||||
<summary> | <summary> | ||||
分神驾驶报警拍照张数 | |||||
不目视前方报警拍照张数 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DistractedDrivingAlarmPhotographyInterval"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DistractedDrivingAlarmPhotographyInterval"> | ||||
<summary> | <summary> | ||||
分神驾驶报警拍照间隔时间 | |||||
不目视前方报警拍照间隔时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdAbnormalDrivingBehavior"> | |||||
<summary> | |||||
驾驶行为异常分级车速阈值 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeAbnormalDrivingBehavior"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeAbnormalDrivingBehavior"> | ||||
@@ -1552,9 +1695,86 @@ | |||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DriverIdentificationTrigger"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DriverIdentificationTrigger"> | ||||
<summary> | <summary> | ||||
驾驶员身份识别触发 | |||||
驾驶员身份识别触发方式 | |||||
</summary> | </summary> | ||||
</member> | </member> | ||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdCameraOcclusion"> | |||||
<summary> | |||||
摄像机遮挡报警分级车速阈值 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdNotBuckleUp"> | |||||
<summary> | |||||
不系安全带报警分级车速阈值 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeNotBuckleUp"> | |||||
<summary> | |||||
不系安全带报警前后视频录制时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PhotographsNotBuckleUp"> | |||||
<summary> | |||||
不系安全带报警抓拍照片张数 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PictureIntervalNotBuckleUp"> | |||||
<summary> | |||||
不系安全带报警拍照间隔 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure"> | |||||
<summary> | |||||
红外墨镜阻断失效报警分级车速阈值 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeInfraredSunglassesBlockingFailure"> | |||||
<summary> | |||||
红外墨镜阻断失效报警前后视频录制时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PhotographsInfraredSunglassesBlockingFailure"> | |||||
<summary> | |||||
红外墨镜阻断失效报警抓拍照片张数 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PictureIntervalInfraredSunglassesBlockingFailure"> | |||||
<summary> | |||||
红外墨镜阻断失效报警拍照间隔 | |||||
</summary> | |||||
</member> | |||||
<!-- Badly formed XML comment ignored for member "P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdDoubleHanderOff" --> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeDoubleHanderOff"> | |||||
<summary> | |||||
双脱把报警前后视频录制时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PhotographsDoubleHanderOff"> | |||||
<summary> | |||||
双脱把报警抓拍照片张数 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PictureIntervalDoubleHanderOff"> | |||||
<summary> | |||||
双脱把报警拍照间隔 | |||||
</summary> | |||||
</member> | |||||
<!-- Badly formed XML comment ignored for member "P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdPlayMobile" --> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimePlayMobile"> | |||||
<summary> | |||||
玩手机报警前后视频录制时间 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PhotographsPlayMobile"> | |||||
<summary> | |||||
玩手机报警抓拍照片张数 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.PictureIntervalPlayMobile"> | |||||
<summary> | |||||
玩手机报警拍照间隔 | |||||
</summary> | |||||
</member> | |||||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.Retain"> | <member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.Retain"> | ||||
<summary> | <summary> | ||||
保留字段 | 保留字段 | ||||
@@ -26,6 +26,14 @@ namespace JT808.Protocol.Extensions.YueBiao | |||||
/// </summary> | /// </summary> | ||||
public const byte JT808_0X0200_0x67 = 0x67; | public const byte JT808_0X0200_0x67 = 0x67; | ||||
/// <summary> | /// <summary> | ||||
/// 附加信息ID 安装信息异常 | |||||
/// </summary> | |||||
public const byte JT808_0X0200_0xF1 = 0xF1; | |||||
/// <summary> | |||||
/// 附加信息ID 算法异常信息 | |||||
/// </summary> | |||||
public const byte JT808_0X0200_0xF2 = 0xF2; | |||||
/// <summary> | |||||
/// 高级驾驶辅助系统参数设置 | /// 高级驾驶辅助系统参数设置 | ||||
/// </summary> | /// </summary> | ||||
public const uint JT808_0X8103_0xF364 = 0xF364; | public const uint JT808_0X8103_0xF364 = 0xF364; | ||||
@@ -56,7 +56,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte RoadSignIdentificationType { get; set; } | public byte RoadSignIdentificationType { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 道路标志识别类型 | |||||
/// 道路标志识别数据 | |||||
/// </summary> | /// </summary> | ||||
public byte RoadSignIdentificationData { get; set; } | public byte RoadSignIdentificationData { get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -227,6 +227,14 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
{ | { | ||||
roadSignIdentificationType = "限重标志"; | roadSignIdentificationType = "限重标志"; | ||||
} | } | ||||
else if (value.RoadSignIdentificationType == 0x04) | |||||
{ | |||||
roadSignIdentificationType = "禁行标志"; | |||||
} | |||||
else if (value.RoadSignIdentificationType == 0x05) | |||||
{ | |||||
roadSignIdentificationType = "禁停标志"; | |||||
} | |||||
writer.WriteNumber($"[{value.RoadSignIdentificationType.ReadNumber()}]道路标志识别类型-{roadSignIdentificationType}-{roadSignIdentificationTypeString}", value.RoadSignIdentificationType); | writer.WriteNumber($"[{value.RoadSignIdentificationType.ReadNumber()}]道路标志识别类型-{roadSignIdentificationType}-{roadSignIdentificationTypeString}", value.RoadSignIdentificationType); | ||||
value.RoadSignIdentificationData = reader.ReadByte(); | value.RoadSignIdentificationData = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.RoadSignIdentificationData.ReadNumber()}]道路标志识别数据", value.RoadSignIdentificationData); | writer.WriteNumber($"[{value.RoadSignIdentificationData.ReadNumber()}]道路标志识别数据", value.RoadSignIdentificationData); | ||||
@@ -138,12 +138,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
value.AlarmIdentification.AttachCount = reader.ReadByte(); | value.AlarmIdentification.AttachCount = reader.ReadByte(); | ||||
value.AlarmIdentification.Retain1 = reader.ReadByte(); | value.AlarmIdentification.Retain1 = reader.ReadByte(); | ||||
value.AlarmIdentification.Retain2 = reader.ReadByte(); | value.AlarmIdentification.Retain2 = 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.Retain1.ReadNumber()}]预留1", value.AlarmIdentification.Retain1); | |||||
writer.WriteNumber($"[{value.AlarmIdentification.Retain2.ReadNumber()}]预留2", value.AlarmIdentification.Retain2); | |||||
value.AlarmOrEventCount = reader.ReadByte(); | value.AlarmOrEventCount = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.AlarmOrEventCount.ReadNumber()}]报警_事件列表总数", value.AlarmOrEventCount); | writer.WriteNumber($"[{value.AlarmOrEventCount.ReadNumber()}]报警_事件列表总数", value.AlarmOrEventCount); | ||||
if (value.AlarmOrEventCount > 0) | if (value.AlarmOrEventCount > 0) | ||||
@@ -153,67 +147,29 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
{ | { | ||||
writer.WriteStartObject(); | writer.WriteStartObject(); | ||||
AlarmOrEventProperty item = new AlarmOrEventProperty(); | AlarmOrEventProperty item = new AlarmOrEventProperty(); | ||||
item.TirePressureAlarmPosition = reader.ReadByte(); | |||||
item.TirePressureAlarmPosition = reader.ReadUInt16(); | |||||
writer.WriteNumber($"[{item.TirePressureAlarmPosition.ReadNumber()}]胎压报警位置", item.TirePressureAlarmPosition); | writer.WriteNumber($"[{item.TirePressureAlarmPosition.ReadNumber()}]胎压报警位置", item.TirePressureAlarmPosition); | ||||
item.AlarmOrEventType = reader.ReadUInt16(); | item.AlarmOrEventType = reader.ReadUInt16(); | ||||
string alarmOrEventTypeString = ""; | |||||
switch (item.AlarmOrEventType) | |||||
{ | |||||
case 0x01: | |||||
alarmOrEventTypeString = "前向碰撞报警"; | |||||
break; | |||||
case 0x02: | |||||
alarmOrEventTypeString = "车道偏离报警"; | |||||
break; | |||||
case 0x03: | |||||
alarmOrEventTypeString = "车距过近报警"; | |||||
break; | |||||
case 0x04: | |||||
alarmOrEventTypeString = "行人碰撞报警"; | |||||
break; | |||||
case 0x05: | |||||
alarmOrEventTypeString = "频繁变道报警"; | |||||
break; | |||||
case 0x06: | |||||
alarmOrEventTypeString = "道路标识超限报警"; | |||||
break; | |||||
case 0x07: | |||||
alarmOrEventTypeString = "障碍物报警"; | |||||
break; | |||||
case 0x08: | |||||
case 0x09: | |||||
case 0x0A: | |||||
case 0x0B: | |||||
case 0x0C: | |||||
case 0x0D: | |||||
case 0x0E: | |||||
case 0x0F: | |||||
alarmOrEventTypeString = "用户自定义"; | |||||
break; | |||||
case 0x10: | |||||
alarmOrEventTypeString = "道路标志识别事件"; | |||||
break; | |||||
case 0x11: | |||||
alarmOrEventTypeString = "主动抓拍事件"; | |||||
break; | |||||
case 0x12: | |||||
case 0x13: | |||||
case 0x14: | |||||
case 0x15: | |||||
case 0x16: | |||||
case 0x17: | |||||
case 0x18: | |||||
case 0x19: | |||||
case 0x1A: | |||||
case 0x1B: | |||||
case 0x1C: | |||||
case 0x1D: | |||||
case 0x1E: | |||||
case 0x1F: | |||||
alarmOrEventTypeString = "用户自定义"; | |||||
break; | |||||
} | |||||
writer.WriteNumber($"[{item.AlarmOrEventType.ReadNumber()}]报警_事件类型-{alarmOrEventTypeString}", item.AlarmOrEventType); | |||||
writer.WriteNumber($"[{item.AlarmOrEventType.ReadNumber()}]事件/报警类型", item.AlarmOrEventType); | |||||
var AlarmOrEventTypeBits = Convert.ToString(item.AlarmOrEventType, 2).PadLeft(16, '0'); | |||||
writer.WriteStartObject($"事件/报警类型[{AlarmOrEventTypeBits}]"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[15]}]Bit0胎压(定时上报)", AlarmOrEventTypeBits[15] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[14]}]Bit1胎压过高报警", AlarmOrEventTypeBits[14] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[13]}]Bit2胎压过低报警", AlarmOrEventTypeBits[13] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[12]}]Bit3胎温过高报警", AlarmOrEventTypeBits[12] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[11]}]Bit4传感器异常报警", AlarmOrEventTypeBits[11] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[10]}]Bit5胎压不平衡报警", AlarmOrEventTypeBits[10] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[9]}]Bit6慢漏气报警", AlarmOrEventTypeBits[9] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[8]}]Bit7电池电量低报警", AlarmOrEventTypeBits[8] == '0' ? "无报警" : "有报警"); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[7]}]Bit8自定义", AlarmOrEventTypeBits[7].ToString()); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[6]}]Bit9自定义", AlarmOrEventTypeBits[6].ToString()); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[5]}]Bit10自定义", AlarmOrEventTypeBits[5].ToString()); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[4]}]Bit11自定义", AlarmOrEventTypeBits[4].ToString()); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[3]}]Bit12自定义", AlarmOrEventTypeBits[3].ToString()); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[2]}]Bit13自定义", AlarmOrEventTypeBits[2].ToString()); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[1]}]Bit14自定义", AlarmOrEventTypeBits[1].ToString()); | |||||
writer.WriteString($"[{AlarmOrEventTypeBits[0]}]Bit15自定义", AlarmOrEventTypeBits[0].ToString()); | |||||
writer.WriteEndObject(); | |||||
item.TirePressure = reader.ReadUInt16(); | item.TirePressure = reader.ReadUInt16(); | ||||
writer.WriteNumber($"[{item.TirePressure.ReadNumber()}]胎压Kpa", item.TirePressure); | writer.WriteNumber($"[{item.TirePressure.ReadNumber()}]胎压Kpa", item.TirePressure); | ||||
item.TireTemperature = reader.ReadUInt16(); | item.TireTemperature = reader.ReadUInt16(); | ||||
@@ -260,7 +216,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
for (int i = 0; i < value.AlarmOrEventCount; i++) | for (int i = 0; i < value.AlarmOrEventCount; i++) | ||||
{ | { | ||||
AlarmOrEventProperty alarmOrEventProperty = new AlarmOrEventProperty(); | AlarmOrEventProperty alarmOrEventProperty = new AlarmOrEventProperty(); | ||||
alarmOrEventProperty.TirePressureAlarmPosition = reader.ReadByte(); | |||||
alarmOrEventProperty.TirePressureAlarmPosition = reader.ReadUInt16(); | |||||
alarmOrEventProperty.AlarmOrEventType = reader.ReadUInt16(); | alarmOrEventProperty.AlarmOrEventType = reader.ReadUInt16(); | ||||
alarmOrEventProperty.TirePressure = reader.ReadUInt16(); | alarmOrEventProperty.TirePressure = reader.ReadUInt16(); | ||||
alarmOrEventProperty.TireTemperature = reader.ReadUInt16(); | alarmOrEventProperty.TireTemperature = reader.ReadUInt16(); | ||||
@@ -303,7 +259,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteByte((byte)value.AlarmOrEvents.Count); | writer.WriteByte((byte)value.AlarmOrEvents.Count); | ||||
foreach (var item in value.AlarmOrEvents) | foreach (var item in value.AlarmOrEvents) | ||||
{ | { | ||||
writer.WriteByte(item.TirePressureAlarmPosition); | |||||
writer.WriteUInt16(item.TirePressureAlarmPosition); | |||||
writer.WriteUInt16(item.AlarmOrEventType); | writer.WriteUInt16(item.AlarmOrEventType); | ||||
writer.WriteUInt16(item.TirePressure); | writer.WriteUInt16(item.TirePressure); | ||||
writer.WriteUInt16(item.TireTemperature); | writer.WriteUInt16(item.TireTemperature); | ||||
@@ -36,10 +36,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte AlarmOrEventType{ get; set; } | public byte AlarmOrEventType{ get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 报警/事件类型 | |||||
/// </summary> | |||||
public byte AlarmLevel { get; set; } | |||||
/// <summary> | |||||
/// 车速 | /// 车速 | ||||
/// </summary> | /// </summary> | ||||
public byte Speed { get; set; } | public byte Speed { get; set; } | ||||
@@ -104,72 +100,16 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
switch (value.AlarmOrEventType) | switch (value.AlarmOrEventType) | ||||
{ | { | ||||
case 0x01: | case 0x01: | ||||
alarmOrEventTypeString = "前向碰撞报警"; | |||||
alarmOrEventTypeString = "后方接近报警"; | |||||
break; | break; | ||||
case 0x02: | case 0x02: | ||||
alarmOrEventTypeString = "车道偏离报警"; | |||||
alarmOrEventTypeString = "左侧后方接近报警"; | |||||
break; | break; | ||||
case 0x03: | case 0x03: | ||||
alarmOrEventTypeString = "车距过近报警"; | |||||
break; | |||||
case 0x04: | |||||
alarmOrEventTypeString = "行人碰撞报警"; | |||||
break; | |||||
case 0x05: | |||||
alarmOrEventTypeString = "频繁变道报警"; | |||||
break; | |||||
case 0x06: | |||||
alarmOrEventTypeString = "道路标识超限报警"; | |||||
break; | |||||
case 0x07: | |||||
alarmOrEventTypeString = "障碍物报警"; | |||||
break; | |||||
case 0x08: | |||||
case 0x09: | |||||
case 0x0A: | |||||
case 0x0B: | |||||
case 0x0C: | |||||
case 0x0D: | |||||
case 0x0E: | |||||
case 0x0F: | |||||
alarmOrEventTypeString = "用户自定义"; | |||||
break; | |||||
case 0x10: | |||||
alarmOrEventTypeString = "道路标志识别事件"; | |||||
break; | |||||
case 0x11: | |||||
alarmOrEventTypeString = "主动抓拍事件"; | |||||
break; | |||||
case 0x12: | |||||
case 0x13: | |||||
case 0x14: | |||||
case 0x15: | |||||
case 0x16: | |||||
case 0x17: | |||||
case 0x18: | |||||
case 0x19: | |||||
case 0x1A: | |||||
case 0x1B: | |||||
case 0x1C: | |||||
case 0x1D: | |||||
case 0x1E: | |||||
case 0x1F: | |||||
alarmOrEventTypeString = "用户自定义"; | |||||
break; | |||||
} | |||||
writer.WriteNumber($"[{value.AlarmOrEventType.ReadNumber()}]报警_事件类型-{alarmOrEventTypeString}", value.AlarmOrEventType); | |||||
value.AlarmLevel = reader.ReadByte(); | |||||
string alarmLevelString = "未知"; | |||||
switch (value.AlarmLevel) | |||||
{ | |||||
case 0x01: | |||||
alarmLevelString = "一级报警"; | |||||
break; | |||||
case 0x02: | |||||
alarmLevelString = "二级报警"; | |||||
alarmOrEventTypeString = "右侧后方接近报警"; | |||||
break; | break; | ||||
} | } | ||||
writer.WriteNumber($"[{value.AlarmLevel.ReadNumber()}]报警级别-{alarmLevelString}", value.AlarmLevel); | |||||
writer.WriteString($"[{value.AlarmOrEventType.ReadNumber()}]报警_事件类型", alarmOrEventTypeString); | |||||
value.Speed = reader.ReadByte(); | value.Speed = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); | writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); | ||||
value.Altitude = reader.ReadUInt16(); | value.Altitude = reader.ReadUInt16(); | ||||
@@ -230,7 +170,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
value.AlarmId = reader.ReadUInt32(); | value.AlarmId = reader.ReadUInt32(); | ||||
value.FlagState = reader.ReadByte(); | value.FlagState = reader.ReadByte(); | ||||
value.AlarmOrEventType = reader.ReadByte(); | value.AlarmOrEventType = reader.ReadByte(); | ||||
value.AlarmLevel = reader.ReadByte(); | |||||
value.Speed = reader.ReadByte(); | value.Speed = reader.ReadByte(); | ||||
value.Altitude = reader.ReadUInt16(); | value.Altitude = reader.ReadUInt16(); | ||||
value.Latitude = (int)reader.ReadUInt32(); | value.Latitude = (int)reader.ReadUInt32(); | ||||
@@ -261,7 +200,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteUInt32(value.AlarmId); | writer.WriteUInt32(value.AlarmId); | ||||
writer.WriteByte(value.FlagState); | writer.WriteByte(value.FlagState); | ||||
writer.WriteByte(value.AlarmOrEventType); | writer.WriteByte(value.AlarmOrEventType); | ||||
writer.WriteByte(value.AlarmLevel); | |||||
writer.WriteByte(value.Speed); | writer.WriteByte(value.Speed); | ||||
writer.WriteUInt16(value.Altitude); | writer.WriteUInt16(value.Altitude); | ||||
writer.WriteUInt32((uint)value.Latitude); | writer.WriteUInt32((uint)value.Latitude); | ||||
@@ -0,0 +1,73 @@ | |||||
using JT808.Protocol.Extensions.YueBiao.Metadata; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessageBody; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
{ | |||||
/// <summary> | |||||
/// 安装异常信息 | |||||
/// </summary> | |||||
public class JT808_0x0200_0xF1 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0xF1>, IJT808Analyze, IJT808_2019_Version | |||||
{ | |||||
/// <summary> | |||||
/// 安装异常信息附件ID | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808_YueBiao_Constants.JT808_0X0200_0xF1; | |||||
/// <summary> | |||||
/// 算法异常信息长度 | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 4; | |||||
/// <summary> | |||||
/// 厂家自定义 | |||||
/// </summary> | |||||
public uint Retain { get; set; } | |||||
/// <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_0x0200_0xF1 value = new JT808_0x0200_0xF1(); | |||||
value.AttachInfoId = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); | |||||
value.AttachInfoLength = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | |||||
value.Retain = reader.ReadUInt32(); | |||||
writer.WriteNumber($"[{value.Retain.ReadNumber()}]厂家自定义", value.Retain); | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0xF1 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_0x0200_0xF1 value = new JT808_0x0200_0xF1(); | |||||
value.AttachInfoId = reader.ReadByte(); | |||||
value.AttachInfoLength = reader.ReadByte(); | |||||
value.Retain = reader.ReadUInt32(); | |||||
return value; | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0xF1 value, IJT808Config config) | |||||
{ | |||||
writer.WriteByte(value.AttachInfoId); | |||||
writer.WriteByte(value.AttachInfoLength); | |||||
writer.WriteUInt32(value.Retain); | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,73 @@ | |||||
using JT808.Protocol.Extensions.YueBiao.Metadata; | |||||
using JT808.Protocol.Formatters; | |||||
using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessageBody; | |||||
using JT808.Protocol.MessagePack; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using System.Text.Json; | |||||
namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
{ | |||||
/// <summary> | |||||
/// 算法异常信息 | |||||
/// </summary> | |||||
public class JT808_0x0200_0xF2 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0xF2>, IJT808Analyze, IJT808_2019_Version | |||||
{ | |||||
/// <summary> | |||||
/// 算法异常信息附件ID | |||||
/// </summary> | |||||
public override byte AttachInfoId { get; set; } = JT808_YueBiao_Constants.JT808_0X0200_0xF2; | |||||
/// <summary> | |||||
/// 算法异常信息长度 | |||||
/// </summary> | |||||
public override byte AttachInfoLength { get; set; } = 4; | |||||
/// <summary> | |||||
/// 厂家自定义 | |||||
/// </summary> | |||||
public uint Retain { get; set; } | |||||
/// <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_0x0200_0xF2 value = new JT808_0x0200_0xF2(); | |||||
value.AttachInfoId = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId); | |||||
value.AttachInfoLength = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength); | |||||
value.Retain = reader.ReadUInt32(); | |||||
writer.WriteNumber($"[{value.Retain.ReadNumber()}]厂家自定义", value.Retain); | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="reader"></param> | |||||
/// <param name="config"></param> | |||||
/// <returns></returns> | |||||
public JT808_0x0200_0xF2 Deserialize(ref JT808MessagePackReader reader, IJT808Config config) | |||||
{ | |||||
JT808_0x0200_0xF2 value = new JT808_0x0200_0xF2(); | |||||
value.AttachInfoId = reader.ReadByte(); | |||||
value.AttachInfoLength = reader.ReadByte(); | |||||
value.Retain = reader.ReadUInt32(); | |||||
return value; | |||||
} | |||||
/// <summary> | |||||
/// | |||||
/// </summary> | |||||
/// <param name="writer"></param> | |||||
/// <param name="value"></param> | |||||
/// <param name="config"></param> | |||||
public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0xF2 value, IJT808Config config) | |||||
{ | |||||
writer.WriteByte(value.AttachInfoId); | |||||
writer.WriteByte(value.AttachInfoLength); | |||||
writer.WriteUInt32(value.Retain); | |||||
} | |||||
} | |||||
} |
@@ -6,6 +6,7 @@ using JT808.Protocol.MessageBody; | |||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Linq; | |||||
using System.Text; | using System.Text; | ||||
using System.Text.Json; | using System.Text.Json; | ||||
@@ -55,7 +56,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteNumber($"[{item.WorkingCondition.ReadNumber()}]工作状态-{workingCondition.ToString()}", item.WorkingCondition); | writer.WriteNumber($"[{item.WorkingCondition.ReadNumber()}]工作状态-{workingCondition.ToString()}", item.WorkingCondition); | ||||
item.AlarmStatus = reader.ReadUInt32(); | item.AlarmStatus = reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{item.AlarmStatus.ReadNumber()}]报警状态", item.AlarmStatus); | writer.WriteNumber($"[{item.AlarmStatus.ReadNumber()}]报警状态", item.AlarmStatus); | ||||
var alarmStatusBits = Convert.ToString(item.AlarmStatus, 2).PadLeft(32, '0').AsSpan(); | |||||
var alarmStatusBits = Convert.ToString(item.AlarmStatus, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan(); | |||||
writer.WriteStartObject($"报警状态对象[{alarmStatusBits.ToString()}]"); | writer.WriteStartObject($"报警状态对象[{alarmStatusBits.ToString()}]"); | ||||
writer.WriteString($"[bit12~bit31]预留", alarmStatusBits.Slice(12).ToString()); | writer.WriteString($"[bit12~bit31]预留", alarmStatusBits.Slice(12).ToString()); | ||||
writer.WriteString($"]bit11]定位模块异常", alarmStatusBits[11].ToString()); | writer.WriteString($"]bit11]定位模块异常", alarmStatusBits[11].ToString()); | ||||
@@ -111,17 +111,17 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
item.USBID = reader.ReadByte(); | item.USBID = reader.ReadByte(); | ||||
item.MessageLength = reader.ReadByte(); | item.MessageLength = reader.ReadByte(); | ||||
item.CompantNameLength = reader.ReadByte(); | item.CompantNameLength = reader.ReadByte(); | ||||
item.CompantName = reader.ReadString(item.CompantNameLength); | |||||
item.CompantName = reader.ReadASCII(item.CompantNameLength); | |||||
item.ProductModelLength = reader.ReadByte(); | item.ProductModelLength = reader.ReadByte(); | ||||
item.ProductModel = reader.ReadString(item.ProductModelLength); | |||||
item.ProductModel = reader.ReadASCII(item.ProductModelLength); | |||||
item.HardwareVersionNumberLength = reader.ReadByte(); | item.HardwareVersionNumberLength = reader.ReadByte(); | ||||
item.HardwareVersionNumber = reader.ReadString(item.HardwareVersionNumberLength); | |||||
item.HardwareVersionNumber = reader.ReadASCII(item.HardwareVersionNumberLength); | |||||
item.SoftwareVersionNumberLength = reader.ReadByte(); | item.SoftwareVersionNumberLength = reader.ReadByte(); | ||||
item.SoftwareVersionNumber = reader.ReadString(item.SoftwareVersionNumberLength); | |||||
item.SoftwareVersionNumber = reader.ReadASCII(item.SoftwareVersionNumberLength); | |||||
item.DevicesIDLength = reader.ReadByte(); | item.DevicesIDLength = reader.ReadByte(); | ||||
item.DevicesID = reader.ReadString(item.DevicesIDLength); | |||||
item.DevicesID = reader.ReadASCII(item.DevicesIDLength); | |||||
item.CustomerCodeLength = reader.ReadByte(); | item.CustomerCodeLength = reader.ReadByte(); | ||||
item.CustomerCode = reader.ReadString(item.CustomerCodeLength); | |||||
item.CustomerCode = reader.ReadASCII(item.CustomerCodeLength); | |||||
value.USBMessages.Add(item); | value.USBMessages.Add(item); | ||||
} | } | ||||
} | } | ||||
@@ -144,27 +144,27 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.Skip(1,out int messageLengthPosition); | writer.Skip(1,out int messageLengthPosition); | ||||
writer.Skip(1, out int CompantNameLengthPosition); | writer.Skip(1, out int CompantNameLengthPosition); | ||||
writer.WriteString(item.CompantName); | |||||
writer.WriteASCII(item.CompantName); | |||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CompantNameLengthPosition - 1), CompantNameLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CompantNameLengthPosition - 1), CompantNameLengthPosition); | ||||
writer.Skip(1, out int ProductModelLengthPosition); | writer.Skip(1, out int ProductModelLengthPosition); | ||||
writer.WriteString(item.ProductModel); | |||||
writer.WriteASCII(item.ProductModel); | |||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ProductModelLengthPosition - 1), ProductModelLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ProductModelLengthPosition - 1), ProductModelLengthPosition); | ||||
writer.Skip(1, out int HardwareVersionNumberLengthPosition); | writer.Skip(1, out int HardwareVersionNumberLengthPosition); | ||||
writer.WriteString(item.HardwareVersionNumber); | |||||
writer.WriteASCII(item.HardwareVersionNumber); | |||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - HardwareVersionNumberLengthPosition - 1), HardwareVersionNumberLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - HardwareVersionNumberLengthPosition - 1), HardwareVersionNumberLengthPosition); | ||||
writer.Skip(1, out int SoftwareVersionNumberLengthPosition); | writer.Skip(1, out int SoftwareVersionNumberLengthPosition); | ||||
writer.WriteString(item.SoftwareVersionNumber); | |||||
writer.WriteASCII(item.SoftwareVersionNumber); | |||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - SoftwareVersionNumberLengthPosition - 1), SoftwareVersionNumberLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - SoftwareVersionNumberLengthPosition - 1), SoftwareVersionNumberLengthPosition); | ||||
writer.Skip(1, out int DevicesIDLengthPosition); | writer.Skip(1, out int DevicesIDLengthPosition); | ||||
writer.WriteString(item.DevicesID); | |||||
writer.WriteASCII(item.DevicesID); | |||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - DevicesIDLengthPosition - 1), DevicesIDLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - DevicesIDLengthPosition - 1), DevicesIDLengthPosition); | ||||
writer.Skip(1, out int CustomerCodeLengthPosition); | writer.Skip(1, out int CustomerCodeLengthPosition); | ||||
writer.WriteString(item.CustomerCode); | |||||
writer.WriteASCII(item.CustomerCode); | |||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CustomerCodeLengthPosition - 1), CustomerCodeLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CustomerCodeLengthPosition - 1), CustomerCodeLengthPosition); | ||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - messageLengthPosition - 1), messageLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - messageLengthPosition - 1), messageLengthPosition); | ||||
@@ -4,6 +4,7 @@ using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | using System; | ||||
using System.Linq; | |||||
using System.Text.Json; | using System.Text.Json; | ||||
namespace JT808.Protocol.Extensions.YueBiao.MessageBody | namespace JT808.Protocol.Extensions.YueBiao.MessageBody | ||||
@@ -119,7 +120,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// <summary> | /// <summary> | ||||
/// 车道偏离报警分级速度阈值 | /// 车道偏离报警分级速度阈值 | ||||
/// </summary> | /// </summary> | ||||
public byte GradedSpeedThresholdLaneDeviationAlarm { get; set; } | |||||
public byte GradedSpeedThresholdLaneDepartureAlarm { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// 车道偏离报警前后视频录制时间 | /// 车道偏离报警前后视频录制时间 | ||||
/// </summary> | /// </summary> | ||||
@@ -173,11 +174,11 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte PedestrianCollisionAlarmInterval { get; set; } | public byte PedestrianCollisionAlarmInterval { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 车距监控报警距离阈值 | |||||
/// 车距过近报警距离阈值 | |||||
/// </summary> | /// </summary> | ||||
public byte VehicleDistanceMonitoringAlarmDistanceThreshold { get; set; } | public byte VehicleDistanceMonitoringAlarmDistanceThreshold { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 车距监控报警分级速度阈值 | |||||
/// 车距过近报警分级速度阈值 | |||||
/// </summary> | /// </summary> | ||||
public byte VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold { get; set; } | public byte VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold { get; set; } | ||||
/// <summary> | /// <summary> | ||||
@@ -201,6 +202,38 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte RoadSignRecognitionPhotographsInterval { get; set; } | public byte RoadSignRecognitionPhotographsInterval { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 实线变道报警分级速度阈值 | |||||
/// </summary> | |||||
public byte SolidLineChangeLanesAlarmClassificationSpeedThreshold { get; set; } | |||||
/// <summary> | |||||
/// 实线变道报警前后视频录制时间 | |||||
/// </summary> | |||||
public byte VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm { get; set; } | |||||
/// <summary> | |||||
/// 实线变道报警拍照张数 | |||||
/// </summary> | |||||
public byte SolidLineChangeLanesAlarmPhotographs { get; set; } | |||||
/// <summary> | |||||
/// 实线变道报警拍照间隔 | |||||
/// </summary> | |||||
public byte SolidLineChangeLanesAlarmPhotoInterval { get; set; } | |||||
/// <summary> | |||||
/// 车厢过道行人检测报警分级速度阈值 | |||||
/// </summary> | |||||
public byte CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold { get; set; } | |||||
/// <summary> | |||||
/// 车厢过道行人检测报警前后视频录制时间 | |||||
/// </summary> | |||||
public byte VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm { get; set; } | |||||
/// <summary> | |||||
/// 车厢过道行人检测报警拍照张数 | |||||
/// </summary> | |||||
public byte CarriageAislePassengerDetectionAlarmPhotographs { get; set; } | |||||
/// <summary> | |||||
/// 车厢过道行人检测报警拍照间隔 | |||||
/// </summary> | |||||
public byte CarriageAislePassengerDetectionAlarmPhotoInterval { get; set; } | |||||
/// <summary> | |||||
/// 保留字段 | /// 保留字段 | ||||
/// </summary> | /// </summary> | ||||
public byte[] Placeholder2 { get; set; } = new byte[4]; | public byte[] Placeholder2 { get; set; } = new byte[4]; | ||||
@@ -240,12 +273,15 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); | writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); | ||||
value.AlarmEnable = reader.ReadUInt32(); | value.AlarmEnable = reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); | writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); | ||||
var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').AsSpan(); | |||||
writer.WriteStartObject("报警使能对象"); | |||||
var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan(); | |||||
writer.WriteStartObject($"报警使能对象[{alarmEnableBits.ToString()}]"); | |||||
writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30,2).ToString()); | writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30,2).ToString()); | ||||
writer.WriteString("[bit17~bit29]用户自定义", alarmEnableBits.Slice(17, 13).ToString()); | |||||
writer.WriteString("[bit20~bit29]用户自定义", alarmEnableBits.Slice(20, 10).ToString()); | |||||
writer.WriteString("[bit19]车厢过道行人检测", alarmEnableBits[19] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit18]实线变道二级报警", alarmEnableBits[18] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit17]实线变道一级报警", alarmEnableBits[17] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16]=='0'?"关闭":"打开"); | writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16]=='0'?"关闭":"打开"); | ||||
writer.WriteString("[bit12~bit15]道路标识超限报警", alarmEnableBits.Slice(12, 4).ToString()); | |||||
writer.WriteString("[bit12~bit15]用户自定义", alarmEnableBits.Slice(12, 4).ToString()); | |||||
writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开"); | writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开"); | ||||
writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开"); | writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开"); | ||||
writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开"); | writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开"); | ||||
@@ -261,12 +297,12 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
value.EventEnable = reader.ReadUInt32(); | value.EventEnable = reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); | writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); | ||||
var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').AsSpan(); | |||||
writer.WriteStartObject("事件使能对象"); | |||||
var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan(); | |||||
writer.WriteStartObject($"事件使能对象[{eventEnableBits.ToString()}]"); | |||||
writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString()); | writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString()); | ||||
writer.WriteString("[bit2~bit29]用户自定义", alarmEnableBits.Slice(2, 28).ToString()); | writer.WriteString("[bit2~bit29]用户自定义", alarmEnableBits.Slice(2, 28).ToString()); | ||||
writer.WriteString("[bit1]主动拍照", alarmEnableBits[1] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit0]道路标识识别", alarmEnableBits[0] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit1]主动拍照", eventEnableBits[1] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit0]道路标识识别", eventEnableBits[0] == '0' ? "关闭" : "打开"); | |||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
value.Placeholder1 = reader.ReadByte(); | value.Placeholder1 = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.Placeholder1.ReadNumber()}]预留字段", value.Placeholder1); | writer.WriteNumber($"[{value.Placeholder1.ReadNumber()}]预留字段", value.Placeholder1); | ||||
@@ -292,8 +328,8 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteNumber($"[{value.FrequentChannelChangeAlarmPhotos.ReadNumber()}]频繁变道报警拍照张数", value.FrequentChannelChangeAlarmPhotos); | writer.WriteNumber($"[{value.FrequentChannelChangeAlarmPhotos.ReadNumber()}]频繁变道报警拍照张数", value.FrequentChannelChangeAlarmPhotos); | ||||
value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.FrequentLaneChangeAlarmInterval.ReadNumber()}]频繁变道报警拍照间隔", value.FrequentLaneChangeAlarmInterval); | writer.WriteNumber($"[{value.FrequentLaneChangeAlarmInterval.ReadNumber()}]频繁变道报警拍照间隔", value.FrequentLaneChangeAlarmInterval); | ||||
value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.GradedSpeedThresholdLaneDeviationAlarm.ReadNumber()}]车道偏离报警分级速度阈值", value.GradedSpeedThresholdLaneDeviationAlarm); | |||||
value.GradedSpeedThresholdLaneDepartureAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.GradedSpeedThresholdLaneDepartureAlarm.ReadNumber()}]车道偏离报警分级速度阈值", value.GradedSpeedThresholdLaneDepartureAlarm); | |||||
value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm.ReadNumber()}]车道偏离报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); | writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm.ReadNumber()}]车道偏离报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); | ||||
value.LaneDepartureAlarmPhoto = reader.ReadByte(); | value.LaneDepartureAlarmPhoto = reader.ReadByte(); | ||||
@@ -321,9 +357,9 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
value.PedestrianCollisionAlarmInterval = reader.ReadByte(); | value.PedestrianCollisionAlarmInterval = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.PedestrianCollisionAlarmInterval.ReadNumber()}]行人碰撞报警拍照间隔", value.PedestrianCollisionAlarmInterval); | writer.WriteNumber($"[{value.PedestrianCollisionAlarmInterval.ReadNumber()}]行人碰撞报警拍照间隔", value.PedestrianCollisionAlarmInterval); | ||||
value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); | value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAlarmDistanceThreshold.ReadNumber()}]车距监控报警距离阈值", value.VehicleDistanceMonitoringAlarmDistanceThreshold); | |||||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAlarmDistanceThreshold.ReadNumber()}]车距过近报警距离阈值", value.VehicleDistanceMonitoringAlarmDistanceThreshold); | |||||
value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); | value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold.ReadNumber()}]车距监控报警分级速度阈值", value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); | |||||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold.ReadNumber()}]车距过近报警分级速度阈值", value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); | |||||
value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); | value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity.ReadNumber()}]车距过近报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity); | writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity.ReadNumber()}]车距过近报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity); | ||||
value.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); | value.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); | ||||
@@ -334,6 +370,24 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteNumber($"[{value.RoadSignRecognitionPhotographs.ReadNumber()}]道路标志识别拍照张数", value.RoadSignRecognitionPhotographs); | writer.WriteNumber($"[{value.RoadSignRecognitionPhotographs.ReadNumber()}]道路标志识别拍照张数", value.RoadSignRecognitionPhotographs); | ||||
value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.RoadSignRecognitionPhotographsInterval.ReadNumber()}]道路标志识别拍照间隔", value.RoadSignRecognitionPhotographsInterval); | writer.WriteNumber($"[{value.RoadSignRecognitionPhotographsInterval.ReadNumber()}]道路标志识别拍照间隔", value.RoadSignRecognitionPhotographsInterval); | ||||
//实线变道报警 | |||||
value.SolidLineChangeLanesAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SolidLineChangeLanesAlarmClassificationSpeedThreshold.ReadNumber()}]实线变道报警分级速度阈值", value.SolidLineChangeLanesAlarmClassificationSpeedThreshold); | |||||
value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm.ReadNumber()}]实线变道报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm); | |||||
value.SolidLineChangeLanesAlarmPhotographs = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SolidLineChangeLanesAlarmPhotographs.ReadNumber()}]实线变道报警拍照张数", value.SolidLineChangeLanesAlarmPhotographs); | |||||
value.SolidLineChangeLanesAlarmPhotoInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.SolidLineChangeLanesAlarmPhotoInterval.ReadNumber()}]实线变道报警拍照间隔", value.SolidLineChangeLanesAlarmPhotoInterval); | |||||
//车厢过道行人检测报警 | |||||
value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold.ReadNumber()}]车厢过道行人检测报警分级速度阈值", value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold); | |||||
value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm.ReadNumber()}]车厢过道行人检测报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm); | |||||
value.CarriageAislePassengerDetectionAlarmPhotographs = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.CarriageAislePassengerDetectionAlarmPhotographs.ReadNumber()}]车厢过道行人检测报警拍照张数", value.CarriageAislePassengerDetectionAlarmPhotographs); | |||||
value.CarriageAislePassengerDetectionAlarmPhotoInterval = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.CarriageAislePassengerDetectionAlarmPhotoInterval.ReadNumber()}]车厢过道行人检测报警拍照间隔", value.CarriageAislePassengerDetectionAlarmPhotoInterval); | |||||
value.Placeholder2 = reader.ReadArray(4).ToArray(); | value.Placeholder2 = reader.ReadArray(4).ToArray(); | ||||
writer.WriteString("保留字段", value.Placeholder2.ToHexString()); | writer.WriteString("保留字段", value.Placeholder2.ToHexString()); | ||||
} | } | ||||
@@ -371,7 +425,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); | value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); | ||||
value.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); | value.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); | ||||
value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | ||||
value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); | |||||
value.GradedSpeedThresholdLaneDepartureAlarm = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | ||||
value.LaneDepartureAlarmPhoto = reader.ReadByte(); | value.LaneDepartureAlarmPhoto = reader.ReadByte(); | ||||
value.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); | value.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); | ||||
@@ -392,6 +446,17 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); | value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); | ||||
value.RoadSignRecognitionPhotographs = reader.ReadByte(); | value.RoadSignRecognitionPhotographs = reader.ReadByte(); | ||||
value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | ||||
value.SolidLineChangeLanesAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm = reader.ReadByte(); | |||||
value.SolidLineChangeLanesAlarmPhotographs = reader.ReadByte(); | |||||
value.SolidLineChangeLanesAlarmPhotoInterval = reader.ReadByte(); | |||||
value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||||
value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm = reader.ReadByte(); | |||||
value.CarriageAislePassengerDetectionAlarmPhotographs = reader.ReadByte(); | |||||
value.CarriageAislePassengerDetectionAlarmPhotoInterval = reader.ReadByte(); | |||||
value.Placeholder2 = reader.ReadArray(4).ToArray(); | value.Placeholder2 = reader.ReadArray(4).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
@@ -428,7 +493,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm); | writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm); | ||||
writer.WriteByte(value.FrequentChannelChangeAlarmPhotos); | writer.WriteByte(value.FrequentChannelChangeAlarmPhotos); | ||||
writer.WriteByte(value.FrequentLaneChangeAlarmInterval); | writer.WriteByte(value.FrequentLaneChangeAlarmInterval); | ||||
writer.WriteByte(value.GradedSpeedThresholdLaneDeviationAlarm); | |||||
writer.WriteByte(value.GradedSpeedThresholdLaneDepartureAlarm); | |||||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); | writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); | ||||
writer.WriteByte(value.LaneDepartureAlarmPhoto); | writer.WriteByte(value.LaneDepartureAlarmPhoto); | ||||
writer.WriteByte(value.LaneDepartureAlarmPhotoInterval); | writer.WriteByte(value.LaneDepartureAlarmPhotoInterval); | ||||
@@ -449,6 +514,14 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteByte(value.AlarmPhotoVehicleCloseDistanceInterval); | writer.WriteByte(value.AlarmPhotoVehicleCloseDistanceInterval); | ||||
writer.WriteByte(value.RoadSignRecognitionPhotographs); | writer.WriteByte(value.RoadSignRecognitionPhotographs); | ||||
writer.WriteByte(value.RoadSignRecognitionPhotographsInterval); | writer.WriteByte(value.RoadSignRecognitionPhotographsInterval); | ||||
writer.WriteByte(value.SolidLineChangeLanesAlarmClassificationSpeedThreshold); | |||||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm); | |||||
writer.WriteByte(value.SolidLineChangeLanesAlarmPhotographs); | |||||
writer.WriteByte(value.SolidLineChangeLanesAlarmPhotoInterval); | |||||
writer.WriteByte(value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold); | |||||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm); | |||||
writer.WriteByte(value.CarriageAislePassengerDetectionAlarmPhotographs); | |||||
writer.WriteByte(value.CarriageAislePassengerDetectionAlarmPhotoInterval); | |||||
writer.WriteArray(value.Placeholder2); | writer.WriteArray(value.Placeholder2); | ||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); | ||||
} | } | ||||
@@ -4,6 +4,7 @@ using JT808.Protocol.Interfaces; | |||||
using JT808.Protocol.MessageBody; | using JT808.Protocol.MessageBody; | ||||
using JT808.Protocol.MessagePack; | using JT808.Protocol.MessagePack; | ||||
using System; | using System; | ||||
using System.Linq; | |||||
using System.Text.Json; | using System.Text.Json; | ||||
namespace JT808.Protocol.Extensions.YueBiao.MessageBody | namespace JT808.Protocol.Extensions.YueBiao.MessageBody | ||||
@@ -126,18 +127,26 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte SmokingAlarmPhotographsDriverFaceCharacteristicsInterval { get; set; } | public byte SmokingAlarmPhotographsDriverFaceCharacteristicsInterval { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 分神驾驶报警分级车速阈值 | |||||
/// 不目视前方报警分级车速阈值 | |||||
/// </summary> | /// </summary> | ||||
public byte ClassifiedSpeedThresholdDistractedDrivingAlarm { get; set; } | public byte ClassifiedSpeedThresholdDistractedDrivingAlarm { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 分神驾驶报警拍照张数 | |||||
/// 不目视前方报警前后视频录制时间 | |||||
/// </summary> | |||||
public byte VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm { get; set; } | |||||
/// <summary> | |||||
/// 不目视前方报警拍照张数 | |||||
/// </summary> | /// </summary> | ||||
public byte DistractedDrivingAlarmPhotography{ get; set; } | public byte DistractedDrivingAlarmPhotography{ get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 分神驾驶报警拍照间隔时间 | |||||
/// 不目视前方报警拍照间隔时间 | |||||
/// </summary> | /// </summary> | ||||
public byte DistractedDrivingAlarmPhotographyInterval { get; set; } | public byte DistractedDrivingAlarmPhotographyInterval { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 驾驶行为异常分级车速阈值 | |||||
/// </summary> | |||||
public byte ClassifiedSpeedThresholdAbnormalDrivingBehavior { get; set; } | |||||
/// <summary> | |||||
/// 驾驶行为异常视频录制时间 | /// 驾驶行为异常视频录制时间 | ||||
/// </summary> | /// </summary> | ||||
public byte VideoRecordingTimeAbnormalDrivingBehavior{ get; set; } | public byte VideoRecordingTimeAbnormalDrivingBehavior{ get; set; } | ||||
@@ -150,10 +159,77 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
/// </summary> | /// </summary> | ||||
public byte PictureIntervalAbnormalDrivingBehavior{ get; set; } | public byte PictureIntervalAbnormalDrivingBehavior{ get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 驾驶员身份识别触发 | |||||
/// 驾驶员身份识别触发方式 | |||||
/// </summary> | /// </summary> | ||||
public byte DriverIdentificationTrigger { get; set; } | public byte DriverIdentificationTrigger { get; set; } | ||||
/// <summary> | /// <summary> | ||||
/// 摄像机遮挡报警分级车速阈值 | |||||
/// </summary> | |||||
public byte ClassifiedSpeedThresholdCameraOcclusion { get; set; } | |||||
/// <summary> | |||||
/// 不系安全带报警分级车速阈值 | |||||
/// </summary> | |||||
public byte ClassifiedSpeedThresholdNotBuckleUp { get; set; } | |||||
/// <summary> | |||||
/// 不系安全带报警前后视频录制时间 | |||||
/// </summary> | |||||
public byte VideoRecordingTimeNotBuckleUp { get; set; } | |||||
/// <summary> | |||||
/// 不系安全带报警抓拍照片张数 | |||||
/// </summary> | |||||
public byte PhotographsNotBuckleUp { get; set; } | |||||
/// <summary> | |||||
///不系安全带报警拍照间隔 | |||||
/// </summary> | |||||
public byte PictureIntervalNotBuckleUp { get; set; } | |||||
///<summary> | |||||
/// 红外墨镜阻断失效报警分级车速阈值 | |||||
/// </summary> | |||||
public byte ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure { get; set; } | |||||
/// <summary> | |||||
/// 红外墨镜阻断失效报警前后视频录制时间 | |||||
/// </summary> | |||||
public byte VideoRecordingTimeInfraredSunglassesBlockingFailure { get; set; } | |||||
/// <summary> | |||||
/// 红外墨镜阻断失效报警抓拍照片张数 | |||||
/// </summary> | |||||
public byte PhotographsInfraredSunglassesBlockingFailure { get; set; } | |||||
/// <summary> | |||||
///红外墨镜阻断失效报警拍照间隔 | |||||
/// </summary> | |||||
public byte PictureIntervalInfraredSunglassesBlockingFailure { get; set; } | |||||
/// 双脱把报警分级车速阈值 | |||||
/// </summary> | |||||
public byte ClassifiedSpeedThresholdDoubleHanderOff { get; set; } | |||||
/// <summary> | |||||
/// 双脱把报警前后视频录制时间 | |||||
/// </summary> | |||||
public byte VideoRecordingTimeDoubleHanderOff { get; set; } | |||||
/// <summary> | |||||
/// 双脱把报警抓拍照片张数 | |||||
/// </summary> | |||||
public byte PhotographsDoubleHanderOff { get; set; } | |||||
/// <summary> | |||||
///双脱把报警拍照间隔 | |||||
/// </summary> | |||||
public byte PictureIntervalDoubleHanderOff { get; set; } | |||||
///玩手机报警分级车速阈值 | |||||
/// </summary> | |||||
public byte ClassifiedSpeedThresholdPlayMobile { get; set; } | |||||
/// <summary> | |||||
/// 玩手机报警前后视频录制时间 | |||||
/// </summary> | |||||
public byte VideoRecordingTimePlayMobile { get; set; } | |||||
/// <summary> | |||||
/// 玩手机报警抓拍照片张数 | |||||
/// </summary> | |||||
public byte PhotographsPlayMobile { get; set; } | |||||
/// <summary> | |||||
///玩手机报警拍照间隔 | |||||
/// </summary> | |||||
public byte PictureIntervalPlayMobile { get; set; } | |||||
/// <summary> | |||||
/// 保留字段 | /// 保留字段 | ||||
/// </summary> | /// </summary> | ||||
public byte[] Retain { get; set; } = new byte[2]; | public byte[] Retain { get; set; } = new byte[2]; | ||||
@@ -193,33 +269,39 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); | writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution); | ||||
value.AlarmEnable = reader.ReadUInt32(); | value.AlarmEnable = reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); | 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' ? "关闭" : "打开"); | |||||
var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan(); | |||||
writer.WriteStartObject($"报警使能对象[{alarmEnableBits.ToString()}]"); | |||||
writer.WriteString("[bit30~bit31]保留", alarmEnableBits.Slice(30, 2).ToString()); | |||||
writer.WriteString("[bit20~bit29]用户自定义", alarmEnableBits.Slice(20, 10).ToString()); | |||||
writer.WriteString("[bit19]玩手机二级报警", alarmEnableBits[19] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit18]玩手机一级报警", alarmEnableBits[18] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit17]双脱把二级报警(双手同时脱离方向盘)", alarmEnableBits[17] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit16]双脱把一级报警(双手同时脱离方向盘)", alarmEnableBits[16] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit15]红外墨镜阻断失效二级报警", alarmEnableBits[15] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit14]红外墨镜阻断失效一级报警", alarmEnableBits[14] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit13]不系安全带二级报警", alarmEnableBits[13] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit12]不系安全带一级报警", alarmEnableBits[12] == '0' ? "关闭" : "打开"); | |||||
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(); | writer.WriteEndObject(); | ||||
value.EventEnable = reader.ReadUInt32(); | value.EventEnable = reader.ReadUInt32(); | ||||
writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); | writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); | ||||
var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').AsSpan(); | |||||
writer.WriteStartObject("事件使能对象"); | |||||
var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan(); | |||||
writer.WriteStartObject($"事件使能对象[{eventEnableBits.ToString()}]"); | |||||
writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString()); | 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.WriteString("[bit2~bit29]用户自定义", eventEnableBits.Slice(2, 28).ToString()); | |||||
writer.WriteString("[bit1]主动拍照事件", eventEnableBits[1] == '0' ? "关闭" : "打开"); | |||||
writer.WriteString("[bit0]驾驶员变更事件", eventEnableBits[0] == '0' ? "关闭" : "打开"); | |||||
writer.WriteEndObject(); | writer.WriteEndObject(); | ||||
value.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); | value.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); | ||||
writer.WriteNumber($"[{value.TimeIntervalSmokingAlarmJudgment.ReadNumber()}]吸烟报警判断时间间隔", value.TimeIntervalSmokingAlarmJudgment); | writer.WriteNumber($"[{value.TimeIntervalSmokingAlarmJudgment.ReadNumber()}]吸烟报警判断时间间隔", value.TimeIntervalSmokingAlarmJudgment); | ||||
@@ -253,10 +335,14 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteNumber($"[{value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval.ReadNumber()}]抽烟报警拍驾驶员面部特征照片间隔时间", value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); | writer.WriteNumber($"[{value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval.ReadNumber()}]抽烟报警拍驾驶员面部特征照片间隔时间", value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); | ||||
value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdDistractedDrivingAlarm.ReadNumber()}]分神驾驶报警分级车速阈值", value.ClassifiedSpeedThresholdDistractedDrivingAlarm); | writer.WriteNumber($"[{value.ClassifiedSpeedThresholdDistractedDrivingAlarm.ReadNumber()}]分神驾驶报警分级车速阈值", value.ClassifiedSpeedThresholdDistractedDrivingAlarm); | ||||
value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm.ReadNumber()}]不目视前方报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm); | |||||
value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotography.ReadNumber()}]分神驾驶报警拍照张数", value.DistractedDrivingAlarmPhotography); | writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotography.ReadNumber()}]分神驾驶报警拍照张数", value.DistractedDrivingAlarmPhotography); | ||||
value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotographyInterval.ReadNumber()}]分神驾驶报警拍照间隔时间", value.DistractedDrivingAlarmPhotographyInterval); | writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotographyInterval.ReadNumber()}]分神驾驶报警拍照间隔时间", value.DistractedDrivingAlarmPhotographyInterval); | ||||
value.ClassifiedSpeedThresholdAbnormalDrivingBehavior = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常分级车速阈值", value.ClassifiedSpeedThresholdAbnormalDrivingBehavior); | |||||
value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.VideoRecordingTimeAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常视频录制时间", value.VideoRecordingTimeAbnormalDrivingBehavior); | writer.WriteNumber($"[{value.VideoRecordingTimeAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常视频录制时间", value.VideoRecordingTimeAbnormalDrivingBehavior); | ||||
value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | ||||
@@ -264,7 +350,46 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.PictureIntervalAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常拍照间隔", value.PictureIntervalAbnormalDrivingBehavior); | writer.WriteNumber($"[{value.PictureIntervalAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常拍照间隔", value.PictureIntervalAbnormalDrivingBehavior); | ||||
value.DriverIdentificationTrigger = reader.ReadByte(); | value.DriverIdentificationTrigger = reader.ReadByte(); | ||||
writer.WriteNumber($"[{value.DriverIdentificationTrigger.ReadNumber()}]驾驶员身份识别触发", value.DriverIdentificationTrigger); | |||||
writer.WriteNumber($"[{value.DriverIdentificationTrigger.ReadNumber()}]驾驶员身份识别触发方式", value.DriverIdentificationTrigger); | |||||
value.ClassifiedSpeedThresholdCameraOcclusion = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdCameraOcclusion.ReadNumber()}]摄像机遮挡报警分级速度阈值", value.ClassifiedSpeedThresholdCameraOcclusion); | |||||
//不系安全带报警 | |||||
value.ClassifiedSpeedThresholdNotBuckleUp = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdNotBuckleUp.ReadNumber()}]不系安全带报警拍照间隔", value.ClassifiedSpeedThresholdNotBuckleUp); | |||||
value.VideoRecordingTimeNotBuckleUp = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeNotBuckleUp.ReadNumber()}]不系安全带报警前后视频录制时间", value.VideoRecordingTimeNotBuckleUp); | |||||
value.PhotographsNotBuckleUp = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PhotographsNotBuckleUp.ReadNumber()}]不系安全带报警抓拍照片张数", value.PhotographsNotBuckleUp); | |||||
value.PictureIntervalNotBuckleUp = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PictureIntervalNotBuckleUp.ReadNumber()}]不系安全带报警拍照间隔", value.PictureIntervalNotBuckleUp); | |||||
//红外墨镜阻断失效报警 | |||||
value.ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure.ReadNumber()}]红外墨镜阻断失效报警分级车速阈值", value.ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure); | |||||
value.VideoRecordingTimeInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeInfraredSunglassesBlockingFailure.ReadNumber()}]红外墨镜阻断失效报警前后视频录制时间", value.VideoRecordingTimeInfraredSunglassesBlockingFailure); | |||||
value.PhotographsInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PhotographsInfraredSunglassesBlockingFailure.ReadNumber()}]红外墨镜阻断失效报警抓拍照片张数", value.PhotographsInfraredSunglassesBlockingFailure); | |||||
value.PictureIntervalInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PictureIntervalInfraredSunglassesBlockingFailure.ReadNumber()}]红外墨镜阻断失效报警拍照间隔", value.PictureIntervalInfraredSunglassesBlockingFailure); | |||||
//双脱把报警 | |||||
value.ClassifiedSpeedThresholdDoubleHanderOff = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdDoubleHanderOff.ReadNumber()}]双脱把报警分级车速阈值", value.ClassifiedSpeedThresholdDoubleHanderOff); | |||||
value.VideoRecordingTimeDoubleHanderOff = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimeDoubleHanderOff.ReadNumber()}]双脱把报警前后视频录制时间", value.VideoRecordingTimeDoubleHanderOff); | |||||
value.PhotographsDoubleHanderOff = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PhotographsDoubleHanderOff.ReadNumber()}]双脱把报警抓拍照片张数", value.PhotographsDoubleHanderOff); | |||||
value.PictureIntervalDoubleHanderOff = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PictureIntervalDoubleHanderOff.ReadNumber()}]双脱把报警拍照间隔", value.PictureIntervalDoubleHanderOff); | |||||
//玩手机报警 | |||||
value.ClassifiedSpeedThresholdPlayMobile = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdPlayMobile.ReadNumber()}]玩手机报警分级车速阈值", value.ClassifiedSpeedThresholdPlayMobile); | |||||
value.VideoRecordingTimePlayMobile = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.VideoRecordingTimePlayMobile.ReadNumber()}]玩手机报警前后视频录制时间", value.VideoRecordingTimePlayMobile); | |||||
value.PhotographsPlayMobile = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PhotographsPlayMobile.ReadNumber()}]玩手机报警抓拍照片张数", value.PhotographsPlayMobile); | |||||
value.PictureIntervalPlayMobile = reader.ReadByte(); | |||||
writer.WriteNumber($"[{value.PictureIntervalPlayMobile.ReadNumber()}]玩手机报警拍照间隔", value.PictureIntervalPlayMobile); | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | ||||
writer.WriteString("保留字段", value.Retain.ToHexString()); | writer.WriteString("保留字段", value.Retain.ToHexString()); | ||||
} | } | ||||
@@ -306,12 +431,36 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
value.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); | value.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); | ||||
value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); | value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); | ||||
value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | ||||
value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm = reader.ReadByte(); | |||||
value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | ||||
value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | ||||
value.ClassifiedSpeedThresholdAbnormalDrivingBehavior = reader.ReadByte(); | |||||
value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | ||||
value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | ||||
value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | ||||
value.DriverIdentificationTrigger = reader.ReadByte(); | value.DriverIdentificationTrigger = reader.ReadByte(); | ||||
value.ClassifiedSpeedThresholdCameraOcclusion = reader.ReadByte(); | |||||
value.ClassifiedSpeedThresholdNotBuckleUp = reader.ReadByte(); | |||||
value.VideoRecordingTimeNotBuckleUp = reader.ReadByte(); | |||||
value.PhotographsNotBuckleUp = reader.ReadByte(); | |||||
value.PictureIntervalNotBuckleUp = reader.ReadByte(); | |||||
value.ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
value.VideoRecordingTimeInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
value.PhotographsInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
value.PictureIntervalInfraredSunglassesBlockingFailure = reader.ReadByte(); | |||||
value.ClassifiedSpeedThresholdDoubleHanderOff = reader.ReadByte(); | |||||
value.VideoRecordingTimeDoubleHanderOff = reader.ReadByte(); | |||||
value.PhotographsDoubleHanderOff = reader.ReadByte(); | |||||
value.PictureIntervalDoubleHanderOff = reader.ReadByte(); | |||||
value.ClassifiedSpeedThresholdPlayMobile = reader.ReadByte(); | |||||
value.VideoRecordingTimePlayMobile = reader.ReadByte(); | |||||
value.PhotographsPlayMobile = reader.ReadByte(); | |||||
value.PictureIntervalPlayMobile = reader.ReadByte(); | |||||
value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | value.Retain = reader.ReadArray(reader.ReadCurrentRemainContentLength()).ToArray(); | ||||
return value; | return value; | ||||
} | } | ||||
@@ -352,12 +501,38 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristics); | writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristics); | ||||
writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); | writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); | ||||
writer.WriteByte(value.ClassifiedSpeedThresholdDistractedDrivingAlarm); | writer.WriteByte(value.ClassifiedSpeedThresholdDistractedDrivingAlarm); | ||||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm); | |||||
writer.WriteByte(value.DistractedDrivingAlarmPhotography); | writer.WriteByte(value.DistractedDrivingAlarmPhotography); | ||||
writer.WriteByte(value.DistractedDrivingAlarmPhotographyInterval); | writer.WriteByte(value.DistractedDrivingAlarmPhotographyInterval); | ||||
writer.WriteByte(value.ClassifiedSpeedThresholdAbnormalDrivingBehavior); | |||||
writer.WriteByte(value.VideoRecordingTimeAbnormalDrivingBehavior); | writer.WriteByte(value.VideoRecordingTimeAbnormalDrivingBehavior); | ||||
writer.WriteByte(value.PhotographsAbnormalDrivingBehavior); | writer.WriteByte(value.PhotographsAbnormalDrivingBehavior); | ||||
writer.WriteByte(value.PictureIntervalAbnormalDrivingBehavior); | writer.WriteByte(value.PictureIntervalAbnormalDrivingBehavior); | ||||
writer.WriteByte(value.DriverIdentificationTrigger); | writer.WriteByte(value.DriverIdentificationTrigger); | ||||
writer.WriteByte(value.ClassifiedSpeedThresholdCameraOcclusion); | |||||
writer.WriteByte(value.ClassifiedSpeedThresholdNotBuckleUp); | |||||
writer.WriteByte(value.VideoRecordingTimeNotBuckleUp); | |||||
writer.WriteByte(value.PhotographsNotBuckleUp); | |||||
writer.WriteByte(value.PictureIntervalNotBuckleUp); | |||||
writer.WriteByte(value.ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure); | |||||
writer.WriteByte(value.VideoRecordingTimeInfraredSunglassesBlockingFailure); | |||||
writer.WriteByte(value.PhotographsInfraredSunglassesBlockingFailure); | |||||
writer.WriteByte(value.PictureIntervalInfraredSunglassesBlockingFailure); | |||||
writer.WriteByte(value.ClassifiedSpeedThresholdDoubleHanderOff); | |||||
writer.WriteByte(value.VideoRecordingTimeDoubleHanderOff); | |||||
writer.WriteByte(value.PhotographsDoubleHanderOff); | |||||
writer.WriteByte(value.PictureIntervalDoubleHanderOff); | |||||
writer.WriteByte(value.ClassifiedSpeedThresholdPlayMobile); | |||||
writer.WriteByte(value.VideoRecordingTimePlayMobile); | |||||
writer.WriteByte(value.PhotographsPlayMobile); | |||||
writer.WriteByte(value.PictureIntervalPlayMobile); | |||||
writer.WriteArray(value.Retain); | writer.WriteArray(value.Retain); | ||||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); | writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); | ||||
} | } | ||||
@@ -111,7 +111,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); | JT808_0x8103_0xF366 value = new JT808_0x8103_0xF366(); | ||||
value.ParamId = reader.ReadUInt32(); | value.ParamId = reader.ReadUInt32(); | ||||
value.ParamLength = reader.ReadByte(); | value.ParamLength = reader.ReadByte(); | ||||
value.TyreSpecificationType = reader.ReadString(12); | |||||
value.TyreSpecificationType = reader.ReadASCII(12); | |||||
value.TyrePressureUnit = reader.ReadUInt16(); | value.TyrePressureUnit = reader.ReadUInt16(); | ||||
value.NormalFetalPressure = reader.ReadUInt16(); | value.NormalFetalPressure = reader.ReadUInt16(); | ||||
value.ThresholdUnbalancedTirePressure = reader.ReadUInt16(); | value.ThresholdUnbalancedTirePressure = reader.ReadUInt16(); | ||||
@@ -134,7 +134,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||||
{ | { | ||||
writer.WriteUInt32(value.ParamId); | writer.WriteUInt32(value.ParamId); | ||||
writer.Skip(1, out int ParamLengthPosition); | writer.Skip(1, out int ParamLengthPosition); | ||||
writer.WriteString(value.TyreSpecificationType); | |||||
writer.WriteASCII(value.TyreSpecificationType); | |||||
writer.WriteUInt16(value.TyrePressureUnit); | writer.WriteUInt16(value.TyrePressureUnit); | ||||
writer.WriteUInt16(value.NormalFetalPressure); | writer.WriteUInt16(value.NormalFetalPressure); | ||||
writer.WriteUInt16(value.ThresholdUnbalancedTirePressure); | writer.WriteUInt16(value.ThresholdUnbalancedTirePressure); | ||||
@@ -12,7 +12,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Metadata | |||||
/// <summary> | /// <summary> | ||||
/// 胎压报警位置 | /// 胎压报警位置 | ||||
/// </summary> | /// </summary> | ||||
public byte TirePressureAlarmPosition { get; set; } | |||||
public ushort TirePressureAlarmPosition { get; set; } | |||||
/// <summary> | /// <summary> | ||||
/// 报警/事件类型 | /// 报警/事件类型 | ||||
/// </summary> | /// </summary> | ||||