diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.xml b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.xml
index 72d78ad..bf071bf 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.xml
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.xml
@@ -1831,16 +1831,6 @@
文件上传指令
-
-
- 文件上传指令
-
-
-
-
- 0x9206
-
-
服务器IP地址服务
@@ -1893,12 +1883,12 @@
- 起始时间
+ 起始时间 BCD[6]
- 结束时间
+ 结束时间 BCD[6]
@@ -1926,30 +1916,6 @@
任务执行条件
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
文件上传控制
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x66_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x66_Test.cs
index e81113b..c452f25 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x66_Test.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x66_Test.cs
@@ -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("000000010000000200BA7F0E07E4F11C0028003C00001807151010106653000000010C1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506020400010003000500020900060008000A0007".ToHexBytes());
+ var jT808UploadLocationRequest = JT808Serializer.Deserialize("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("000000010000000200BA7F0E07E4F11C0028003C00001807151010106653000000010C1100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506020400010003000500020900060008000A0007".ToHexBytes());
+ var json = JT808Serializer.Analyze("000000010000000200BA7F0E07E4F11C0028003C00001807151010106655000000010C1100070000000D0000000E1912111831000013343434343434340000000000000000000000000000000000000000000000191210183100030205060200040001000300050002000900060008000A0007".ToHexBytes());
}
}
}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x67_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x67_Test.cs
index 3322182..e63c47d 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x67_Test.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x67_Test.cs
@@ -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("000000010000000200BA7F0E07E4F11C0028003C00001807151010106742000000010C09081100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes());
+ var jT808UploadLocationRequest = JT808Serializer.Deserialize("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("000000010000000200BA7F0E07E4F11C0028003C00001807151010106742000000010C09081100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes());
+ var json = JT808Serializer.Analyze("000000010000000200BA7F0E07E4F11C0028003C00001807151010106741000000010C091100070000000D0000000E191211183100001334343434343434000000000000000000000000000000000000000000000019121018310003020506".ToHexBytes());
}
}
}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF364_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF364_Test.cs
index 967c36b..aaf7b3e 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF364_Test.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF364_Test.cs
@@ -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("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304".ToHexBytes());
+ var jT808UploadLocationRequest = JT808Serializer.Deserialize("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("010000F36438052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A2425270607202101020304".ToHexBytes());
+ var json = JT808Serializer.Analyze("010000F36440052D030002000122231D26000000040000000A1E09152B08180F0E14291011122A16170D13280C0B1C192C1B1A24252706072021323334352E2F303101020304".ToHexBytes());
}
}
}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF365_Test.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF365_Test.cs
index 305d9e4..335accd 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF365_Test.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF365_Test.cs
@@ -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("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes());
+ var jT808UploadLocationRequest = JT808Serializer.Deserialize("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("010000F3652F052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D3234353F3A3B360506".ToHexBytes());
+ var json = JT808Serializer.Analyze("010000F36542052D030002000122231D26000000040000000A003E002E0102033941373831402F3033423C3D32553435433F3A3B36444D4E4F50494A4B4C45464748515253540506".ToHexBytes());
}
}
}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808.Protocol.Extensions.YueBiao.xml b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808.Protocol.Extensions.YueBiao.xml
index 7d9fbee..bc5393b 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808.Protocol.Extensions.YueBiao.xml
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808.Protocol.Extensions.YueBiao.xml
@@ -307,6 +307,16 @@
附加信息ID 盲区监测系统报警信息
+
+
+ 附加信息ID 安装信息异常
+
+
+
+
+ 附加信息ID 算法异常信息
+
+
高级驾驶辅助系统参数设置
@@ -400,7 +410,7 @@
- 道路标志识别类型
+ 道路标志识别数据
@@ -696,11 +706,6 @@
报警/事件类型
-
-
- 报警/事件类型
-
-
车速
@@ -762,6 +767,94 @@
+
+
+ 安装异常信息
+
+
+
+
+ 安装异常信息附件ID
+
+
+
+
+ 算法异常信息长度
+
+
+
+
+ 厂家自定义
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 算法异常信息
+
+
+
+
+ 算法异常信息附件ID
+
+
+
+
+ 算法异常信息长度
+
+
+
+
+ 厂家自定义
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
透传数据
@@ -1241,7 +1334,7 @@
频繁变道报警拍照间隔
-
+
车道偏离报警分级速度阈值
@@ -1313,12 +1406,12 @@
- 车距监控报警距离阈值
+ 车距过近报警距离阈值
- 车距监控报警分级速度阈值
+ 车距过近报警分级速度阈值
@@ -1346,6 +1439,46 @@
道路标志识别拍照间隔
+
+
+ 实线变道报警分级速度阈值
+
+
+
+
+ 实线变道报警前后视频录制时间
+
+
+
+
+ 实线变道报警拍照张数
+
+
+
+
+ 实线变道报警拍照间隔
+
+
+
+
+ 车厢过道行人检测报警分级速度阈值
+
+
+
+
+ 车厢过道行人检测报警前后视频录制时间
+
+
+
+
+ 车厢过道行人检测报警拍照张数
+
+
+
+
+ 车厢过道行人检测报警拍照间隔
+
+
保留字段
@@ -1522,17 +1655,27 @@
- 分神驾驶报警分级车速阈值
+ 不目视前方报警分级车速阈值
+
+
+
+
+ 不目视前方报警前后视频录制时间
- 分神驾驶报警拍照张数
+ 不目视前方报警拍照张数
- 分神驾驶报警拍照间隔时间
+ 不目视前方报警拍照间隔时间
+
+
+
+
+ 驾驶行为异常分级车速阈值
@@ -1552,9 +1695,86 @@
- 驾驶员身份识别触发
+ 驾驶员身份识别触发方式
+
+
+ 摄像机遮挡报警分级车速阈值
+
+
+
+
+ 不系安全带报警分级车速阈值
+
+
+
+
+ 不系安全带报警前后视频录制时间
+
+
+
+
+ 不系安全带报警抓拍照片张数
+
+
+
+
+ 不系安全带报警拍照间隔
+
+
+
+
+ 红外墨镜阻断失效报警分级车速阈值
+
+
+
+
+ 红外墨镜阻断失效报警前后视频录制时间
+
+
+
+
+ 红外墨镜阻断失效报警抓拍照片张数
+
+
+
+
+ 红外墨镜阻断失效报警拍照间隔
+
+
+
+
+
+ 双脱把报警前后视频录制时间
+
+
+
+
+ 双脱把报警抓拍照片张数
+
+
+
+
+ 双脱把报警拍照间隔
+
+
+
+
+
+ 玩手机报警前后视频录制时间
+
+
+
+
+ 玩手机报警抓拍照片张数
+
+
+
+
+ 玩手机报警拍照间隔
+
+
保留字段
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808_YueBiao_Constants.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808_YueBiao_Constants.cs
index 7a21693..518f3c2 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808_YueBiao_Constants.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808_YueBiao_Constants.cs
@@ -26,6 +26,14 @@ namespace JT808.Protocol.Extensions.YueBiao
///
public const byte JT808_0X0200_0x67 = 0x67;
///
+ /// 附加信息ID 安装信息异常
+ ///
+ public const byte JT808_0X0200_0xF1 = 0xF1;
+ ///
+ /// 附加信息ID 算法异常信息
+ ///
+ public const byte JT808_0X0200_0xF2 = 0xF2;
+ ///
/// 高级驾驶辅助系统参数设置
///
public const uint JT808_0X8103_0xF364 = 0xF364;
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x64.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x64.cs
index d348ba9..77defdd 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x64.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x64.cs
@@ -56,7 +56,7 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody
///
public byte RoadSignIdentificationType { get; set; }
///
- /// 道路标志识别类型
+ /// 道路标志识别数据
///
public byte RoadSignIdentificationData { get; set; }
///
@@ -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);
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x66.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x66.cs
index ecb54da..1aa513e 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x66.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x66.cs
@@ -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);
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs
index a1dbec7..a727a21 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs
@@ -36,10 +36,6 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody
///
public byte AlarmOrEventType{ get; set; }
///
- /// 报警/事件类型
- ///
- public byte AlarmLevel { get; set; }
- ///
/// 车速
///
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);
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF1.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF1.cs
new file mode 100644
index 0000000..2582c97
--- /dev/null
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF1.cs
@@ -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
+{
+ ///
+ /// 安装异常信息
+ ///
+ public class JT808_0x0200_0xF1 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze, IJT808_2019_Version
+ {
+ ///
+ /// 安装异常信息附件ID
+ ///
+ public override byte AttachInfoId { get; set; } = JT808_YueBiao_Constants.JT808_0X0200_0xF1;
+ ///
+ /// 算法异常信息长度
+ ///
+ public override byte AttachInfoLength { get; set; } = 4;
+ ///
+ /// 厂家自定义
+ ///
+ public uint Retain { get; set; }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ 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);
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ 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;
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0xF1 value, IJT808Config config)
+ {
+ writer.WriteByte(value.AttachInfoId);
+ writer.WriteByte(value.AttachInfoLength);
+ writer.WriteUInt32(value.Retain);
+ }
+ }
+}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF2.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF2.cs
new file mode 100644
index 0000000..43c4263
--- /dev/null
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF2.cs
@@ -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
+{
+ ///
+ /// 算法异常信息
+ ///
+ public class JT808_0x0200_0xF2 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter, IJT808Analyze, IJT808_2019_Version
+ {
+ ///
+ /// 算法异常信息附件ID
+ ///
+ public override byte AttachInfoId { get; set; } = JT808_YueBiao_Constants.JT808_0X0200_0xF2;
+ ///
+ /// 算法异常信息长度
+ ///
+ public override byte AttachInfoLength { get; set; } = 4;
+ ///
+ /// 厂家自定义
+ ///
+ public uint Retain { get; set; }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ 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);
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ 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;
+ }
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0xF2 value, IJT808Config config)
+ {
+ writer.WriteByte(value.AttachInfoId);
+ writer.WriteByte(value.AttachInfoLength);
+ writer.WriteUInt32(value.Retain);
+ }
+ }
+}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF7.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF7.cs
index 3e1e6b4..d79615b 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF7.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF7.cs
@@ -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());
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF8.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF8.cs
index a8fbd49..18ff27a 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF8.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF8.cs
@@ -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);
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF364.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF364.cs
index fdb445f..74f600f 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF364.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF364.cs
@@ -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
///
/// 车道偏离报警分级速度阈值
///
- public byte GradedSpeedThresholdLaneDeviationAlarm { get; set; }
+ public byte GradedSpeedThresholdLaneDepartureAlarm { get; set; }
///
/// 车道偏离报警前后视频录制时间
///
@@ -173,11 +174,11 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody
///
public byte PedestrianCollisionAlarmInterval { get; set; }
///
- /// 车距监控报警距离阈值
+ /// 车距过近报警距离阈值
///
public byte VehicleDistanceMonitoringAlarmDistanceThreshold { get; set; }
///
- /// 车距监控报警分级速度阈值
+ /// 车距过近报警分级速度阈值
///
public byte VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold { get; set; }
///
@@ -201,6 +202,38 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody
///
public byte RoadSignRecognitionPhotographsInterval { get; set; }
///
+ /// 实线变道报警分级速度阈值
+ ///
+ public byte SolidLineChangeLanesAlarmClassificationSpeedThreshold { get; set; }
+ ///
+ /// 实线变道报警前后视频录制时间
+ ///
+ public byte VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm { get; set; }
+ ///
+ /// 实线变道报警拍照张数
+ ///
+ public byte SolidLineChangeLanesAlarmPhotographs { get; set; }
+ ///
+ /// 实线变道报警拍照间隔
+ ///
+ public byte SolidLineChangeLanesAlarmPhotoInterval { get; set; }
+ ///
+ /// 车厢过道行人检测报警分级速度阈值
+ ///
+ public byte CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold { get; set; }
+ ///
+ /// 车厢过道行人检测报警前后视频录制时间
+ ///
+ public byte VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm { get; set; }
+ ///
+ /// 车厢过道行人检测报警拍照张数
+ ///
+ public byte CarriageAislePassengerDetectionAlarmPhotographs { get; set; }
+ ///
+ /// 车厢过道行人检测报警拍照间隔
+ ///
+ public byte CarriageAislePassengerDetectionAlarmPhotoInterval { get; set; }
+ ///
/// 保留字段
///
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);
}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF365.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF365.cs
index d40729a..850d138 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF365.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF365.cs
@@ -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
///
public byte SmokingAlarmPhotographsDriverFaceCharacteristicsInterval { get; set; }
///
- /// 分神驾驶报警分级车速阈值
+ /// 不目视前方报警分级车速阈值
///
public byte ClassifiedSpeedThresholdDistractedDrivingAlarm { get; set; }
///
- /// 分神驾驶报警拍照张数
+ /// 不目视前方报警前后视频录制时间
+ ///
+ public byte VideoRecordingTimeBeforeAndAfterDistractedDrivingAlarm { get; set; }
+ ///
+ /// 不目视前方报警拍照张数
///
public byte DistractedDrivingAlarmPhotography{ get; set; }
///
- /// 分神驾驶报警拍照间隔时间
+ /// 不目视前方报警拍照间隔时间
///
public byte DistractedDrivingAlarmPhotographyInterval { get; set; }
///
+ /// 驾驶行为异常分级车速阈值
+ ///
+ public byte ClassifiedSpeedThresholdAbnormalDrivingBehavior { get; set; }
+ ///
/// 驾驶行为异常视频录制时间
///
public byte VideoRecordingTimeAbnormalDrivingBehavior{ get; set; }
@@ -150,10 +159,77 @@ namespace JT808.Protocol.Extensions.YueBiao.MessageBody
///
public byte PictureIntervalAbnormalDrivingBehavior{ get; set; }
///
- /// 驾驶员身份识别触发
+ /// 驾驶员身份识别触发方式
///
public byte DriverIdentificationTrigger { get; set; }
///
+ /// 摄像机遮挡报警分级车速阈值
+ ///
+ public byte ClassifiedSpeedThresholdCameraOcclusion { get; set; }
+
+ ///
+ /// 不系安全带报警分级车速阈值
+ ///
+ public byte ClassifiedSpeedThresholdNotBuckleUp { get; set; }
+ ///
+ /// 不系安全带报警前后视频录制时间
+ ///
+ public byte VideoRecordingTimeNotBuckleUp { get; set; }
+ ///
+ /// 不系安全带报警抓拍照片张数
+ ///
+ public byte PhotographsNotBuckleUp { get; set; }
+ ///
+ ///不系安全带报警拍照间隔
+ ///
+ public byte PictureIntervalNotBuckleUp { get; set; }
+ ///
+ /// 红外墨镜阻断失效报警分级车速阈值
+ ///
+ public byte ClassifiedSpeedThresholdInfraredSunglassesBlockingFailure { get; set; }
+ ///
+ /// 红外墨镜阻断失效报警前后视频录制时间
+ ///
+ public byte VideoRecordingTimeInfraredSunglassesBlockingFailure { get; set; }
+ ///
+ /// 红外墨镜阻断失效报警抓拍照片张数
+ ///
+ public byte PhotographsInfraredSunglassesBlockingFailure { get; set; }
+ ///
+ ///红外墨镜阻断失效报警拍照间隔
+ ///
+ public byte PictureIntervalInfraredSunglassesBlockingFailure { get; set; }
+ /// 双脱把报警分级车速阈值
+ ///
+ public byte ClassifiedSpeedThresholdDoubleHanderOff { get; set; }
+ ///
+ /// 双脱把报警前后视频录制时间
+ ///
+ public byte VideoRecordingTimeDoubleHanderOff { get; set; }
+ ///
+ /// 双脱把报警抓拍照片张数
+ ///
+ public byte PhotographsDoubleHanderOff { get; set; }
+ ///
+ ///双脱把报警拍照间隔
+ ///
+ public byte PictureIntervalDoubleHanderOff { get; set; }
+ ///玩手机报警分级车速阈值
+ ///
+ public byte ClassifiedSpeedThresholdPlayMobile { get; set; }
+ ///
+ /// 玩手机报警前后视频录制时间
+ ///
+ public byte VideoRecordingTimePlayMobile { get; set; }
+ ///
+ /// 玩手机报警抓拍照片张数
+ ///
+ public byte PhotographsPlayMobile { get; set; }
+ ///
+ ///玩手机报警拍照间隔
+ ///
+ public byte PictureIntervalPlayMobile { get; set; }
+ ///
/// 保留字段
///
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);
}
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF366.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF366.cs
index 55087ca..502ff54 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF366.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF366.cs
@@ -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);
diff --git a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/Metadata/AlarmOrEventProperty.cs b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/Metadata/AlarmOrEventProperty.cs
index b5d4ce1..f99145d 100644
--- a/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/Metadata/AlarmOrEventProperty.cs
+++ b/src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/Metadata/AlarmOrEventProperty.cs
@@ -12,7 +12,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Metadata
///
/// 胎压报警位置
///
- public byte TirePressureAlarmPosition { get; set; }
+ public ushort TirePressureAlarmPosition { get; set; }
///
/// 报警/事件类型
///