@@ -1831,16 +1831,6 @@ | |||
文件上传指令 | |||
</summary> | |||
</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"> | |||
<summary> | |||
服务器IP地址服务 | |||
@@ -1893,12 +1883,12 @@ | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.BeginTime"> | |||
<summary> | |||
起始时间 | |||
起始时间 BCD[6] | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.EndTime"> | |||
<summary> | |||
结束时间 | |||
结束时间 BCD[6] | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.JT1078.MessageBody.JT808_0x9206.AlarmFlag"> | |||
@@ -1926,30 +1916,6 @@ | |||
任务执行条件 | |||
</summary> | |||
</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"> | |||
<summary> | |||
文件上传控制 | |||
@@ -71,13 +71,13 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||
VehicleState = 19 | |||
}); | |||
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | |||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106653000000010C1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506020400010003000500020900060008000A0007", hex); | |||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106655000000010C1100070000000D0000000E1912111831000013343434343434340000000000000000000000000000000000000000000000191210183100030205060200040001000300050002000900060008000A0007", hex); | |||
} | |||
[Fact] | |||
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); | |||
JT808_0x0200_0x66 jT808_0X0200_0X66 = value as JT808_0x0200_0x66; | |||
Assert.Equal(1u, jT808_0X0200_0X66.AlarmId); | |||
@@ -111,7 +111,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||
[Fact] | |||
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, | |||
TerminalId = "4444444", | |||
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"), | |||
Altitude = 7, | |||
AlarmLevel = 8, | |||
AlarmOrEventType = 9, | |||
FlagState = 12, | |||
FlagState = 12, | |||
Latitude = 13, | |||
Longitude = 14, | |||
Speed = 17, | |||
VehicleState = 19 | |||
}); | |||
var hex = JT808Serializer.Serialize(jT808UploadLocationRequest).ToHexString(); | |||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106742000000010C09081100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506", hex); | |||
Assert.Equal("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506", hex); | |||
} | |||
[Fact] | |||
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); | |||
JT808_0x0200_0x67 jT808_0X0200_0X67 = value as JT808_0x0200_0x67; | |||
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-11 18:31:00"), jT808_0X0200_0X67.AlarmTime); | |||
Assert.Equal(7, jT808_0X0200_0X67.Altitude); | |||
Assert.Equal(8, jT808_0X0200_0X67.AlarmLevel); | |||
Assert.Equal(9, jT808_0X0200_0X67.AlarmOrEventType); | |||
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(13, jT808_0X0200_0X67.Latitude); | |||
Assert.Equal(14, jT808_0X0200_0X67.Longitude); | |||
@@ -86,7 +84,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||
[Fact] | |||
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, | |||
FrequentChannelChangeAlarmPhotos=16, | |||
FrequentLaneChangeAlarmInterval=17, | |||
GradedSpeedThresholdLaneDeviationAlarm=18, | |||
GradedSpeedThresholdLaneDepartureAlarm=18, | |||
HierarchicalSpeedThresholdForwardCollisionWarning=19, | |||
HierarchicalSpeedThresholdFrequentChannelChangeAlarm=20, | |||
HierarchicalSpeedThresholdObstacleAlarm=21, | |||
@@ -70,17 +70,27 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||
VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm=42, | |||
VideoRecordingTimeBeforeAndAfterObstacleAlarm=43, | |||
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(); | |||
Assert.Equal("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304", hex); | |||
Assert.Equal("010000F36440052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A24252706072021323334352E2F303101020304", hex); | |||
} | |||
[Fact] | |||
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; | |||
Assert.Equal(1, jT808_0X8103_0XF364.ActiveDistancePhotographyDistanceInterval); | |||
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(16, jT808_0X8103_0XF364.FrequentChannelChangeAlarmPhotos); | |||
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(20, jT808_0X8103_0XF364.HierarchicalSpeedThresholdFrequentChannelChangeAlarm); | |||
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(44, jT808_0X8103_0XF364.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm); | |||
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); | |||
} | |||
[Fact] | |||
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, | |||
FatigueDrivingAlarmPhotographInterval=56, | |||
GradedSpeedThresholdFatigueDrivingAlarm=57, | |||
PhotographsAbnormalDrivingBehavior=58, | |||
PictureIntervalAbnormalDrivingBehavior=59, | |||
Reserve=new byte[]{1,2,3 }, | |||
@@ -59,17 +60,42 @@ namespace JT808.Protocol.Extensions.YueBiao.Test | |||
VideoRecordingTimeAbnormalDrivingBehavior=63, | |||
VideoRecordingTimeBeforeAndAfterCallAlarm=64, | |||
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(); | |||
Assert.Equal("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506", hex); | |||
Assert.Equal("010000F36542052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D32553435433F3A3B36444D4E4F50494A4B4C45464748515253540506", hex); | |||
} | |||
[Fact] | |||
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; | |||
Assert.Equal(1, jT808_0X8103_0XF365.ActiveDistancePhotographyDistanceInterval); | |||
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(65, jT808_0X8103_0XF365.VideoRecordingTimeBeforeAndAfterFatigueDrivingAlarm); | |||
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); | |||
} | |||
[Fact] | |||
public void Json() | |||
{ | |||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes()); | |||
var json = JT808Serializer.Analyze<JT808_0x8103>("010000F36542052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D32553435433F3A3B36444D4E4F50494A4B4C45464748515253540506".ToHexBytes()); | |||
} | |||
} | |||
} |
@@ -307,6 +307,16 @@ | |||
附加信息ID 盲区监测系统报警信息 | |||
</summary> | |||
</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"> | |||
<summary> | |||
高级驾驶辅助系统参数设置 | |||
@@ -400,7 +410,7 @@ | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x64.RoadSignIdentificationData"> | |||
<summary> | |||
道路标志识别类型 | |||
道路标志识别数据 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x0200_0x64.Speed"> | |||
@@ -696,11 +706,6 @@ | |||
报警/事件类型 | |||
</summary> | |||
</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"> | |||
<summary> | |||
车速 | |||
@@ -762,6 +767,94 @@ | |||
<param name="value"></param> | |||
<param name="config"></param> | |||
</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"> | |||
<summary> | |||
透传数据 | |||
@@ -1241,7 +1334,7 @@ | |||
频繁变道报警拍照间隔 | |||
</summary> | |||
</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> | |||
@@ -1313,12 +1406,12 @@ | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VehicleDistanceMonitoringAlarmDistanceThreshold"> | |||
<summary> | |||
车距监控报警距离阈值 | |||
车距过近报警距离阈值 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold"> | |||
<summary> | |||
车距监控报警分级速度阈值 | |||
车距过近报警分级速度阈值 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF364.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity"> | |||
@@ -1346,6 +1439,46 @@ | |||
道路标志识别拍照间隔 | |||
</summary> | |||
</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"> | |||
<summary> | |||
保留字段 | |||
@@ -1522,17 +1655,27 @@ | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdDistractedDrivingAlarm"> | |||
<summary> | |||
分神驾驶报警分级车速阈值 | |||
不目视前方报警分级车速阈值 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm"> | |||
<summary> | |||
不目视前方报警前后视频录制时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DistractedDrivingAlarmPhotography"> | |||
<summary> | |||
分神驾驶报警拍照张数 | |||
不目视前方报警拍照张数 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DistractedDrivingAlarmPhotographyInterval"> | |||
<summary> | |||
分神驾驶报警拍照间隔时间 | |||
不目视前方报警拍照间隔时间 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.ClassifiedSpeedThresholdAbnormalDrivingBehavior"> | |||
<summary> | |||
驾驶行为异常分级车速阈值 | |||
</summary> | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.VideoRecordingTimeAbnormalDrivingBehavior"> | |||
@@ -1552,9 +1695,86 @@ | |||
</member> | |||
<member name="P:JT808.Protocol.Extensions.YueBiao.MessageBody.JT808_0x8103_0xF365.DriverIdentificationTrigger"> | |||
<summary> | |||
驾驶员身份识别触发 | |||
驾驶员身份识别触发方式 | |||
</summary> | |||
</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"> | |||
<summary> | |||
保留字段 | |||
@@ -26,6 +26,14 @@ namespace JT808.Protocol.Extensions.YueBiao | |||
/// </summary> | |||
public const byte JT808_0X0200_0x67 = 0x67; | |||
/// <summary> | |||
/// 附加信息ID 安装信息异常 | |||
/// </summary> | |||
public const byte JT808_0X0200_0xF1 = 0xF1; | |||
/// <summary> | |||
/// 附加信息ID 算法异常信息 | |||
/// </summary> | |||
public const byte JT808_0X0200_0xF2 = 0xF2; | |||
/// <summary> | |||
/// 高级驾驶辅助系统参数设置 | |||
/// </summary> | |||
public const uint JT808_0X8103_0xF364 = 0xF364; | |||
@@ -56,7 +56,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
/// </summary> | |||
public byte RoadSignIdentificationType { get; set; } | |||
/// <summary> | |||
/// 道路标志识别类型 | |||
/// 道路标志识别数据 | |||
/// </summary> | |||
public byte RoadSignIdentificationData { get; set; } | |||
/// <summary> | |||
@@ -227,6 +227,14 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
{ | |||
roadSignIdentificationType = "限重标志"; | |||
} | |||
else if (value.RoadSignIdentificationType == 0x04) | |||
{ | |||
roadSignIdentificationType = "禁行标志"; | |||
} | |||
else if (value.RoadSignIdentificationType == 0x05) | |||
{ | |||
roadSignIdentificationType = "禁停标志"; | |||
} | |||
writer.WriteNumber($"[{value.RoadSignIdentificationType.ReadNumber()}]道路标志识别类型-{roadSignIdentificationType}-{roadSignIdentificationTypeString}", value.RoadSignIdentificationType); | |||
value.RoadSignIdentificationData = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.RoadSignIdentificationData.ReadNumber()}]道路标志识别数据", value.RoadSignIdentificationData); | |||
@@ -138,12 +138,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
value.AlarmIdentification.AttachCount = reader.ReadByte(); | |||
value.AlarmIdentification.Retain1 = 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(); | |||
writer.WriteNumber($"[{value.AlarmOrEventCount.ReadNumber()}]报警_事件列表总数", value.AlarmOrEventCount); | |||
if (value.AlarmOrEventCount > 0) | |||
@@ -153,67 +147,29 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
{ | |||
writer.WriteStartObject(); | |||
AlarmOrEventProperty item = new AlarmOrEventProperty(); | |||
item.TirePressureAlarmPosition = reader.ReadByte(); | |||
item.TirePressureAlarmPosition = reader.ReadUInt16(); | |||
writer.WriteNumber($"[{item.TirePressureAlarmPosition.ReadNumber()}]胎压报警位置", item.TirePressureAlarmPosition); | |||
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(); | |||
writer.WriteNumber($"[{item.TirePressure.ReadNumber()}]胎压Kpa", item.TirePressure); | |||
item.TireTemperature = reader.ReadUInt16(); | |||
@@ -260,7 +216,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
for (int i = 0; i < value.AlarmOrEventCount; i++) | |||
{ | |||
AlarmOrEventProperty alarmOrEventProperty = new AlarmOrEventProperty(); | |||
alarmOrEventProperty.TirePressureAlarmPosition = reader.ReadByte(); | |||
alarmOrEventProperty.TirePressureAlarmPosition = reader.ReadUInt16(); | |||
alarmOrEventProperty.AlarmOrEventType = reader.ReadUInt16(); | |||
alarmOrEventProperty.TirePressure = reader.ReadUInt16(); | |||
alarmOrEventProperty.TireTemperature = reader.ReadUInt16(); | |||
@@ -303,7 +259,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteByte((byte)value.AlarmOrEvents.Count); | |||
foreach (var item in value.AlarmOrEvents) | |||
{ | |||
writer.WriteByte(item.TirePressureAlarmPosition); | |||
writer.WriteUInt16(item.TirePressureAlarmPosition); | |||
writer.WriteUInt16(item.AlarmOrEventType); | |||
writer.WriteUInt16(item.TirePressure); | |||
writer.WriteUInt16(item.TireTemperature); | |||
@@ -36,10 +36,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
/// </summary> | |||
public byte AlarmOrEventType{ get; set; } | |||
/// <summary> | |||
/// 报警/事件类型 | |||
/// </summary> | |||
public byte AlarmLevel { get; set; } | |||
/// <summary> | |||
/// 车速 | |||
/// </summary> | |||
public byte Speed { get; set; } | |||
@@ -104,72 +100,16 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
switch (value.AlarmOrEventType) | |||
{ | |||
case 0x01: | |||
alarmOrEventTypeString = "前向碰撞报警"; | |||
alarmOrEventTypeString = "后方接近报警"; | |||
break; | |||
case 0x02: | |||
alarmOrEventTypeString = "车道偏离报警"; | |||
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($"[{value.AlarmOrEventType.ReadNumber()}]报警_事件类型-{alarmOrEventTypeString}", value.AlarmOrEventType); | |||
value.AlarmLevel = reader.ReadByte(); | |||
string alarmLevelString = "未知"; | |||
switch (value.AlarmLevel) | |||
{ | |||
case 0x01: | |||
alarmLevelString = "一级报警"; | |||
break; | |||
case 0x02: | |||
alarmLevelString = "二级报警"; | |||
alarmOrEventTypeString = "右侧后方接近报警"; | |||
break; | |||
} | |||
writer.WriteNumber($"[{value.AlarmLevel.ReadNumber()}]报警级别-{alarmLevelString}", value.AlarmLevel); | |||
writer.WriteString($"[{value.AlarmOrEventType.ReadNumber()}]报警_事件类型", alarmOrEventTypeString); | |||
value.Speed = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed); | |||
value.Altitude = reader.ReadUInt16(); | |||
@@ -230,7 +170,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
value.AlarmId = reader.ReadUInt32(); | |||
value.FlagState = reader.ReadByte(); | |||
value.AlarmOrEventType = reader.ReadByte(); | |||
value.AlarmLevel = reader.ReadByte(); | |||
value.Speed = reader.ReadByte(); | |||
value.Altitude = reader.ReadUInt16(); | |||
value.Latitude = (int)reader.ReadUInt32(); | |||
@@ -261,7 +200,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteUInt32(value.AlarmId); | |||
writer.WriteByte(value.FlagState); | |||
writer.WriteByte(value.AlarmOrEventType); | |||
writer.WriteByte(value.AlarmLevel); | |||
writer.WriteByte(value.Speed); | |||
writer.WriteUInt16(value.Altitude); | |||
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 System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Text.Json; | |||
@@ -55,7 +56,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteNumber($"[{item.WorkingCondition.ReadNumber()}]工作状态-{workingCondition.ToString()}", item.WorkingCondition); | |||
item.AlarmStatus = reader.ReadUInt32(); | |||
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.WriteString($"[bit12~bit31]预留", alarmStatusBits.Slice(12).ToString()); | |||
writer.WriteString($"]bit11]定位模块异常", alarmStatusBits[11].ToString()); | |||
@@ -111,17 +111,17 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
item.USBID = reader.ReadByte(); | |||
item.MessageLength = reader.ReadByte(); | |||
item.CompantNameLength = reader.ReadByte(); | |||
item.CompantName = reader.ReadString(item.CompantNameLength); | |||
item.CompantName = reader.ReadASCII(item.CompantNameLength); | |||
item.ProductModelLength = reader.ReadByte(); | |||
item.ProductModel = reader.ReadString(item.ProductModelLength); | |||
item.ProductModel = reader.ReadASCII(item.ProductModelLength); | |||
item.HardwareVersionNumberLength = reader.ReadByte(); | |||
item.HardwareVersionNumber = reader.ReadString(item.HardwareVersionNumberLength); | |||
item.HardwareVersionNumber = reader.ReadASCII(item.HardwareVersionNumberLength); | |||
item.SoftwareVersionNumberLength = reader.ReadByte(); | |||
item.SoftwareVersionNumber = reader.ReadString(item.SoftwareVersionNumberLength); | |||
item.SoftwareVersionNumber = reader.ReadASCII(item.SoftwareVersionNumberLength); | |||
item.DevicesIDLength = reader.ReadByte(); | |||
item.DevicesID = reader.ReadString(item.DevicesIDLength); | |||
item.DevicesID = reader.ReadASCII(item.DevicesIDLength); | |||
item.CustomerCodeLength = reader.ReadByte(); | |||
item.CustomerCode = reader.ReadString(item.CustomerCodeLength); | |||
item.CustomerCode = reader.ReadASCII(item.CustomerCodeLength); | |||
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 CompantNameLengthPosition); | |||
writer.WriteString(item.CompantName); | |||
writer.WriteASCII(item.CompantName); | |||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - CompantNameLengthPosition - 1), CompantNameLengthPosition); | |||
writer.Skip(1, out int ProductModelLengthPosition); | |||
writer.WriteString(item.ProductModel); | |||
writer.WriteASCII(item.ProductModel); | |||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ProductModelLengthPosition - 1), ProductModelLengthPosition); | |||
writer.Skip(1, out int HardwareVersionNumberLengthPosition); | |||
writer.WriteString(item.HardwareVersionNumber); | |||
writer.WriteASCII(item.HardwareVersionNumber); | |||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - HardwareVersionNumberLengthPosition - 1), HardwareVersionNumberLengthPosition); | |||
writer.Skip(1, out int SoftwareVersionNumberLengthPosition); | |||
writer.WriteString(item.SoftwareVersionNumber); | |||
writer.WriteASCII(item.SoftwareVersionNumber); | |||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - SoftwareVersionNumberLengthPosition - 1), SoftwareVersionNumberLengthPosition); | |||
writer.Skip(1, out int DevicesIDLengthPosition); | |||
writer.WriteString(item.DevicesID); | |||
writer.WriteASCII(item.DevicesID); | |||
writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - DevicesIDLengthPosition - 1), DevicesIDLengthPosition); | |||
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() - messageLengthPosition - 1), messageLengthPosition); | |||
@@ -4,6 +4,7 @@ using JT808.Protocol.Interfaces; | |||
using JT808.Protocol.MessageBody; | |||
using JT808.Protocol.MessagePack; | |||
using System; | |||
using System.Linq; | |||
using System.Text.Json; | |||
namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
@@ -119,7 +120,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
/// <summary> | |||
/// 车道偏离报警分级速度阈值 | |||
/// </summary> | |||
public byte GradedSpeedThresholdLaneDeviationAlarm { get; set; } | |||
public byte GradedSpeedThresholdLaneDepartureAlarm { get; set; } | |||
/// <summary> | |||
/// 车道偏离报警前后视频录制时间 | |||
/// </summary> | |||
@@ -173,11 +174,11 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
/// </summary> | |||
public byte PedestrianCollisionAlarmInterval { get; set; } | |||
/// <summary> | |||
/// 车距监控报警距离阈值 | |||
/// 车距过近报警距离阈值 | |||
/// </summary> | |||
public byte VehicleDistanceMonitoringAlarmDistanceThreshold { get; set; } | |||
/// <summary> | |||
/// 车距监控报警分级速度阈值 | |||
/// 车距过近报警分级速度阈值 | |||
/// </summary> | |||
public byte VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold { get; set; } | |||
/// <summary> | |||
@@ -201,6 +202,38 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
/// </summary> | |||
public byte RoadSignRecognitionPhotographsInterval { get; set; } | |||
/// <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> | |||
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); | |||
value.AlarmEnable = reader.ReadUInt32(); | |||
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("[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("[bit12~bit15]道路标识超限报警", alarmEnableBits.Slice(12, 4).ToString()); | |||
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' ? "关闭" : "打开"); | |||
@@ -261,12 +297,12 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteEndObject(); | |||
value.EventEnable = reader.ReadUInt32(); | |||
writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable); | |||
var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').AsSpan(); | |||
writer.WriteStartObject("事件使能对象"); | |||
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("[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(); | |||
value.Placeholder1 = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.Placeholder1.ReadNumber()}]预留字段", value.Placeholder1); | |||
@@ -292,8 +328,8 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteNumber($"[{value.FrequentChannelChangeAlarmPhotos.ReadNumber()}]频繁变道报警拍照张数", value.FrequentChannelChangeAlarmPhotos); | |||
value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.FrequentLaneChangeAlarmInterval.ReadNumber()}]频繁变道报警拍照间隔", value.FrequentLaneChangeAlarmInterval); | |||
value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.GradedSpeedThresholdLaneDeviationAlarm.ReadNumber()}]车道偏离报警分级速度阈值", value.GradedSpeedThresholdLaneDeviationAlarm); | |||
value.GradedSpeedThresholdLaneDepartureAlarm = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.GradedSpeedThresholdLaneDepartureAlarm.ReadNumber()}]车道偏离报警分级速度阈值", value.GradedSpeedThresholdLaneDepartureAlarm); | |||
value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm.ReadNumber()}]车道偏离报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); | |||
value.LaneDepartureAlarmPhoto = reader.ReadByte(); | |||
@@ -321,9 +357,9 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
value.PedestrianCollisionAlarmInterval = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.PedestrianCollisionAlarmInterval.ReadNumber()}]行人碰撞报警拍照间隔", value.PedestrianCollisionAlarmInterval); | |||
value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAlarmDistanceThreshold.ReadNumber()}]车距监控报警距离阈值", value.VehicleDistanceMonitoringAlarmDistanceThreshold); | |||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAlarmDistanceThreshold.ReadNumber()}]车距过近报警距离阈值", value.VehicleDistanceMonitoringAlarmDistanceThreshold); | |||
value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold.ReadNumber()}]车距监控报警分级速度阈值", value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); | |||
writer.WriteNumber($"[{value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold.ReadNumber()}]车距过近报警分级速度阈值", value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold); | |||
value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity.ReadNumber()}]车距过近报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity); | |||
value.AlarmPhotoVehicleCloseDistance = reader.ReadByte(); | |||
@@ -334,6 +370,24 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteNumber($"[{value.RoadSignRecognitionPhotographs.ReadNumber()}]道路标志识别拍照张数", value.RoadSignRecognitionPhotographs); | |||
value.RoadSignRecognitionPhotographsInterval = reader.ReadByte(); | |||
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(); | |||
writer.WriteString("保留字段", value.Placeholder2.ToHexString()); | |||
} | |||
@@ -371,7 +425,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte(); | |||
value.FrequentChannelChangeAlarmPhotos = reader.ReadByte(); | |||
value.FrequentLaneChangeAlarmInterval = reader.ReadByte(); | |||
value.GradedSpeedThresholdLaneDeviationAlarm = reader.ReadByte(); | |||
value.GradedSpeedThresholdLaneDepartureAlarm = reader.ReadByte(); | |||
value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte(); | |||
value.LaneDepartureAlarmPhoto = reader.ReadByte(); | |||
value.LaneDepartureAlarmPhotoInterval = reader.ReadByte(); | |||
@@ -392,6 +446,17 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte(); | |||
value.RoadSignRecognitionPhotographs = 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(); | |||
return value; | |||
} | |||
@@ -428,7 +493,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm); | |||
writer.WriteByte(value.FrequentChannelChangeAlarmPhotos); | |||
writer.WriteByte(value.FrequentLaneChangeAlarmInterval); | |||
writer.WriteByte(value.GradedSpeedThresholdLaneDeviationAlarm); | |||
writer.WriteByte(value.GradedSpeedThresholdLaneDepartureAlarm); | |||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm); | |||
writer.WriteByte(value.LaneDepartureAlarmPhoto); | |||
writer.WriteByte(value.LaneDepartureAlarmPhotoInterval); | |||
@@ -449,6 +514,14 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteByte(value.AlarmPhotoVehicleCloseDistanceInterval); | |||
writer.WriteByte(value.RoadSignRecognitionPhotographs); | |||
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.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition); | |||
} | |||
@@ -4,6 +4,7 @@ using JT808.Protocol.Interfaces; | |||
using JT808.Protocol.MessageBody; | |||
using JT808.Protocol.MessagePack; | |||
using System; | |||
using System.Linq; | |||
using System.Text.Json; | |||
namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
@@ -126,18 +127,26 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
/// </summary> | |||
public byte SmokingAlarmPhotographsDriverFaceCharacteristicsInterval { get; set; } | |||
/// <summary> | |||
/// 分神驾驶报警分级车速阈值 | |||
/// 不目视前方报警分级车速阈值 | |||
/// </summary> | |||
public byte ClassifiedSpeedThresholdDistractedDrivingAlarm { get; set; } | |||
/// <summary> | |||
/// 分神驾驶报警拍照张数 | |||
/// 不目视前方报警前后视频录制时间 | |||
/// </summary> | |||
public byte VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm { get; set; } | |||
/// <summary> | |||
/// 不目视前方报警拍照张数 | |||
/// </summary> | |||
public byte DistractedDrivingAlarmPhotography{ get; set; } | |||
/// <summary> | |||
/// 分神驾驶报警拍照间隔时间 | |||
/// 不目视前方报警拍照间隔时间 | |||
/// </summary> | |||
public byte DistractedDrivingAlarmPhotographyInterval { get; set; } | |||
/// <summary> | |||
/// 驾驶行为异常分级车速阈值 | |||
/// </summary> | |||
public byte ClassifiedSpeedThresholdAbnormalDrivingBehavior { get; set; } | |||
/// <summary> | |||
/// 驾驶行为异常视频录制时间 | |||
/// </summary> | |||
public byte VideoRecordingTimeAbnormalDrivingBehavior{ get; set; } | |||
@@ -150,10 +159,77 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
/// </summary> | |||
public byte PictureIntervalAbnormalDrivingBehavior{ get; set; } | |||
/// <summary> | |||
/// 驾驶员身份识别触发 | |||
/// 驾驶员身份识别触发方式 | |||
/// </summary> | |||
public byte DriverIdentificationTrigger { get; set; } | |||
/// <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> | |||
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); | |||
value.AlarmEnable = reader.ReadUInt32(); | |||
writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable); | |||
var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').AsSpan(); | |||
writer.WriteStartObject("报警使能对象"); | |||
writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30, 2).ToString()); | |||
writer.WriteString("[bit17~bit29]用户自定义", alarmEnableBits.Slice(17, 13).ToString()); | |||
writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit12~bit15]道路标识超限报警", alarmEnableBits.Slice(12, 4).ToString()); | |||
writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit8]行人碰撞一级报警", alarmEnableBits[8] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit7]前向碰撞二级报警", alarmEnableBits[7] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit6]前向碰撞一级报警", alarmEnableBits[6] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit5]车道偏离二级报警", alarmEnableBits[5] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit4]车道偏离一级报警", alarmEnableBits[4] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit3]频繁变道二级报警", alarmEnableBits[3] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit2]频繁变道一级报警", alarmEnableBits[2] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit1]障碍检测二级报警", alarmEnableBits[1] == '0' ? "关闭" : "打开"); | |||
writer.WriteString("[bit0]障碍检测一级报警", alarmEnableBits[0] == '0' ? "关闭" : "打开"); | |||
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(); | |||
value.EventEnable = reader.ReadUInt32(); | |||
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("[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(); | |||
value.TimeIntervalSmokingAlarmJudgment = reader.ReadUInt16(); | |||
writer.WriteNumber($"[{value.TimeIntervalSmokingAlarmJudgment.ReadNumber()}]吸烟报警判断时间间隔", value.TimeIntervalSmokingAlarmJudgment); | |||
@@ -253,10 +335,14 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteNumber($"[{value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval.ReadNumber()}]抽烟报警拍驾驶员面部特征照片间隔时间", value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); | |||
value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdDistractedDrivingAlarm.ReadNumber()}]分神驾驶报警分级车速阈值", value.ClassifiedSpeedThresholdDistractedDrivingAlarm); | |||
value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm.ReadNumber()}]不目视前方报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm); | |||
value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotography.ReadNumber()}]分神驾驶报警拍照张数", value.DistractedDrivingAlarmPhotography); | |||
value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.DistractedDrivingAlarmPhotographyInterval.ReadNumber()}]分神驾驶报警拍照间隔时间", value.DistractedDrivingAlarmPhotographyInterval); | |||
value.ClassifiedSpeedThresholdAbnormalDrivingBehavior = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.ClassifiedSpeedThresholdAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常分级车速阈值", value.ClassifiedSpeedThresholdAbnormalDrivingBehavior); | |||
value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.VideoRecordingTimeAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常视频录制时间", value.VideoRecordingTimeAbnormalDrivingBehavior); | |||
value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | |||
@@ -264,7 +350,46 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
value.PictureIntervalAbnormalDrivingBehavior = reader.ReadByte(); | |||
writer.WriteNumber($"[{value.PictureIntervalAbnormalDrivingBehavior.ReadNumber()}]驾驶行为异常拍照间隔", value.PictureIntervalAbnormalDrivingBehavior); | |||
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(); | |||
writer.WriteString("保留字段", value.Retain.ToHexString()); | |||
} | |||
@@ -306,12 +431,36 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
value.SmokingAlarmPhotographsDriverFaceCharacteristics = reader.ReadByte(); | |||
value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval = reader.ReadByte(); | |||
value.ClassifiedSpeedThresholdDistractedDrivingAlarm = reader.ReadByte(); | |||
value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm = reader.ReadByte(); | |||
value.DistractedDrivingAlarmPhotography = reader.ReadByte(); | |||
value.DistractedDrivingAlarmPhotographyInterval = reader.ReadByte(); | |||
value.ClassifiedSpeedThresholdAbnormalDrivingBehavior = reader.ReadByte(); | |||
value.VideoRecordingTimeAbnormalDrivingBehavior = reader.ReadByte(); | |||
value.PhotographsAbnormalDrivingBehavior = reader.ReadByte(); | |||
value.PictureIntervalAbnormalDrivingBehavior = 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(); | |||
return value; | |||
} | |||
@@ -352,12 +501,38 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristics); | |||
writer.WriteByte(value.SmokingAlarmPhotographsDriverFaceCharacteristicsInterval); | |||
writer.WriteByte(value.ClassifiedSpeedThresholdDistractedDrivingAlarm); | |||
writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm); | |||
writer.WriteByte(value.DistractedDrivingAlarmPhotography); | |||
writer.WriteByte(value.DistractedDrivingAlarmPhotographyInterval); | |||
writer.WriteByte(value.ClassifiedSpeedThresholdAbnormalDrivingBehavior); | |||
writer.WriteByte(value.VideoRecordingTimeAbnormalDrivingBehavior); | |||
writer.WriteByte(value.PhotographsAbnormalDrivingBehavior); | |||
writer.WriteByte(value.PictureIntervalAbnormalDrivingBehavior); | |||
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.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(); | |||
value.ParamId = reader.ReadUInt32(); | |||
value.ParamLength = reader.ReadByte(); | |||
value.TyreSpecificationType = reader.ReadString(12); | |||
value.TyreSpecificationType = reader.ReadASCII(12); | |||
value.TyrePressureUnit = reader.ReadUInt16(); | |||
value.NormalFetalPressure = reader.ReadUInt16(); | |||
value.ThresholdUnbalancedTirePressure = reader.ReadUInt16(); | |||
@@ -134,7 +134,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody | |||
{ | |||
writer.WriteUInt32(value.ParamId); | |||
writer.Skip(1, out int ParamLengthPosition); | |||
writer.WriteString(value.TyreSpecificationType); | |||
writer.WriteASCII(value.TyreSpecificationType); | |||
writer.WriteUInt16(value.TyrePressureUnit); | |||
writer.WriteUInt16(value.NormalFetalPressure); | |||
writer.WriteUInt16(value.ThresholdUnbalancedTirePressure); | |||
@@ -12,7 +12,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Metadata | |||
/// <summary> | |||
/// 胎压报警位置 | |||
/// </summary> | |||
public byte TirePressureAlarmPosition { get; set; } | |||
public ushort TirePressureAlarmPosition { get; set; } | |||
/// <summary> | |||
/// 报警/事件类型 | |||
/// </summary> | |||