Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

535 rindas
35 KiB

  1. using JT808.Protocol.Extensions.YueBiao.Enums;
  2. using JT808.Protocol.Formatters;
  3. using JT808.Protocol.Interfaces;
  4. using JT808.Protocol.MessageBody;
  5. using JT808.Protocol.MessagePack;
  6. using System;
  7. using System.Linq;
  8. using System.Text.Json;
  9. namespace JT808.Protocol.Extensions.YueBiao.MessageBody
  10. {
  11. /// <summary>
  12. /// 高级驾驶辅助系统参数
  13. /// </summary>
  14. public class JT808_0x8103_0xF364 : JT808MessagePackFormatter<JT808_0x8103_0xF364>, JT808_0x8103_BodyBase, IJT808Analyze, IJT808_2019_Version
  15. {
  16. /// <summary>
  17. /// 高级驾驶辅助系统参数
  18. /// </summary>
  19. public uint ParamId { get; set; } = JT808_YueBiao_Constants.JT808_0X8103_0xF364;
  20. /// <summary>
  21. /// 高级驾驶辅助系统参数长度
  22. /// </summary>
  23. public byte ParamLength { get; set; }
  24. /// <summary>
  25. /// 报警判断速度阈值
  26. /// </summary>
  27. public byte AlarmJudgeSpeedThreshold { get; set; }
  28. /// <summary>
  29. /// 报警提示音量
  30. /// </summary>
  31. public byte WarningVolume { get; set; }
  32. /// <summary>
  33. /// 主动拍照策略
  34. /// <see cref="JT808.Protocol.Extensions.YueBiao.Enums.ActivePhotographyStrategyType"/>
  35. /// </summary>
  36. public byte ActivePhotographyStrategy { get; set; }
  37. /// <summary>
  38. /// 主动定时拍照时间间隔
  39. /// </summary>
  40. public ushort ActivelyTimePhotoInterval { get; set; }
  41. /// <summary>
  42. /// 主动定距拍照距离间隔
  43. /// </summary>
  44. public ushort ActiveDistancePhotographyDistanceInterval { get; set; }
  45. /// <summary>
  46. /// 单次主动拍照张数
  47. /// </summary>
  48. public byte SingleInitiativePhotos { get; set; }
  49. /// <summary>
  50. /// 单次主动拍照时间间隔
  51. /// </summary>
  52. public byte SingleInitiativePhotosInterval { get; set; }
  53. /// <summary>
  54. /// 拍照分辨率
  55. /// <see cref="JT808.Protocol.Extensions.YueBiao.Enums.PhotoResolutionType"/>
  56. /// </summary>
  57. public byte PhotoResolution { get; set; }
  58. /// <summary>
  59. /// 视频录制分辨率
  60. /// </summary>
  61. public byte VideoRecordingResolution { get; set; }
  62. /// <summary>
  63. /// 报警使能
  64. /// </summary>
  65. public uint AlarmEnable { get; set; }
  66. /// <summary>
  67. /// 事件使能
  68. /// </summary>
  69. public uint EventEnable { get; set; }
  70. /// <summary>
  71. /// 预留字段
  72. /// </summary>
  73. public byte Placeholder1 { get; set; }
  74. /// <summary>
  75. /// 障碍物报警距离阈值
  76. /// </summary>
  77. public byte DistanceThresholdObstacleAlarm { get; set; }
  78. /// <summary>
  79. /// 障碍物报警分级速度阈值
  80. /// </summary>
  81. public byte HierarchicalSpeedThresholdObstacleAlarm { get; set; }
  82. /// <summary>
  83. /// 障碍物报警前后视频录制时间
  84. /// </summary>
  85. public byte VideoRecordingTimeBeforeAndAfterObstacleAlarm { get; set; }
  86. /// <summary>
  87. /// 障碍物报警拍照张数
  88. /// </summary>
  89. public byte BarrierAlarmPhotographs { get; set; }
  90. /// <summary>
  91. /// 障碍物报警拍照间隔
  92. /// </summary>
  93. public byte ObstacleAlarmInterval { get; set; }
  94. /// <summary>
  95. /// 频繁变道报警判断时间段
  96. /// </summary>
  97. public byte FrequentChannelChangeAlarmJudgmentTimePeriod { get; set; }
  98. /// <summary>
  99. /// 频繁变道报警判断次数
  100. /// </summary>
  101. public byte FrequentAlarmJudgmentNumberChannelChange { get; set; }
  102. /// <summary>
  103. /// 频繁变道报警分级速度阈值
  104. /// </summary>
  105. public byte HierarchicalSpeedThresholdFrequentChannelChangeAlarm { get; set; }
  106. /// <summary>
  107. /// 频繁变道报警前后视频录制时间
  108. /// </summary>
  109. public byte VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm { get; set; }
  110. /// <summary>
  111. /// 频繁变道报警拍照张数
  112. /// </summary>
  113. public byte FrequentChannelChangeAlarmPhotos { get; set; }
  114. /// <summary>
  115. /// 频繁变道报警拍照间隔
  116. /// </summary>
  117. public byte FrequentLaneChangeAlarmInterval { get; set; }
  118. /// <summary>
  119. /// 车道偏离报警分级速度阈值
  120. /// </summary>
  121. public byte GradedSpeedThresholdLaneDepartureAlarm { get; set; }
  122. /// <summary>
  123. /// 车道偏离报警前后视频录制时间
  124. /// </summary>
  125. public byte VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm { get; set; }
  126. /// <summary>
  127. /// 车道偏离报警拍照张数
  128. /// </summary>
  129. public byte LaneDepartureAlarmPhoto { get; set; }
  130. /// <summary>
  131. /// 车道偏离报警拍照间隔
  132. /// </summary>
  133. public byte LaneDepartureAlarmPhotoInterval { get; set; }
  134. /// <summary>
  135. /// 前向碰撞报警时间阈值
  136. /// </summary>
  137. public byte ForwardCollisionWarningTimeThreshold { get; set; }
  138. /// <summary>
  139. /// 前向碰撞报警分级速度阈值
  140. /// </summary>
  141. public byte HierarchicalSpeedThresholdForwardCollisionWarning { get; set; }
  142. /// <summary>
  143. /// 前向碰撞报警前后视频录制时间
  144. /// </summary>
  145. public byte VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm { get; set; }
  146. /// <summary>
  147. /// 前向碰撞报警拍照张数
  148. /// </summary>
  149. public byte ForwardCollisionAlarmPhotographs { get; set; }
  150. /// <summary>
  151. /// 前向碰撞报警拍照间隔
  152. /// </summary>
  153. public byte ForwardCollisionAlarmInterval { get; set; }
  154. /// <summary>
  155. /// 行人碰撞报警时间阈值
  156. /// </summary>
  157. public byte PedestrianCollisionAlarmTimeThreshold { get; set; }
  158. /// <summary>
  159. /// 行人碰撞报警使能速度阈值
  160. /// </summary>
  161. public byte PedestrianCollisionAlarmEnablingSpeedThreshold { get; set; }
  162. /// <summary>
  163. /// 行人碰撞报警前后视频录制时间
  164. /// </summary>
  165. public byte VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm { get; set; }
  166. /// <summary>
  167. /// 行人碰撞报警拍照张数
  168. /// </summary>
  169. public byte PedestrianCollisionAlarmPhotos { get; set; }
  170. /// <summary>
  171. /// 行人碰撞报警拍照间隔
  172. /// </summary>
  173. public byte PedestrianCollisionAlarmInterval { get; set; }
  174. /// <summary>
  175. /// 车距过近报警距离阈值
  176. /// </summary>
  177. public byte VehicleDistanceMonitoringAlarmDistanceThreshold { get; set; }
  178. /// <summary>
  179. /// 车距过近报警分级速度阈值
  180. /// </summary>
  181. public byte VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold { get; set; }
  182. /// <summary>
  183. /// 车距过近报警前后视频录制时间
  184. /// </summary>
  185. public byte VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity { get; set; }
  186. /// <summary>
  187. /// 车距过近报警拍照张数
  188. /// </summary>
  189. public byte AlarmPhotoVehicleCloseDistance { get; set; }
  190. /// <summary>
  191. /// 车距过近报警拍照间隔
  192. /// </summary>
  193. public byte AlarmPhotoVehicleCloseDistanceInterval { get; set; }
  194. /// <summary>
  195. /// 道路标志识别拍照张数
  196. /// </summary>
  197. public byte RoadSignRecognitionPhotographs { get; set; }
  198. /// <summary>
  199. /// 道路标志识别拍照间隔
  200. /// </summary>
  201. public byte RoadSignRecognitionPhotographsInterval { get; set; }
  202. /// <summary>
  203. /// 实线变道报警分级速度阈值
  204. /// </summary>
  205. public byte SolidLineChangeLanesAlarmClassificationSpeedThreshold { get; set; }
  206. /// <summary>
  207. /// 实线变道报警前后视频录制时间
  208. /// </summary>
  209. public byte VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm { get; set; }
  210. /// <summary>
  211. /// 实线变道报警拍照张数
  212. /// </summary>
  213. public byte SolidLineChangeLanesAlarmPhotographs { get; set; }
  214. /// <summary>
  215. /// 实线变道报警拍照间隔
  216. /// </summary>
  217. public byte SolidLineChangeLanesAlarmPhotoInterval { get; set; }
  218. /// <summary>
  219. /// 车厢过道行人检测报警分级速度阈值
  220. /// </summary>
  221. public byte CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold { get; set; }
  222. /// <summary>
  223. /// 车厢过道行人检测报警前后视频录制时间
  224. /// </summary>
  225. public byte VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm { get; set; }
  226. /// <summary>
  227. /// 车厢过道行人检测报警拍照张数
  228. /// </summary>
  229. public byte CarriageAislePassengerDetectionAlarmPhotographs { get; set; }
  230. /// <summary>
  231. /// 车厢过道行人检测报警拍照间隔
  232. /// </summary>
  233. public byte CarriageAislePassengerDetectionAlarmPhotoInterval { get; set; }
  234. /// <summary>
  235. /// 保留字段
  236. /// </summary>
  237. public byte[] Placeholder2 { get; set; } = new byte[4];
  238. /// <summary>
  239. /// 高级驾驶辅助系统参数
  240. /// </summary>
  241. public string Description => "高级驾驶辅助系统参数";
  242. /// <summary>
  243. ///
  244. /// </summary>
  245. /// <param name="reader"></param>
  246. /// <param name="writer"></param>
  247. /// <param name="config"></param>
  248. public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
  249. {
  250. JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364();
  251. value.ParamId = reader.ReadUInt32();
  252. value.ParamLength = reader.ReadByte();
  253. writer.WriteNumber($"[{value.ParamId.ReadNumber()}]参数ID", value.ParamId);
  254. writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
  255. value.AlarmJudgeSpeedThreshold = reader.ReadByte();
  256. writer.WriteNumber($"[{value.AlarmJudgeSpeedThreshold.ReadNumber()}]报警判断速度阈值", value.AlarmJudgeSpeedThreshold);
  257. value.WarningVolume = reader.ReadByte();
  258. writer.WriteNumber($"[{value.WarningVolume.ReadNumber()}]报警提示音量", value.WarningVolume);
  259. value.ActivePhotographyStrategy = reader.ReadByte();
  260. var activePhotographyStrategy = (ActivePhotographyStrategyType)ActivePhotographyStrategy;
  261. writer.WriteNumber($"[{value.ActivePhotographyStrategy.ReadNumber()}]主动拍照策略-{activePhotographyStrategy.ToString()}", value.ActivePhotographyStrategy);
  262. value.ActivelyTimePhotoInterval = reader.ReadUInt16();
  263. writer.WriteNumber($"[{value.ActivelyTimePhotoInterval.ReadNumber()}]主动定时拍照时间间隔", value.ActivelyTimePhotoInterval);
  264. value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16();
  265. writer.WriteNumber($"[{value.ActiveDistancePhotographyDistanceInterval.ReadNumber()}]主动定距拍照距离间隔", value.ActiveDistancePhotographyDistanceInterval);
  266. value.SingleInitiativePhotos = reader.ReadByte();
  267. writer.WriteNumber($"[{value.SingleInitiativePhotos.ReadNumber()}]单次主动拍照张数", value.SingleInitiativePhotos);
  268. value.SingleInitiativePhotosInterval = reader.ReadByte();
  269. writer.WriteNumber($"[{value.SingleInitiativePhotosInterval.ReadNumber()}]单次主动拍照时间间隔", value.SingleInitiativePhotosInterval);
  270. value.PhotoResolution = reader.ReadByte();
  271. var photoResolutionType = (PhotoResolutionType)value.PhotoResolution;
  272. writer.WriteNumber($"[{value.PhotoResolution.ReadNumber()}]拍照分辨率-{photoResolutionType.ToString()}", value.PhotoResolution);
  273. value.VideoRecordingResolution = reader.ReadByte();
  274. var videoRecordingResolution = (VideoRecordingResolutionType)value.VideoRecordingResolution;
  275. writer.WriteNumber($"[{value.VideoRecordingResolution.ReadNumber()}]视频录制分辨率-{videoRecordingResolution.ToString()}", value.VideoRecordingResolution);
  276. value.AlarmEnable = reader.ReadUInt32();
  277. writer.WriteNumber($"[{value.AlarmEnable.ReadNumber()}]报警使能", value.AlarmEnable);
  278. var alarmEnableBits = Convert.ToString(value.AlarmEnable, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan();
  279. writer.WriteStartObject($"报警使能对象[{alarmEnableBits.ToString()}]");
  280. writer.WriteString("[bit30~bit31]预留", alarmEnableBits.Slice(30,2).ToString());
  281. writer.WriteString("[bit20~bit29]用户自定义", alarmEnableBits.Slice(20, 10).ToString());
  282. writer.WriteString("[bit19]车厢过道行人检测", alarmEnableBits[19] == '0' ? "关闭" : "打开");
  283. writer.WriteString("[bit18]实线变道二级报警", alarmEnableBits[18] == '0' ? "关闭" : "打开");
  284. writer.WriteString("[bit17]实线变道一级报警", alarmEnableBits[17] == '0' ? "关闭" : "打开");
  285. writer.WriteString("[bit16]道路标识超限报警", alarmEnableBits[16]=='0'?"关闭":"打开");
  286. writer.WriteString("[bit12~bit15]用户自定义", alarmEnableBits.Slice(12, 4).ToString());
  287. writer.WriteString("[bit11]车距过近二级报警", alarmEnableBits[11] == '0' ? "关闭" : "打开");
  288. writer.WriteString("[bit10]车距过近一级报警", alarmEnableBits[10] == '0' ? "关闭" : "打开");
  289. writer.WriteString("[bit9]行人碰撞二级报警", alarmEnableBits[9] == '0' ? "关闭" : "打开");
  290. writer.WriteString("[bit8]行人碰撞一级报警", alarmEnableBits[8] == '0' ? "关闭" : "打开");
  291. writer.WriteString("[bit7]前向碰撞二级报警", alarmEnableBits[7] == '0' ? "关闭" : "打开");
  292. writer.WriteString("[bit6]前向碰撞一级报警", alarmEnableBits[6] == '0' ? "关闭" : "打开");
  293. writer.WriteString("[bit5]车道偏离二级报警", alarmEnableBits[5] == '0' ? "关闭" : "打开");
  294. writer.WriteString("[bit4]车道偏离一级报警", alarmEnableBits[4] == '0' ? "关闭" : "打开");
  295. writer.WriteString("[bit3]频繁变道二级报警", alarmEnableBits[3] == '0' ? "关闭" : "打开");
  296. writer.WriteString("[bit2]频繁变道一级报警", alarmEnableBits[2] == '0' ? "关闭" : "打开");
  297. writer.WriteString("[bit1]障碍检测二级报警", alarmEnableBits[1] == '0' ? "关闭" : "打开");
  298. writer.WriteString("[bit0]障碍检测一级报警", alarmEnableBits[0] == '0' ? "关闭" : "打开");
  299. writer.WriteEndObject();
  300. value.EventEnable = reader.ReadUInt32();
  301. writer.WriteNumber($"[{value.EventEnable.ReadNumber()}]事件使能", value.EventEnable);
  302. var eventEnableBits = Convert.ToString(value.EventEnable, 2).PadLeft(32, '0').Reverse().ToArray().AsSpan();
  303. writer.WriteStartObject($"事件使能对象[{eventEnableBits.ToString()}]");
  304. writer.WriteString("[bit30~bit31]预留", eventEnableBits.Slice(30, 2).ToString());
  305. writer.WriteString("[bit2~bit29]用户自定义", alarmEnableBits.Slice(2, 28).ToString());
  306. writer.WriteString("[bit1]主动拍照", eventEnableBits[1] == '0' ? "关闭" : "打开");
  307. writer.WriteString("[bit0]道路标识识别", eventEnableBits[0] == '0' ? "关闭" : "打开");
  308. writer.WriteEndObject();
  309. value.Placeholder1 = reader.ReadByte();
  310. writer.WriteNumber($"[{value.Placeholder1.ReadNumber()}]预留字段", value.Placeholder1);
  311. value.DistanceThresholdObstacleAlarm = reader.ReadByte();
  312. writer.WriteNumber($"[{value.DistanceThresholdObstacleAlarm.ReadNumber()}]障碍物报警距离阈值", value.DistanceThresholdObstacleAlarm);
  313. value.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte();
  314. writer.WriteNumber($"[{value.HierarchicalSpeedThresholdObstacleAlarm.ReadNumber()}]障碍物报警分级速度阈值", value.HierarchicalSpeedThresholdObstacleAlarm);
  315. value.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte();
  316. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterObstacleAlarm.ReadNumber()}]障碍物报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterObstacleAlarm);
  317. value.BarrierAlarmPhotographs = reader.ReadByte();
  318. writer.WriteNumber($"[{value.BarrierAlarmPhotographs.ReadNumber()}]障碍物报警拍照张数", value.BarrierAlarmPhotographs);
  319. value.ObstacleAlarmInterval = reader.ReadByte();
  320. writer.WriteNumber($"[{value.ObstacleAlarmInterval.ReadNumber()}]障碍物报警拍照间隔", value.ObstacleAlarmInterval);
  321. value.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte();
  322. writer.WriteNumber($"[{value.FrequentChannelChangeAlarmJudgmentTimePeriod.ReadNumber()}]频繁变道报警判断时间段", value.FrequentChannelChangeAlarmJudgmentTimePeriod);
  323. value.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte();
  324. writer.WriteNumber($"[{value.FrequentAlarmJudgmentNumberChannelChange.ReadNumber()}]频繁变道报警判断次数", value.FrequentAlarmJudgmentNumberChannelChange);
  325. value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte();
  326. writer.WriteNumber($"[{value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm.ReadNumber()}]频繁变道报警分级速度阈值", value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm);
  327. value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte();
  328. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm.ReadNumber()}]频繁变道报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm);
  329. value.FrequentChannelChangeAlarmPhotos = reader.ReadByte();
  330. writer.WriteNumber($"[{value.FrequentChannelChangeAlarmPhotos.ReadNumber()}]频繁变道报警拍照张数", value.FrequentChannelChangeAlarmPhotos);
  331. value.FrequentLaneChangeAlarmInterval = reader.ReadByte();
  332. writer.WriteNumber($"[{value.FrequentLaneChangeAlarmInterval.ReadNumber()}]频繁变道报警拍照间隔", value.FrequentLaneChangeAlarmInterval);
  333. value.GradedSpeedThresholdLaneDepartureAlarm = reader.ReadByte();
  334. writer.WriteNumber($"[{value.GradedSpeedThresholdLaneDepartureAlarm.ReadNumber()}]车道偏离报警分级速度阈值", value.GradedSpeedThresholdLaneDepartureAlarm);
  335. value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte();
  336. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm.ReadNumber()}]车道偏离报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm);
  337. value.LaneDepartureAlarmPhoto = reader.ReadByte();
  338. writer.WriteNumber($"[{value.LaneDepartureAlarmPhoto.ReadNumber()}]车道偏离报警拍照张数", value.LaneDepartureAlarmPhoto);
  339. value.LaneDepartureAlarmPhotoInterval = reader.ReadByte();
  340. writer.WriteNumber($"[{value.LaneDepartureAlarmPhotoInterval.ReadNumber()}]车道偏离报警拍照间隔", value.LaneDepartureAlarmPhotoInterval);
  341. value.ForwardCollisionWarningTimeThreshold = reader.ReadByte();
  342. writer.WriteNumber($"[{value.ForwardCollisionWarningTimeThreshold.ReadNumber()}]前向碰撞报警时间阈值", value.ForwardCollisionWarningTimeThreshold);
  343. value.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte();
  344. writer.WriteNumber($"[{value.HierarchicalSpeedThresholdForwardCollisionWarning.ReadNumber()}]前向碰撞报警分级速度阈值", value.HierarchicalSpeedThresholdForwardCollisionWarning);
  345. value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte();
  346. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm.ReadNumber()}]前向碰撞报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm);
  347. value.ForwardCollisionAlarmPhotographs = reader.ReadByte();
  348. writer.WriteNumber($"[{value.ForwardCollisionAlarmPhotographs.ReadNumber()}]前向碰撞报警拍照张数", value.ForwardCollisionAlarmPhotographs);
  349. value.ForwardCollisionAlarmInterval = reader.ReadByte();
  350. writer.WriteNumber($"[{value.ForwardCollisionAlarmInterval.ReadNumber()}]前向碰撞报警拍照间隔", value.ForwardCollisionAlarmInterval);
  351. value.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte();
  352. writer.WriteNumber($"[{value.PedestrianCollisionAlarmTimeThreshold.ReadNumber()}]行人碰撞报警时间阈值", value.PedestrianCollisionAlarmTimeThreshold);
  353. value.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte();
  354. writer.WriteNumber($"[{value.PedestrianCollisionAlarmEnablingSpeedThreshold.ReadNumber()}]行人碰撞报警使能速度阈值", value.PedestrianCollisionAlarmEnablingSpeedThreshold);
  355. value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte();
  356. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm.ReadNumber()}]行人碰撞报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm);
  357. value.PedestrianCollisionAlarmPhotos = reader.ReadByte();
  358. writer.WriteNumber($"[{value.PedestrianCollisionAlarmPhotos.ReadNumber()}]行人碰撞报警拍照张数", value.PedestrianCollisionAlarmPhotos);
  359. value.PedestrianCollisionAlarmInterval = reader.ReadByte();
  360. writer.WriteNumber($"[{value.PedestrianCollisionAlarmInterval.ReadNumber()}]行人碰撞报警拍照间隔", value.PedestrianCollisionAlarmInterval);
  361. value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte();
  362. writer.WriteNumber($"[{value.VehicleDistanceMonitoringAlarmDistanceThreshold.ReadNumber()}]车距过近报警距离阈值", value.VehicleDistanceMonitoringAlarmDistanceThreshold);
  363. value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte();
  364. writer.WriteNumber($"[{value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold.ReadNumber()}]车距过近报警分级速度阈值", value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold);
  365. value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte();
  366. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity.ReadNumber()}]车距过近报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity);
  367. value.AlarmPhotoVehicleCloseDistance = reader.ReadByte();
  368. writer.WriteNumber($"[{value.AlarmPhotoVehicleCloseDistance.ReadNumber()}]车距过近报警拍照张数", value.AlarmPhotoVehicleCloseDistance);
  369. value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte();
  370. writer.WriteNumber($"[{value.AlarmPhotoVehicleCloseDistanceInterval.ReadNumber()}]车距过近报警拍照间隔", value.AlarmPhotoVehicleCloseDistanceInterval);
  371. value.RoadSignRecognitionPhotographs = reader.ReadByte();
  372. writer.WriteNumber($"[{value.RoadSignRecognitionPhotographs.ReadNumber()}]道路标志识别拍照张数", value.RoadSignRecognitionPhotographs);
  373. value.RoadSignRecognitionPhotographsInterval = reader.ReadByte();
  374. writer.WriteNumber($"[{value.RoadSignRecognitionPhotographsInterval.ReadNumber()}]道路标志识别拍照间隔", value.RoadSignRecognitionPhotographsInterval);
  375. //实线变道报警
  376. value.SolidLineChangeLanesAlarmClassificationSpeedThreshold = reader.ReadByte();
  377. writer.WriteNumber($"[{value.SolidLineChangeLanesAlarmClassificationSpeedThreshold.ReadNumber()}]实线变道报警分级速度阈值", value.SolidLineChangeLanesAlarmClassificationSpeedThreshold);
  378. value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm = reader.ReadByte();
  379. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm.ReadNumber()}]实线变道报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm);
  380. value.SolidLineChangeLanesAlarmPhotographs = reader.ReadByte();
  381. writer.WriteNumber($"[{value.SolidLineChangeLanesAlarmPhotographs.ReadNumber()}]实线变道报警拍照张数", value.SolidLineChangeLanesAlarmPhotographs);
  382. value.SolidLineChangeLanesAlarmPhotoInterval = reader.ReadByte();
  383. writer.WriteNumber($"[{value.SolidLineChangeLanesAlarmPhotoInterval.ReadNumber()}]实线变道报警拍照间隔", value.SolidLineChangeLanesAlarmPhotoInterval);
  384. //车厢过道行人检测报警
  385. value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold = reader.ReadByte();
  386. writer.WriteNumber($"[{value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold.ReadNumber()}]车厢过道行人检测报警分级速度阈值", value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold);
  387. value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm = reader.ReadByte();
  388. writer.WriteNumber($"[{value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm.ReadNumber()}]车厢过道行人检测报警前后视频录制时间", value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm);
  389. value.CarriageAislePassengerDetectionAlarmPhotographs = reader.ReadByte();
  390. writer.WriteNumber($"[{value.CarriageAislePassengerDetectionAlarmPhotographs.ReadNumber()}]车厢过道行人检测报警拍照张数", value.CarriageAislePassengerDetectionAlarmPhotographs);
  391. value.CarriageAislePassengerDetectionAlarmPhotoInterval = reader.ReadByte();
  392. writer.WriteNumber($"[{value.CarriageAislePassengerDetectionAlarmPhotoInterval.ReadNumber()}]车厢过道行人检测报警拍照间隔", value.CarriageAislePassengerDetectionAlarmPhotoInterval);
  393. value.Placeholder2 = reader.ReadArray(4).ToArray();
  394. writer.WriteString("保留字段", value.Placeholder2.ToHexString());
  395. }
  396. /// <summary>
  397. ///
  398. /// </summary>
  399. /// <param name="reader"></param>
  400. /// <param name="config"></param>
  401. /// <returns></returns>
  402. public override JT808_0x8103_0xF364 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
  403. {
  404. JT808_0x8103_0xF364 value = new JT808_0x8103_0xF364();
  405. value.ParamId = reader.ReadUInt32();
  406. value.ParamLength = reader.ReadByte();
  407. value.AlarmJudgeSpeedThreshold = reader.ReadByte();
  408. value.WarningVolume = reader.ReadByte();
  409. value.ActivePhotographyStrategy = reader.ReadByte();
  410. value.ActivelyTimePhotoInterval = reader.ReadUInt16();
  411. value.ActiveDistancePhotographyDistanceInterval = reader.ReadUInt16();
  412. value.SingleInitiativePhotos = reader.ReadByte();
  413. value.SingleInitiativePhotosInterval = reader.ReadByte();
  414. value.PhotoResolution = reader.ReadByte();
  415. value.VideoRecordingResolution = reader.ReadByte();
  416. value.AlarmEnable = reader.ReadUInt32();
  417. value.EventEnable = reader.ReadUInt32();
  418. value.Placeholder1 = reader.ReadByte();
  419. value.DistanceThresholdObstacleAlarm = reader.ReadByte();
  420. value.HierarchicalSpeedThresholdObstacleAlarm = reader.ReadByte();
  421. value.VideoRecordingTimeBeforeAndAfterObstacleAlarm = reader.ReadByte();
  422. value.BarrierAlarmPhotographs = reader.ReadByte();
  423. value.ObstacleAlarmInterval = reader.ReadByte();
  424. value.FrequentChannelChangeAlarmJudgmentTimePeriod = reader.ReadByte();
  425. value.FrequentAlarmJudgmentNumberChannelChange = reader.ReadByte();
  426. value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm = reader.ReadByte();
  427. value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm = reader.ReadByte();
  428. value.FrequentChannelChangeAlarmPhotos = reader.ReadByte();
  429. value.FrequentLaneChangeAlarmInterval = reader.ReadByte();
  430. value.GradedSpeedThresholdLaneDepartureAlarm = reader.ReadByte();
  431. value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm = reader.ReadByte();
  432. value.LaneDepartureAlarmPhoto = reader.ReadByte();
  433. value.LaneDepartureAlarmPhotoInterval = reader.ReadByte();
  434. value.ForwardCollisionWarningTimeThreshold = reader.ReadByte();
  435. value.HierarchicalSpeedThresholdForwardCollisionWarning = reader.ReadByte();
  436. value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm = reader.ReadByte();
  437. value.ForwardCollisionAlarmPhotographs = reader.ReadByte();
  438. value.ForwardCollisionAlarmInterval = reader.ReadByte();
  439. value.PedestrianCollisionAlarmTimeThreshold = reader.ReadByte();
  440. value.PedestrianCollisionAlarmEnablingSpeedThreshold = reader.ReadByte();
  441. value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm = reader.ReadByte();
  442. value.PedestrianCollisionAlarmPhotos = reader.ReadByte();
  443. value.PedestrianCollisionAlarmInterval = reader.ReadByte();
  444. value.VehicleDistanceMonitoringAlarmDistanceThreshold = reader.ReadByte();
  445. value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold = reader.ReadByte();
  446. value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity = reader.ReadByte();
  447. value.AlarmPhotoVehicleCloseDistance = reader.ReadByte();
  448. value.AlarmPhotoVehicleCloseDistanceInterval = reader.ReadByte();
  449. value.RoadSignRecognitionPhotographs = reader.ReadByte();
  450. value.RoadSignRecognitionPhotographsInterval = reader.ReadByte();
  451. value.SolidLineChangeLanesAlarmClassificationSpeedThreshold = reader.ReadByte();
  452. value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm = reader.ReadByte();
  453. value.SolidLineChangeLanesAlarmPhotographs = reader.ReadByte();
  454. value.SolidLineChangeLanesAlarmPhotoInterval = reader.ReadByte();
  455. value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold = reader.ReadByte();
  456. value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm = reader.ReadByte();
  457. value.CarriageAislePassengerDetectionAlarmPhotographs = reader.ReadByte();
  458. value.CarriageAislePassengerDetectionAlarmPhotoInterval = reader.ReadByte();
  459. value.Placeholder2 = reader.ReadArray(4).ToArray();
  460. return value;
  461. }
  462. /// <summary>
  463. ///
  464. /// </summary>
  465. /// <param name="writer"></param>
  466. /// <param name="value"></param>
  467. /// <param name="config"></param>
  468. public override void Serialize(ref JT808MessagePackWriter writer, JT808_0x8103_0xF364 value, IJT808Config config)
  469. {
  470. writer.WriteUInt32(value.ParamId);
  471. writer.Skip(1, out int ParamLengthPosition);
  472. writer.WriteByte(value.AlarmJudgeSpeedThreshold);
  473. writer.WriteByte(value.WarningVolume);
  474. writer.WriteByte(value.ActivePhotographyStrategy);
  475. writer.WriteUInt16(value.ActivelyTimePhotoInterval);
  476. writer.WriteUInt16(value.ActiveDistancePhotographyDistanceInterval);
  477. writer.WriteByte(value.SingleInitiativePhotos);
  478. writer.WriteByte(value.SingleInitiativePhotosInterval);
  479. writer.WriteByte(value.PhotoResolution);
  480. writer.WriteByte(value.VideoRecordingResolution);
  481. writer.WriteUInt32(value.AlarmEnable);
  482. writer.WriteUInt32(value.EventEnable);
  483. writer.WriteByte(value.Placeholder1);
  484. writer.WriteByte(value.DistanceThresholdObstacleAlarm);
  485. writer.WriteByte(value.HierarchicalSpeedThresholdObstacleAlarm);
  486. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterObstacleAlarm);
  487. writer.WriteByte(value.BarrierAlarmPhotographs);
  488. writer.WriteByte(value.ObstacleAlarmInterval);
  489. writer.WriteByte(value.FrequentChannelChangeAlarmJudgmentTimePeriod);
  490. writer.WriteByte(value.FrequentAlarmJudgmentNumberChannelChange);
  491. writer.WriteByte(value.HierarchicalSpeedThresholdFrequentChannelChangeAlarm);
  492. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterFrequentLaneChangeAlarm);
  493. writer.WriteByte(value.FrequentChannelChangeAlarmPhotos);
  494. writer.WriteByte(value.FrequentLaneChangeAlarmInterval);
  495. writer.WriteByte(value.GradedSpeedThresholdLaneDepartureAlarm);
  496. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterLaneDepartureAlarm);
  497. writer.WriteByte(value.LaneDepartureAlarmPhoto);
  498. writer.WriteByte(value.LaneDepartureAlarmPhotoInterval);
  499. writer.WriteByte(value.ForwardCollisionWarningTimeThreshold);
  500. writer.WriteByte(value.HierarchicalSpeedThresholdForwardCollisionWarning);
  501. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterForwardCollisionAlarm);
  502. writer.WriteByte(value.ForwardCollisionAlarmPhotographs);
  503. writer.WriteByte(value.ForwardCollisionAlarmInterval);
  504. writer.WriteByte(value.PedestrianCollisionAlarmTimeThreshold);
  505. writer.WriteByte(value.PedestrianCollisionAlarmEnablingSpeedThreshold);
  506. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterPedestrianCollisionAlarm);
  507. writer.WriteByte(value.PedestrianCollisionAlarmPhotos);
  508. writer.WriteByte(value.PedestrianCollisionAlarmInterval);
  509. writer.WriteByte(value.VehicleDistanceMonitoringAlarmDistanceThreshold);
  510. writer.WriteByte(value.VehicleDistanceMonitoringAndAlarmClassificationSpeedThreshold);
  511. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterAlarmVehicleProximity);
  512. writer.WriteByte(value.AlarmPhotoVehicleCloseDistance);
  513. writer.WriteByte(value.AlarmPhotoVehicleCloseDistanceInterval);
  514. writer.WriteByte(value.RoadSignRecognitionPhotographs);
  515. writer.WriteByte(value.RoadSignRecognitionPhotographsInterval);
  516. writer.WriteByte(value.SolidLineChangeLanesAlarmClassificationSpeedThreshold);
  517. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterSolidLineChangeLanesAlarm);
  518. writer.WriteByte(value.SolidLineChangeLanesAlarmPhotographs);
  519. writer.WriteByte(value.SolidLineChangeLanesAlarmPhotoInterval);
  520. writer.WriteByte(value.CarriageAislePassengerDetectionAlarmClassificationSpeedThreshold);
  521. writer.WriteByte(value.VideoRecordingTimeBeforeAndAfterCarriageAislePassengerDetectionAlarm);
  522. writer.WriteByte(value.CarriageAislePassengerDetectionAlarmPhotographs);
  523. writer.WriteByte(value.CarriageAislePassengerDetectionAlarmPhotoInterval);
  524. writer.WriteArray(value.Placeholder2);
  525. writer.WriteByteReturn((byte)(writer.GetCurrentPosition() - ParamLengthPosition - 1), ParamLengthPosition);
  526. }
  527. }
  528. }