diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs
index 2d77ed4..91f92d8 100644
--- a/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs
+++ b/src/JT808.Protocol.Extensions.JTActiveSafety.Test/JT808_0x0200_0x64_Test.cs
@@ -90,5 +90,11 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.Test
             Assert.Equal(18, jT808_0X0200_0X64.VehicleSpeed);
             Assert.Equal(19, jT808_0X0200_0X64.VehicleState);
         }
+
+        [Fact]
+        public void Deserialize1()
+        {
+            var json = JT808Serializer.Analyze<JT808_0x0200>("000000010000000200BA7F0E07E4F11C0028003C00001807151010106420000000010C0605120A0B100F1100070000000D0000000E191211183100001334343434343434191210183100030200".ToHexBytes());
+        }
     }
 }
diff --git a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs
index 4e5ca2d..52e21cd 100644
--- a/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs
+++ b/src/JT808.Protocol.Extensions.JTActiveSafety/MessageBody/JT808_0x0200_0x64.cs
@@ -1,17 +1,19 @@
 using JT808.Protocol.Extensions.JTActiveSafety.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.JTActiveSafety.MessageBody
 {
     /// <summary>
     /// 高级驾驶辅助系统报警信息
     /// </summary>
-    public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x64>
+    public class JT808_0x0200_0x64 : JT808_0x0200_BodyBase, IJT808MessagePackFormatter<JT808_0x0200_0x64>, IJT808Analyze
     {
         public override byte AttachInfoId { get; set; } = JT808_JTActiveSafety_Constants.JT808_0X0200_0x64;
         public override byte AttachInfoLength { get; set; } = 32;
@@ -82,27 +84,185 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
         /// </summary>
         public AlarmIdentificationProperty AlarmIdentification { get; set; }
 
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x0200_0x64 value = new JT808_0x0200_0x64();
+            value.AttachInfoId = reader.ReadByte();
+            writer.WriteNumber($"[{value.AttachInfoId.ReadNumber()}]附加信息Id", value.AttachInfoId);
+            value.AttachInfoLength = reader.ReadByte();
+            writer.WriteNumber($"[{value.AttachInfoLength.ReadNumber()}]附加信息长度", value.AttachInfoLength);
+            value.AlarmId = reader.ReadUInt32();
+            writer.WriteNumber($"[{value.AlarmId.ReadNumber()}]报警ID", value.AlarmId);
+            value.FlagState = reader.ReadByte();
+            string flagStateString = "未知";
+            switch (value.FlagState)
+            {
+                case 0:
+                    flagStateString = "不可用";
+                    break;
+                case 1:
+                    flagStateString = "开始标志";
+                    break;
+                case 2:
+                    flagStateString = "结束标志";
+                    break;
+            }
+            writer.WriteNumber($"[{value.FlagState.ReadNumber()}]标志状态-{flagStateString}", value.FlagState);
+            value.AlarmOrEventType = reader.ReadByte();
+            string alarmOrEventTypeString = "";
+            string vehicleSpeedString = "无效";
+            string carOrPedestrianDistanceAheadString = "无效";
+            string deviateTypeString = "无效";
+            string roadSignIdentificationTypeString = "无效";
+            switch (value.AlarmOrEventType)
+            {
+                case 0x01:
+                    alarmOrEventTypeString = "前向碰撞报警";
+                    vehicleSpeedString = "有效";
+                    carOrPedestrianDistanceAheadString = "有效";
+                    break;
+                case 0x02:
+                    alarmOrEventTypeString = "车道偏离报警";
+                    vehicleSpeedString = "有效";
+                    carOrPedestrianDistanceAheadString = "有效";
+                    deviateTypeString = "有效";
+                    break;
+                case 0x03:
+                    alarmOrEventTypeString = "车距过近报警";
+                    break;
+                case 0x04:
+                    alarmOrEventTypeString = "行人碰撞报警";
+                    vehicleSpeedString = "有效";
+                    break;
+                case 0x05:
+                    alarmOrEventTypeString = "频繁变道报警";
+                    break;
+                case 0x06:
+                    alarmOrEventTypeString = "道路标识超限报警";
+                    roadSignIdentificationTypeString = "有效";
+                    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:
+                    roadSignIdentificationTypeString = "有效";
+                    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 = "二级报警";
+                    break;
+            }
+            writer.WriteNumber($"[{value.AlarmLevel.ReadNumber()}]报警级别-{alarmLevelString}", value.AlarmLevel);
+            value.VehicleSpeed = reader.ReadByte();
+            writer.WriteNumber($"[{value.VehicleSpeed.ReadNumber()}]前车车速-{vehicleSpeedString}", value.VehicleSpeed);
+            value.CarOrPedestrianDistanceAhead = reader.ReadByte();
+            writer.WriteNumber($"[{value.CarOrPedestrianDistanceAhead.ReadNumber()}]前车_行人距离-{carOrPedestrianDistanceAheadString}", value.CarOrPedestrianDistanceAhead);
+            value.DeviateType = reader.ReadByte();
+            string deviateType = value.DeviateType == 0x01 ? "左侧偏离" : "右侧偏离";
+            writer.WriteNumber($"[{value.DeviateType.ReadNumber()}]偏离类型-{deviateType}-{deviateTypeString}", value.DeviateType);
+            value.RoadSignIdentificationType = reader.ReadByte();
+            string roadSignIdentificationType = "未知标志";
+            if (value.RoadSignIdentificationType == 0x01)
+            {
+                roadSignIdentificationType = "限速标志";
+            }
+            else if (value.RoadSignIdentificationType == 0x02)
+            {
+                roadSignIdentificationType = "限高标志";
+            }
+            else if (value.RoadSignIdentificationType == 0x03)
+            {
+                roadSignIdentificationType = "限重标志";
+            }
+            writer.WriteNumber($"[{value.RoadSignIdentificationType.ReadNumber()}]道路标志识别类型-{roadSignIdentificationType}-{roadSignIdentificationTypeString}", value.RoadSignIdentificationType);
+            value.RoadSignIdentificationData = reader.ReadByte();
+            writer.WriteNumber($"[{value.RoadSignIdentificationData.ReadNumber()}]道路标志识别数据", value.RoadSignIdentificationData);
+            value.Speed = reader.ReadByte();
+            writer.WriteNumber($"[{value.Speed.ReadNumber()}]车速", value.Speed);
+            value.Altitude = reader.ReadUInt16();
+            writer.WriteNumber($"[{value.Altitude.ReadNumber()}]高程", value.Altitude);
+            value.Latitude = (int)reader.ReadUInt32();
+            writer.WriteNumber($"[{value.Latitude.ReadNumber()}]纬度", value.Latitude);
+            value.Longitude = (int)reader.ReadUInt32();
+            writer.WriteNumber($"[{value.Longitude.ReadNumber()}]经度", value.Longitude);
+            value.AlarmTime = reader.ReadDateTime6();
+            writer.WriteString($"[{value.AlarmTime.ToString("yyMMddHHmmss")}]日期时间", value.AlarmTime.ToString("yyyy-MM-dd HH:mm:ss"));
+            value.VehicleState = reader.ReadUInt16();
+            writer.WriteNumber($"[{value.VehicleState.ReadNumber()}]车辆状态", value.VehicleState);
+            value.AlarmIdentification = new AlarmIdentificationProperty
+            {
+                TerminalID = reader.ReadString(7),
+                Time = reader.ReadDateTime6(),
+                SN = reader.ReadByte(),
+                AttachCount = reader.ReadByte(),
+                Retain = reader.ReadByte()
+            };
+            writer.WriteString($"[{value.AlarmIdentification.TerminalID}]终端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.Retain.ReadNumber()}]预留", value.AlarmIdentification.Retain);
+        }
+
         public JT808_0x0200_0x64 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {          
-            JT808_0x0200_0x64 jT808_0X0200_0X64 = new JT808_0x0200_0x64();
-            jT808_0X0200_0X64.AttachInfoId = reader.ReadByte();
-            jT808_0X0200_0X64.AttachInfoLength = reader.ReadByte();
-            jT808_0X0200_0X64.AlarmId = reader.ReadUInt32();
-            jT808_0X0200_0X64.FlagState = reader.ReadByte();
-            jT808_0X0200_0X64.AlarmOrEventType = reader.ReadByte();
-            jT808_0X0200_0X64.AlarmLevel = reader.ReadByte();
-            jT808_0X0200_0X64.VehicleSpeed = reader.ReadByte();
-            jT808_0X0200_0X64.CarOrPedestrianDistanceAhead = reader.ReadByte();
-            jT808_0X0200_0X64.DeviateType = reader.ReadByte();
-            jT808_0X0200_0X64.RoadSignIdentificationType = reader.ReadByte();
-            jT808_0X0200_0X64.RoadSignIdentificationData = reader.ReadByte();
-            jT808_0X0200_0X64.Speed = reader.ReadByte();
-            jT808_0X0200_0X64.Altitude = reader.ReadUInt16();
-            jT808_0X0200_0X64.Latitude = (int)reader.ReadUInt32();
-            jT808_0X0200_0X64.Longitude = (int)reader.ReadUInt32();
-            jT808_0X0200_0X64.AlarmTime = reader.ReadDateTime6();
-            jT808_0X0200_0X64.VehicleState = reader.ReadUInt16();
-            jT808_0X0200_0X64.AlarmIdentification = new AlarmIdentificationProperty
+            JT808_0x0200_0x64 value = new JT808_0x0200_0x64();
+            value.AttachInfoId = reader.ReadByte();
+            value.AttachInfoLength = reader.ReadByte();
+            value.AlarmId = reader.ReadUInt32();
+            value.FlagState = reader.ReadByte();
+            value.AlarmOrEventType = reader.ReadByte();
+            value.AlarmLevel = reader.ReadByte();
+            value.VehicleSpeed = reader.ReadByte();
+            value.CarOrPedestrianDistanceAhead = reader.ReadByte();
+            value.DeviateType = reader.ReadByte();
+            value.RoadSignIdentificationType = reader.ReadByte();
+            value.RoadSignIdentificationData = reader.ReadByte();
+            value.Speed = reader.ReadByte();
+            value.Altitude = reader.ReadUInt16();
+            value.Latitude = (int)reader.ReadUInt32();
+            value.Longitude = (int)reader.ReadUInt32();
+            value.AlarmTime = reader.ReadDateTime6();
+            value.VehicleState = reader.ReadUInt16();
+            value.AlarmIdentification = new AlarmIdentificationProperty
             {
                 TerminalID = reader.ReadString(7),
                 Time = reader.ReadDateTime6(),
@@ -110,7 +270,7 @@ namespace JT808.Protocol.Extensions.JTActiveSafety.MessageBody
                 AttachCount = reader.ReadByte(),
                 Retain = reader.ReadByte()
             };
-            return jT808_0X0200_0X64;
+            return value;
         }
 
         public void Serialize(ref JT808MessagePackWriter writer, JT808_0x0200_0x64 value, IJT808Config config)