Browse Source

粤标单元测试

tags/v2.4.1
waterliu99 3 years ago
parent
commit
8c31ac8447
18 changed files with 826 additions and 266 deletions
  1. +2
    -36
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.xml
  2. +3
    -3
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x66_Test.cs
  3. +7
    -9
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x67_Test.cs
  4. +26
    -6
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF364_Test.cs
  5. +55
    -4
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF365_Test.cs
  6. +233
    -13
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808.Protocol.Extensions.YueBiao.xml
  7. +8
    -0
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808_YueBiao_Constants.cs
  8. +9
    -1
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x64.cs
  9. +23
    -67
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x66.cs
  10. +4
    -66
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs
  11. +73
    -0
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF1.cs
  12. +73
    -0
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF2.cs
  13. +2
    -1
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF7.cs
  14. +12
    -12
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF8.cs
  15. +90
    -17
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF364.cs
  16. +203
    -28
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF365.cs
  17. +2
    -2
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF366.cs
  18. +1
    -1
      src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/Metadata/AlarmOrEventProperty.cs

+ 2
- 36
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.JT1078/JT808.Protocol.Extensions.JT1078.xml View File

@@ -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>
文件上传控制


+ 3
- 3
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x66_Test.cs View File

@@ -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());
}
}
}

+ 7
- 9
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x0200_0x67_Test.cs View File

@@ -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());
}
}
}

+ 26
- 6
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF364_Test.cs View File

@@ -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());
}
}
}

+ 55
- 4
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao.Test/JT808_0x8103_0xF365_Test.cs View File

@@ -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());
}
}
}

+ 233
- 13
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808.Protocol.Extensions.YueBiao.xml View File

@@ -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>
保留字段


+ 8
- 0
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/JT808_YueBiao_Constants.cs View File

@@ -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;


+ 9
- 1
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x64.cs View File

@@ -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);


+ 23
- 67
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x66.cs View File

@@ -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);


+ 4
- 66
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0x67.cs View File

@@ -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);


+ 73
- 0
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF1.cs View File

@@ -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);
}
}
}

+ 73
- 0
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0200_0xF2.cs View File

@@ -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);
}
}
}

+ 2
- 1
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF7.cs View File

@@ -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());


+ 12
- 12
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x0900_0xF8.cs View File

@@ -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);


+ 90
- 17
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF364.cs View File

@@ -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);
}


+ 203
- 28
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF365.cs View File

@@ -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);
}


+ 2
- 2
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/MessageBody/JT808_0x8103_0xF366.cs View File

@@ -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);


+ 1
- 1
src/JT808.Protocol.Extensions/JT808.Protocol.Extensions.YueBiao/Metadata/AlarmOrEventProperty.cs View File

@@ -12,7 +12,7 @@ namespace JT808.Protocol.Extensions.YueBiao.Metadata
/// <summary>
/// 胎压报警位置
/// </summary>
public byte TirePressureAlarmPosition { get; set; }
public ushort TirePressureAlarmPosition { get; set; }
/// <summary>
/// 报警/事件类型
/// </summary>


Loading…
Cancel
Save