diff --git a/src/JT808.Protocol/JT808.Protocol.xml b/src/JT808.Protocol/JT808.Protocol.xml
index f146066..b060bc9 100644
--- a/src/JT808.Protocol/JT808.Protocol.xml
+++ b/src/JT808.Protocol/JT808.Protocol.xml
@@ -4616,7 +4616,7 @@
         </member>
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x0019.ParamValue">
              <summary>
-            服务器 TCP 端口
+            服务器 UDP 端口
              </summary>
         </member>
         <member name="T:JT808.Protocol.MessageBody.JT808_0x8103_0x001A">
@@ -4774,7 +4774,7 @@
         </member>
         <member name="T:JT808.Protocol.MessageBody.JT808_0x8103_0x0026">
             <summary>
-            从服务器无线通信拨号密码。该值为空,终端应使用主服务器相同配置
+            从服务器备份地址IP。该值为空,终端应使用主服务器相同配置
             2019版本
             </summary>
         </member>
@@ -4927,7 +4927,7 @@
         </member>
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x0032.ParamValue">
             <summary>
-            电子围栏半径(非法位移阈值),单位为米
+            违规行驶时段范围(非法位移阈值),单位为米
             </summary>
         </member>
         <member name="T:JT808.Protocol.MessageBody.JT808_0x8103_0x0040">
@@ -5290,7 +5290,7 @@
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x005D.ParamValue">
             <summary>
             碰撞报警参数设置
-            b7-b0: 碰撞时间,单位 4ms;
+            b7-b0: 碰撞时间,单位4ms;
             b15-b8:碰撞加速度,单位 0.1g,设置范围在:0-79 之间,默认为10。
             </summary>
         </member>
@@ -5313,7 +5313,7 @@
         </member>
         <member name="T:JT808.Protocol.MessageBody.JT808_0x8103_0x0064">
             <summary>
-            定时拍照控制,见 表 13
+            定时拍照控制,见 表 14
             </summary>
         </member>
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x0064.ParamLength">
@@ -5323,12 +5323,12 @@
         </member>
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x0064.ParamValue">
             <summary>
-            定时拍照控制,见 表 13
+            定时拍照控制,见 表 14
             </summary>
         </member>
         <member name="T:JT808.Protocol.MessageBody.JT808_0x8103_0x0065">
             <summary>
-            定距拍照控制,见 表 14
+            定距拍照控制,见 表 15
             </summary>
         </member>
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x0065.ParamLength">
@@ -5338,7 +5338,7 @@
         </member>
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x0065.ParamValue">
             <summary>
-            定距拍照控制,见 表 14
+            定距拍照控制,见 表 15
             </summary>
         </member>
         <member name="T:JT808.Protocol.MessageBody.JT808_0x8103_0x0070">
@@ -5413,7 +5413,7 @@
         </member>
         <member name="P:JT808.Protocol.MessageBody.JT808_0x8103_0x0074.ParamValue">
             <summary>
-            饱和度,0-127
+            色度,0-255
             </summary>
         </member>
         <member name="T:JT808.Protocol.MessageBody.JT808_0x8103_0x0080">
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0001.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0001.cs
index 75f78a7..50e0cde 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0001.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0001.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0001.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0001.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0001.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0001.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0001.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0001.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0001.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0001.ParamValue.ReadNumber()}]参数值[终端心跳发送间隔s]", jT808_0x8103_0x0001.ParamValue);
         }
 
         public JT808_0x8103_0x0001 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0002.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0002.cs
index 0940274..c9b4833 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0002.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0002.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0002.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0002.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0002.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0002.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0002.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0002.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0002.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0002.ParamValue.ReadNumber()}]参数值[TCP消息应答超时时间s]", jT808_0x8103_0x0002.ParamValue);
         }
 
         public JT808_0x8103_0x0002 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0003.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0003.cs
index fd4c45d..566b8b9 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0003.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0003.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0003.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0003.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0003.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0003.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0003.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0003.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0003.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0003.ParamValue.ReadNumber()}]参数值[TCP消息重传次数]", jT808_0x8103_0x0003.ParamValue);
         }
 
         public JT808_0x8103_0x0003 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0004.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0004.cs
index d94bdc1..cb72418 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0004.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0004.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0004.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0004.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0004.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0004.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0004.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0004.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0004.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0004.ParamValue.ReadNumber()}]参数值[UDP消息应答超时时间s]", jT808_0x8103_0x0004.ParamValue);
         }
 
         public JT808_0x8103_0x0004 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0005.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0005.cs
index 3fc833b..1b7d16b 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0005.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0005.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0005.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0005.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0005.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0005.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0005.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0005.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0005.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0005.ParamValue.ReadNumber()}]参数值[UDP消息重传次数]", jT808_0x8103_0x0005.ParamValue);
         }
 
         public JT808_0x8103_0x0005 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0006.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0006.cs
index 89e1058..1e67966 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0006.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0006.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0006.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0006.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0006.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0006.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0006.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0006.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0006.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0006.ParamValue.ReadNumber()}]参数值[SMS消息应答超时时间s]", jT808_0x8103_0x0006.ParamValue);
         }
 
         public JT808_0x8103_0x0006 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0007.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0007.cs
index cd454be..2bb2d43 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0007.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0007.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0007.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0007.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0007.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0007.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0007.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0007.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0007.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0007.ParamValue.ReadNumber()}]参数值[SMS消息重传次数]", jT808_0x8103_0x0007.ParamValue);
         }
 
         public JT808_0x8103_0x0007 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0010.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0010.cs
index 448c730..c58f89a 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0010.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0010.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0010.ParamValue = reader.ReadString(jT808_0x8103_0x0010.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0010.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0010.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0010.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0010.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0010.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[主服务器APN]", jT808_0x8103_0x0010.ParamValue);
         }
 
         public JT808_0x8103_0x0010 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0011.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0011.cs
index 8603054..8f8a2dc 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0011.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0011.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0011.ParamValue = reader.ReadString(jT808_0x8103_0x0011.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0011.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0011.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0011.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0011.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0011.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[主服务器无线通信拨号用户名]", jT808_0x8103_0x0011.ParamValue);
         }
 
         public JT808_0x8103_0x0011 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0012.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0012.cs
index 5e1b348..5123d6b 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0012.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0012.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0012.ParamValue = reader.ReadString(jT808_0x8103_0x0012.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0012.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0012.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0012.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0012.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0012.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[主服务器无线通信拨号密码]", jT808_0x8103_0x0012.ParamValue);
         }
 
         public JT808_0x8103_0x0012 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0013.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0013.cs
index c4939a9..828e6c3 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0013.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0013.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0013.ParamValue = reader.ReadString(jT808_0x8103_0x0013.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0013.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0013.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0013.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0013.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0013.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[主服务器地址IP]", jT808_0x8103_0x0013.ParamValue);
         }
 
         public JT808_0x8103_0x0013 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0014.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0014.cs
index e5be113..5e967f0 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0014.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0014.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0014.ParamValue = reader.ReadString(jT808_0x8103_0x0014.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0014.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0014.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0014.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0014.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0014.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[备份服务器APN]", jT808_0x8103_0x0014.ParamValue);
         }
 
         public JT808_0x8103_0x0014 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0015.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0015.cs
index 1b026ff..c1be654 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0015.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0015.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0015.ParamValue = reader.ReadString(jT808_0x8103_0x0015.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0015.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0015.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0015.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0015.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0015.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[备份服务器无线通信拨号用户名]", jT808_0x8103_0x0015.ParamValue);
         }
 
         public JT808_0x8103_0x0015 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0016.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0016.cs
index 2b8bb62..6544871 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0016.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0016.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0016.ParamValue = reader.ReadString(jT808_0x8103_0x0016.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0016.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0016.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0016.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0016.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0016.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[备份服务器无线通信拨号密码]", jT808_0x8103_0x0016.ParamValue);
         }
 
         public JT808_0x8103_0x0016 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0017.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0017.cs
index 89b28e9..4c73221 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0017.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0017.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0017.ParamValue = reader.ReadString(jT808_0x8103_0x0017.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0017.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0017.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0017.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0017.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0017.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[备份服务器地址IP]", jT808_0x8103_0x0017.ParamValue);
         }
 
         public JT808_0x8103_0x0017 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0018.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0018.cs
index 8cddd85..23ddcb5 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0018.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0018.cs
@@ -32,7 +32,7 @@ namespace JT808.Protocol.MessageBody
             value.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
             writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
-            writer.WriteNumber($"[{ value.ParamValue.ReadNumber()}]参数值", value.ParamValue);
+            writer.WriteNumber($"[{ value.ParamValue.ReadNumber()}]参数值[服务器TCP端口]", value.ParamValue);
         }
 
         public JT808_0x8103_0x0018 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0019.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0019.cs
index 9dbfeb8..64ec2c6 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0019.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0019.cs
@@ -20,7 +20,7 @@ namespace JT808.Protocol.MessageBody
         /// </summary>
         public override byte ParamLength { get; set; } = 4;
         /// <summary>
-        ///服务器 TCP 端口
+        ///服务器 UDP 端口
         /// </summary>
         public uint ParamValue { get; set; }
 
@@ -32,7 +32,7 @@ namespace JT808.Protocol.MessageBody
             value.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
             writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
-            writer.WriteNumber($"[{ value.ParamValue.ReadNumber()}]参数值", value.ParamValue);
+            writer.WriteNumber($"[{ value.ParamValue.ReadNumber()}]参数值[服务器UDP端口]", value.ParamValue);
         }
 
         public JT808_0x8103_0x0019 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001A.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001A.cs
index dc101a5..9aa7192 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001A.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001A.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x001A.ParamValue = reader.ReadString(jT808_0x8103_0x001A.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x001A.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x001A.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x001A.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x001A.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x001A.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[道路运输证IC卡认证主服务器 IP]", jT808_0x8103_0x001A.ParamValue);
         }
 
         public JT808_0x8103_0x001A Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001B.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001B.cs
index dd3b76b..ee01f75 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001B.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001B.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x001B.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x001B.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x001B.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x001B.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x001B.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x001B.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x001B.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x001B.ParamValue.ReadNumber()}]参数值[道路运输证IC卡认证主服务器TCP端口]", jT808_0x8103_0x001B.ParamValue);
         }
 
         public JT808_0x8103_0x001B Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001C.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001C.cs
index 2cc6f6a..acf13d3 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001C.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001C.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x001C.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x001C.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x001C.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x001C.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x001C.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x001C.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x001C.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x001C.ParamValue.ReadNumber()}]参数值[道路运输证IC卡认证主服务器UDP端口]", jT808_0x8103_0x001C.ParamValue);
         }
 
         public JT808_0x8103_0x001C Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001D.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001D.cs
index 9253208..6b7b62a 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001D.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x001D.cs
@@ -31,7 +31,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x001D.ParamValue = reader.ReadString(jT808_0x8103_0x001D.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x001D.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x001D.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x001D.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x001D.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x001D.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[道路运输证IC卡认证备份服务器IP]", jT808_0x8103_0x001D.ParamValue);
         }
 
         public JT808_0x8103_0x001D Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0020.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0020.cs
index f319563..2c0acba 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0020.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0020.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0020.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0020.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0020.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0020.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0020.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0020.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0020.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0020.ParamValue.ReadNumber()}]参数值[位置汇报策略,0:定时汇报;1:定距汇报;2:定时和定距汇报]", jT808_0x8103_0x0020.ParamValue);
         }
 
         public JT808_0x8103_0x0020 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0021.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0021.cs
index 24753d6..d9fe8b4 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0021.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0021.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0021.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0021.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0021.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0021.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0021.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0021.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0021.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0021.ParamValue.ReadNumber()}]参数值[位置汇报方案,0:根据 ACC 状态; 1:根据登录状态和 ACC 状态]", jT808_0x8103_0x0021.ParamValue);
         }
 
         public JT808_0x8103_0x0021 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0022.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0022.cs
index 79cac75..c052529 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0022.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0022.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0022.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0022.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0022.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0022.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0022.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0022.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0022.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0022.ParamValue.ReadNumber()}]参数值[驾驶员未登录汇报时间间隔s]", jT808_0x8103_0x0022.ParamValue);
         }
 
         public JT808_0x8103_0x0022 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0023.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0023.cs
index d53654c..f7cf949 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0023.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0023.cs
@@ -32,7 +32,7 @@ namespace JT808.Protocol.MessageBody
             value.ParamValue = reader.ReadString(value.ParamLength);
             writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
             writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", value.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[从服务器APN]", value.ParamValue);
         }
 
         public JT808_0x8103_0x0023 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0024.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0024.cs
index f313b2a..8a03975 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0024.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0024.cs
@@ -32,7 +32,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0024.ParamValue = reader.ReadString(jT808_0x8103_0x0024.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0024.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0024.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0024.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0024.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0024.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[从服务器无线通信拨号用户名]", jT808_0x8103_0x0024.ParamValue);
         }
 
         public JT808_0x8103_0x0024 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0025.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0025.cs
index bedd4bf..6a8b920 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0025.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0025.cs
@@ -32,7 +32,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0025.ParamValue = reader.ReadString(jT808_0x8103_0x0025.ParamLength);
             writer.WriteNumber($"[{ jT808_0x8103_0x0025.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0025.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0025.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0025.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", jT808_0x8103_0x0025.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[从服务器无线通信拨号密码]", jT808_0x8103_0x0025.ParamValue);
         }
 
         public JT808_0x8103_0x0025 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0026.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0026.cs
index fb8cb52..7fc8e97 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0026.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0026.cs
@@ -8,7 +8,7 @@ using JT808.Protocol.MessagePack;
 namespace JT808.Protocol.MessageBody
 {
     /// <summary>
-    /// 从服务器无线通信拨号密码。该值为空,终端应使用主服务器相同配置
+    /// 从服务器备份地址IP。该值为空,终端应使用主服务器相同配置
     /// 2019版本
     /// </summary>
     public class JT808_0x8103_0x0026 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0026>, IJT808_2019_Version, IJT808Analyze
@@ -32,7 +32,7 @@ namespace JT808.Protocol.MessageBody
             value.ParamValue = reader.ReadString(value.ParamLength);
             writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
             writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
-            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值", value.ParamValue);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[从服务器备份地址IP]", value.ParamValue);
         }
 
         public JT808_0x8103_0x0026 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0027.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0027.cs
index 2f4ced2..d8c73d7 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0027.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0027.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0027.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0027.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0027.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0027.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0027.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0027.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0027.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0027.ParamValue.ReadNumber()}]参数值[休眠时汇报时间间隔s]", jT808_0x8103_0x0027.ParamValue);
         }
 
         public JT808_0x8103_0x0027 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0028.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0028.cs
index ad48b81..e26656f 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0028.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0028.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0028.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0028.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0028.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0028.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0028.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0028.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0028.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0028.ParamValue.ReadNumber()}]参数值[紧急报警时汇报时间间隔s]", jT808_0x8103_0x0028.ParamValue);
         }
 
         public JT808_0x8103_0x0028 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0029.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0029.cs
index d8fa0e0..87dcc78 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0029.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0029.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x0029.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x0029.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0029.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x0029.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0029.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x0029.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x0029.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0029.ParamValue.ReadNumber()}]参数值[缺省时间汇报间隔s]", jT808_0x8103_0x0029.ParamValue);
         }
 
         public JT808_0x8103_0x0029 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002C.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002C.cs
index 966f48c..f888335 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002C.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002C.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x002C.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x002C.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x002C.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x002C.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x002C.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x002C.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x002C.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x002C.ParamValue.ReadNumber()}]参数值[缺省距离汇报间隔m]", jT808_0x8103_0x002C.ParamValue);
         }
 
         public JT808_0x8103_0x002C Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002D.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002D.cs
index e54c3dd..9fdf37a 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002D.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002D.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x002D.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x002D.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x002D.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x002D.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x002D.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x002D.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x002D.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x002D.ParamValue.ReadNumber()}]参数值[驾驶员未登录汇报距离间隔m]", jT808_0x8103_0x002D.ParamValue);
         }
         public JT808_0x8103_0x002D Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002E.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002E.cs
index 71f42df..c4aa2ac 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002E.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002E.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x002E.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x002E.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x002E.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x002E.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x002E.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x002E.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x002E.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x002E.ParamValue.ReadNumber()}]参数值[休眠时汇报距离间隔m]", jT808_0x8103_0x002E.ParamValue);
         }
 
         public JT808_0x8103_0x002E Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002F.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002F.cs
index d8ec2a8..60d937f 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002F.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x002F.cs
@@ -30,7 +30,7 @@ namespace JT808.Protocol.MessageBody
             jT808_0x8103_0x002F.ParamValue = reader.ReadUInt32();
             writer.WriteNumber($"[{ jT808_0x8103_0x002F.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x002F.ParamId);
             writer.WriteNumber($"[{jT808_0x8103_0x002F.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x002F.ParamLength);
-            writer.WriteNumber($"[{ jT808_0x8103_0x002F.ParamValue.ReadNumber()}]参数值", jT808_0x8103_0x002F.ParamValue);
+            writer.WriteNumber($"[{ jT808_0x8103_0x002F.ParamValue.ReadNumber()}]参数值[紧急报警时汇报距离间隔m]", jT808_0x8103_0x002F.ParamValue);
         }
 
         public JT808_0x8103_0x002F Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0030.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0030.cs
index 252376b..791052b 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0030.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0030.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 拐点补传角度,<180
     /// </summary>
-    public class JT808_0x8103_0x0030 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0030>
+    public class JT808_0x8103_0x0030 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0030>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0030;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 拐点补传角度,<180
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0030 jT808_0x8103_0x0030 = new JT808_0x8103_0x0030();
+            jT808_0x8103_0x0030.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0030.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0030.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0030.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0030.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0030.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0030.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0030.ParamValue.ReadNumber()}]参数值[拐点补传角度,<180]", jT808_0x8103_0x0030.ParamValue);
+        }
+
         public JT808_0x8103_0x0030 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0030 jT808_0x8103_0x0030 = new JT808_0x8103_0x0030();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0031.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0031.cs
index 94dfeac..40c31cd 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0031.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0031.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 电子围栏半径(非法位移阈值),单位为米
     /// </summary>
-    public class JT808_0x8103_0x0031 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0031>
+    public class JT808_0x8103_0x0031 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0031>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0031;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 电子围栏半径(非法位移阈值),单位为米
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0031 jT808_0x8103_0x0031 = new JT808_0x8103_0x0031();
+            jT808_0x8103_0x0031.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0031.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0031.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0031.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0031.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0031.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0031.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0031.ParamValue.ReadNumber()}]参数值[电子围栏半径m]", jT808_0x8103_0x0031.ParamValue);
+        }
+
         public JT808_0x8103_0x0031 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0031 jT808_0x8103_0x0031 = new JT808_0x8103_0x0031();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0032.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0032.cs
index 00fa008..cdcd144 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0032.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0032.cs
@@ -1,4 +1,6 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
 using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
@@ -8,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 违规行驶时段范围
     /// </summary>
-    public class JT808_0x8103_0x0032 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0032>, IJT808_2019_Version
+    public class JT808_0x8103_0x0032 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0032>, IJT808_2019_Version, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0032;
         /// <summary>
@@ -16,9 +18,21 @@ namespace JT808.Protocol.MessageBody
         /// </summary>
         public override byte ParamLength { get; set; } = 4;
         /// <summary>
-        /// 电子围栏半径(非法位移阈值),单位为米
+        /// 违规行驶时段范围(非法位移阈值),单位为米
         /// </summary>
         public byte[] ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0032 value = new JT808_0x8103_0x0032();
+            value.ParamId = reader.ReadUInt32();
+            value.ParamLength = reader.ReadByte();
+            value.ParamValue = reader.ReadArray(4).ToArray();
+            writer.WriteNumber($"[{ value.ParamId.ReadNumber()}]参数ID", value.ParamId);
+            writer.WriteNumber($"[{value.ParamLength.ReadNumber()}]参数长度", value.ParamLength);
+            writer.WriteString($"[{ value.ParamValue.ToHexString()}]参数值[违规行驶时段范围]", $"开始时间{value.ParamValue[0]}时{value.ParamValue[1]}分,结束时间{value.ParamValue[2]}时{value.ParamValue[3]}分");
+        }
+
         public JT808_0x8103_0x0032 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0032 value = new JT808_0x8103_0x0032();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0040.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0040.cs
index 2318606..6629505 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0040.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0040.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 监控平台电话号码
     /// </summary>
-    public class JT808_0x8103_0x0040 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0040>
+    public class JT808_0x8103_0x0040 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0040>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0040;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 监控平台电话号码
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0040 jT808_0x8103_0x0040 = new JT808_0x8103_0x0040();
+            jT808_0x8103_0x0040.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0040.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0040.ParamLength);
+            jT808_0x8103_0x0040.ParamValue = reader.ReadString(jT808_0x8103_0x0040.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0040.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0040.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0040.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0040.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[监控平台电话号码]", jT808_0x8103_0x0040.ParamValue);
+        }
+
         public JT808_0x8103_0x0040 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0040 jT808_0x8103_0x0040 = new JT808_0x8103_0x0040();
@@ -37,3 +53,5 @@ namespace JT808.Protocol.MessageBody
         }
     }
 }
+
+
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0041.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0041.cs
index 20bac5f..1a4874a 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0041.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0041.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 复位电话号码,可采用此电话号码拨打终端电话让终端复位
     /// </summary>
-    public class JT808_0x8103_0x0041 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0041>
+    public class JT808_0x8103_0x0041 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0041>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0041;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 复位电话号码,可采用此电话号码拨打终端电话让终端复位
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0041 jT808_0x8103_0x0041 = new JT808_0x8103_0x0041();
+            jT808_0x8103_0x0041.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0041.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0041.ParamLength);
+            jT808_0x8103_0x0041.ParamValue = reader.ReadString(jT808_0x8103_0x0041.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0041.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0041.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0041.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0041.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[复位电话号码]", jT808_0x8103_0x0041.ParamValue);
+        }
+
         public JT808_0x8103_0x0041 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0041 jT808_0x8103_0x0041 = new JT808_0x8103_0x0041();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0042.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0042.cs
index 7c76702..f50aa49 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0042.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0042.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 恢复出厂设置电话号码,可采用此电话号码拨打终端电话让终端恢复出厂设置
     /// </summary>
-    public class JT808_0x8103_0x0042 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0042>
+    public class JT808_0x8103_0x0042 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0042>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0042;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 恢复出厂设置电话号码,可采用此电话号码拨打终端电话让终端恢复出厂设置
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0042 jT808_0x8103_0x0042 = new JT808_0x8103_0x0042();
+            jT808_0x8103_0x0042.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0042.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0042.ParamLength);
+            jT808_0x8103_0x0042.ParamValue = reader.ReadString(jT808_0x8103_0x0042.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0042.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0042.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0042.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0042.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[恢复出厂设置电话号码]", jT808_0x8103_0x0042.ParamValue);
+        }
+
         public JT808_0x8103_0x0042 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0042 jT808_0x8103_0x0042 = new JT808_0x8103_0x0042();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0043.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0043.cs
index 9414b6a..a9adbd0 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0043.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0043.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 监控平台 SMS 电话号码
     /// </summary>
-    public class JT808_0x8103_0x0043 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0043>
+    public class JT808_0x8103_0x0043 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0043>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0043;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 监控平台 SMS 电话号码
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0043 jT808_0x8103_0x0043 = new JT808_0x8103_0x0043();
+            jT808_0x8103_0x0043.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0043.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0043.ParamLength);
+            jT808_0x8103_0x0043.ParamValue = reader.ReadString(jT808_0x8103_0x0043.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0043.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0043.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0043.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0043.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[监控平台SMS电话号码]", jT808_0x8103_0x0043.ParamValue);
+        }
+
         public JT808_0x8103_0x0043 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0043 jT808_0x8103_0x0043 = new JT808_0x8103_0x0043();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0044.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0044.cs
index 67764f3..55b56b3 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0044.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0044.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 接收终端 SMS 文本报警号码
     /// </summary>
-    public class JT808_0x8103_0x0044 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0044>
+    public class JT808_0x8103_0x0044 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0044>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0044;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 接收终端 SMS 文本报警号码
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0044 jT808_0x8103_0x0044 = new JT808_0x8103_0x0044();
+            jT808_0x8103_0x0044.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0044.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0044.ParamLength);
+            jT808_0x8103_0x0044.ParamValue = reader.ReadString(jT808_0x8103_0x0044.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0044.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0044.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0044.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0044.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[接收终端SMS文本报警号码]", jT808_0x8103_0x0044.ParamValue);
+        }
+
         public JT808_0x8103_0x0044 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0044 jT808_0x8103_0x0044 = new JT808_0x8103_0x0044();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0045.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0045.cs
index 6694162..0a194cc 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0045.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0045.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 终端电话接听策略,0:自动接听;1:ACC ON 时自动接听,OFF 时手动接听
     /// </summary>
-    public class JT808_0x8103_0x0045 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0045>
+    public class JT808_0x8103_0x0045 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0045>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0045;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 终端电话接听策略,0:自动接听;1:ACC ON 时自动接听,OFF 时手动接听
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0045 jT808_0x8103_0x0045 = new JT808_0x8103_0x0045();
+            jT808_0x8103_0x0045.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0045.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0045.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0045.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0045.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0045.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0045.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0045.ParamValue.ReadNumber()}]参数值[终端电话接听策略,0:自动接听;1:ACC ON 时自动接听,OFF 时手动接听]", jT808_0x8103_0x0045.ParamValue);
+        }
+
         public JT808_0x8103_0x0045 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0045 jT808_0x8103_0x0045 = new JT808_0x8103_0x0045();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0046.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0046.cs
index 8241e92..128eac2 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0046.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0046.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 每次最长通话时间,单位为秒(s),0 为不允许通话,0xFFFFFFFF 为不限制
     /// </summary>
-    public class JT808_0x8103_0x0046 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0046>
+    public class JT808_0x8103_0x0046 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0046>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0046;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 每次最长通话时间,单位为秒(s),0 为不允许通话,0xFFFFFFFF 为不限制
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0046 jT808_0x8103_0x0046 = new JT808_0x8103_0x0046();
+            jT808_0x8103_0x0046.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0046.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0046.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0046.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0046.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0046.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0046.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0046.ParamValue.ReadNumber()}]参数值[每次最长通话时间s]", jT808_0x8103_0x0046.ParamValue);
+        }
+
         public JT808_0x8103_0x0046 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0046 jT808_0x8103_0x0046 = new JT808_0x8103_0x0046();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0047.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0047.cs
index e71756b..423dc4e 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0047.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0047.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 当月最长通话时间,单位为秒(s),0 为不允许通话,0xFFFFFFFF 为不限制
     /// </summary>
-    public class JT808_0x8103_0x0047 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0047>
+    public class JT808_0x8103_0x0047 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0047>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0047;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 当月最长通话时间,单位为秒(s),0 为不允许通话,0xFFFFFFFF 为不限制
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0047 jT808_0x8103_0x0047 = new JT808_0x8103_0x0047();
+            jT808_0x8103_0x0047.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0047.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0047.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0047.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0047.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0047.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0047.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0047.ParamValue.ReadNumber()}]参数值[当月最长通话时间s]", jT808_0x8103_0x0047.ParamValue);
+        }
+
         public JT808_0x8103_0x0047 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0047 jT808_0x8103_0x0047 = new JT808_0x8103_0x0047();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0048.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0048.cs
index 8b71ec0..4634fd1 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0048.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0048.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 监听电话号码
     /// </summary>
-    public class JT808_0x8103_0x0048 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0048>
+    public class JT808_0x8103_0x0048 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0048>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0048;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 监听电话号码
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0048 jT808_0x8103_0x0048 = new JT808_0x8103_0x0048();
+            jT808_0x8103_0x0048.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0048.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0048.ParamLength);
+            jT808_0x8103_0x0048.ParamValue = reader.ReadString(jT808_0x8103_0x0048.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0048.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0048.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0048.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0048.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[监听电话号码]", jT808_0x8103_0x0048.ParamValue);
+        }
+
         public JT808_0x8103_0x0048 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0048 jT808_0x8103_0x0048 = new JT808_0x8103_0x0048();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0049.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0049.cs
index 239f426..fa9e84e 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0049.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0049.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 监管平台特权短信号码
     /// </summary>
-    public class JT808_0x8103_0x0049 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0049>
+    public class JT808_0x8103_0x0049 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0049>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0049;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 监管平台特权短信号码
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0049 jT808_0x8103_0x0049 = new JT808_0x8103_0x0049();
+            jT808_0x8103_0x0049.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0049.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0049.ParamLength);
+            jT808_0x8103_0x0049.ParamValue = reader.ReadString(jT808_0x8103_0x0049.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0049.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0049.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0049.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0049.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[监管平台特权短信号码]", jT808_0x8103_0x0049.ParamValue);
+        }
+
         public JT808_0x8103_0x0049 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0049 jT808_0x8103_0x0049 = new JT808_0x8103_0x0049();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0050.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0050.cs
index b302357..be33859 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0050.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0050.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 报警屏蔽字,与位置信息汇报消息中的报警标志相对应,相应位为 1则相应报警被屏蔽
     /// </summary>
-    public class JT808_0x8103_0x0050 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0050>
+    public class JT808_0x8103_0x0050 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0050>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0050;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 报警屏蔽字,与位置信息汇报消息中的报警标志相对应,相应位为 1则相应报警被屏蔽
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0050 jT808_0x8103_0x0050 = new JT808_0x8103_0x0050();
+            jT808_0x8103_0x0050.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0050.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0050.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0050.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0050.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0050.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0050.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0050.ParamValue.ReadNumber()}]参数值[报警屏蔽字,与位置信息汇报消息中的报警标志相对应]", jT808_0x8103_0x0050.ParamValue);
+        }
+
         public JT808_0x8103_0x0050 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0050 jT808_0x8103_0x0050 = new JT808_0x8103_0x0050();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0051.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0051.cs
index aad8038..765a882 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0051.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0051.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 报警发送文本 SMS 开关,与位置信息汇报消息中的报警标志相对应,相应位为 1 则相应报警时发送文本 SMS
     /// </summary>
-    public class JT808_0x8103_0x0051 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0051>
+    public class JT808_0x8103_0x0051 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0051>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0051;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 报警发送文本 SMS 开关,与位置信息汇报消息中的报警标志相对应,相应位为 1 则相应报警时发送文本 SMS
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0051 jT808_0x8103_0x0051 = new JT808_0x8103_0x0051();
+            jT808_0x8103_0x0051.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0051.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0051.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0051.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0051.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0051.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0051.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0051.ParamValue.ReadNumber()}]参数值[报警发送文本SMS开关]", jT808_0x8103_0x0051.ParamValue);
+        }
+
         public JT808_0x8103_0x0051 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0051 jT808_0x8103_0x0051 = new JT808_0x8103_0x0051();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0052.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0052.cs
index cb75ea2..c1e1a54 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0052.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0052.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 报警拍摄开关,与位置信息汇报消息中的报警标志相对应,相应位为1 则相应报警时摄像头拍摄
     /// </summary>
-    public class JT808_0x8103_0x0052 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0052>
+    public class JT808_0x8103_0x0052 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0052>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0052;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 报警拍摄开关,与位置信息汇报消息中的报警标志相对应,相应位为1 则相应报警时摄像头拍摄
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0052 jT808_0x8103_0x0052 = new JT808_0x8103_0x0052();
+            jT808_0x8103_0x0052.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0052.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0052.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0052.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0052.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0052.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0052.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0052.ParamValue.ReadNumber()}]参数值[报警拍摄开关]", jT808_0x8103_0x0052.ParamValue);
+        }
+
         public JT808_0x8103_0x0052 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0052 jT808_0x8103_0x0052 = new JT808_0x8103_0x0052();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0053.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0053.cs
index bc8642a..5f0aca1 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0053.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0053.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 报警拍摄存储标志,与位置信息汇报消息中的报警标志相对应,相应位为 1 则对相应报警时拍的照片进行存储,否则实时上传
     /// </summary>
-    public class JT808_0x8103_0x0053 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0053>
+    public class JT808_0x8103_0x0053 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0053>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0053;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 报警拍摄存储标志,与位置信息汇报消息中的报警标志相对应,相应位为 1 则对相应报警时拍的照片进行存储,否则实时上传
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0053 jT808_0x8103_0x0053 = new JT808_0x8103_0x0053();
+            jT808_0x8103_0x0053.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0053.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0053.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0053.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0053.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0053.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0053.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0053.ParamValue.ReadNumber()}]参数值[报警拍摄存储标志]", jT808_0x8103_0x0053.ParamValue);
+        }
+
         public JT808_0x8103_0x0053 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0053 jT808_0x8103_0x0053 = new JT808_0x8103_0x0053();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0054.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0054.cs
index dce64ea..79af57c 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0054.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0054.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 关键标志,与位置信息汇报消息中的报警标志相对应,相应位为 1 则对相应报警为关键报警
     /// </summary>
-    public class JT808_0x8103_0x0054 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0054>
+    public class JT808_0x8103_0x0054 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0054>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0054;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 关键标志,与位置信息汇报消息中的报警标志相对应,相应位为 1 则对相应报警为关键报警
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0054 jT808_0x8103_0x0054 = new JT808_0x8103_0x0054();
+            jT808_0x8103_0x0054.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0054.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0054.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0054.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0054.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0054.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0054.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0054.ParamValue.ReadNumber()}]参数值[关键标志]", jT808_0x8103_0x0054.ParamValue);
+        }
+
         public JT808_0x8103_0x0054 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0054 jT808_0x8103_0x0054 = new JT808_0x8103_0x0054();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0055.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0055.cs
index ee937d7..92a0bdf 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0055.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0055.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 最高速度,单位为公里每小时(km/h)
     /// </summary>
-    public class JT808_0x8103_0x0055 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0055>
+    public class JT808_0x8103_0x0055 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0055>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0055;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 最高速度,单位为公里每小时(km/h)
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0055 jT808_0x8103_0x0055 = new JT808_0x8103_0x0055();
+            jT808_0x8103_0x0055.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0055.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0055.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0055.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0055.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0055.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0055.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0055.ParamValue.ReadNumber()}]参数值[最高速度km/h]", jT808_0x8103_0x0055.ParamValue);
+        }
+
         public JT808_0x8103_0x0055 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0055 jT808_0x8103_0x0055 = new JT808_0x8103_0x0055();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0056.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0056.cs
index 3d4efcc..6cee5ab 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0056.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0056.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 超速持续时间,单位为秒(s)
     /// </summary>
-    public class JT808_0x8103_0x0056 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0056>
+    public class JT808_0x8103_0x0056 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0056>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0056;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 超速持续时间,单位为秒(s)
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0056 jT808_0x8103_0x0056 = new JT808_0x8103_0x0056();
+            jT808_0x8103_0x0056.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0056.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0056.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0056.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0056.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0056.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0056.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0056.ParamValue.ReadNumber()}]参数值[超速持续时间s]", jT808_0x8103_0x0056.ParamValue);
+        }
+
         public JT808_0x8103_0x0056 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0056 jT808_0x8103_0x0056 = new JT808_0x8103_0x0056();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0057.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0057.cs
index a5ae369..0637518 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0057.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0057.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 连续驾驶时间门限,单位为秒(s)
     /// </summary>
-    public class JT808_0x8103_0x0057 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0057>
+    public class JT808_0x8103_0x0057 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0057>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0057;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 连续驾驶时间门限,单位为秒(s)
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0057 jT808_0x8103_0x0057 = new JT808_0x8103_0x0057();
+            jT808_0x8103_0x0057.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0057.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0057.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0057.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0057.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0057.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0057.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0057.ParamValue.ReadNumber()}]参数值[连续驾驶时间门限s]", jT808_0x8103_0x0057.ParamValue);
+        }
+
         public JT808_0x8103_0x0057 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0057 jT808_0x8103_0x0057 = new JT808_0x8103_0x0057();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0058.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0058.cs
index 812bcb4..f4dad2b 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0058.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0058.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 当天累计驾驶时间门限,单位为秒(s)
     /// </summary>
-    public class JT808_0x8103_0x0058 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0058>
+    public class JT808_0x8103_0x0058 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0058>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0058;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 当天累计驾驶时间门限,单位为秒(s)
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0058 jT808_0x8103_0x0058 = new JT808_0x8103_0x0058();
+            jT808_0x8103_0x0058.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0058.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0058.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0058.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0058.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0058.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0058.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0058.ParamValue.ReadNumber()}]参数值[当天累计驾驶时间门限s]", jT808_0x8103_0x0058.ParamValue);
+        }
+
         public JT808_0x8103_0x0058 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0058 jT808_0x8103_0x0058 = new JT808_0x8103_0x0058();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0059.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0059.cs
index 83ce52b..4584ea4 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0059.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0059.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 最小休息时间,单位为秒(s)
     /// </summary>
-    public class JT808_0x8103_0x0059 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0059>
+    public class JT808_0x8103_0x0059 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0059>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0059;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 最小休息时间,单位为秒(s)
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0059 jT808_0x8103_0x0059 = new JT808_0x8103_0x0059();
+            jT808_0x8103_0x0059.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0059.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0059.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0059.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0059.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0059.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0059.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0059.ParamValue.ReadNumber()}]参数值[最小休息时间s]", jT808_0x8103_0x0059.ParamValue);
+        }
+
         public JT808_0x8103_0x0059 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0059 jT808_0x8103_0x0059 = new JT808_0x8103_0x0059();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005A.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005A.cs
index 54c581a..259ad46 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005A.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005A.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 最长停车时间,单位为秒(s)
     /// </summary>
-    public class JT808_0x8103_0x005A : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005A>
+    public class JT808_0x8103_0x005A : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005A>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x005A;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 最长停车时间,单位为秒(s)
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x005A jT808_0x8103_0x005A = new JT808_0x8103_0x005A();
+            jT808_0x8103_0x005A.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x005A.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x005A.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x005A.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x005A.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x005A.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x005A.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x005A.ParamValue.ReadNumber()}]参数值[最长停车时间s]", jT808_0x8103_0x005A.ParamValue);
+        }
+
         public JT808_0x8103_0x005A Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x005A jT808_0x8103_0x005A = new JT808_0x8103_0x005A();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005B.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005B.cs
index 412e235..ff563bd 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005B.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005B.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 超速报警预警差值,单位为 1/10Km/h
     /// </summary>
-    public class JT808_0x8103_0x005B : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005B>
+    public class JT808_0x8103_0x005B : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005B>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x005B;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 超速报警预警差值,单位为 1/10Km/h
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x005B jT808_0x8103_0x005B = new JT808_0x8103_0x005B();
+            jT808_0x8103_0x005B.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x005B.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x005B.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x005B.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x005B.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x005B.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x005B.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x005B.ParamValue.ReadNumber()}]参数值[超速报警预警差值1/10Km/h]", jT808_0x8103_0x005B.ParamValue);
+        }
+
         public JT808_0x8103_0x005B Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x005B jT808_0x8103_0x005B = new JT808_0x8103_0x005B();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005C.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005C.cs
index 3238fd5..4b61f11 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005C.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005C.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 疲劳驾驶预警差值,单位为秒(s),>0
     /// </summary>
-    public class JT808_0x8103_0x005C : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005C>
+    public class JT808_0x8103_0x005C : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005C>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x005C;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 疲劳驾驶预警差值,单位为秒(s),>0
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x005C jT808_0x8103_0x005C = new JT808_0x8103_0x005C();
+            jT808_0x8103_0x005C.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x005C.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x005C.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x005C.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x005C.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x005C.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x005C.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x005C.ParamValue.ReadNumber()}]参数值[疲劳驾驶预警差值s]", jT808_0x8103_0x005C.ParamValue);
+        }
+
         public JT808_0x8103_0x005C Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x005C jT808_0x8103_0x005C = new JT808_0x8103_0x005C();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005D.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005D.cs
index 83695e2..521b43a 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005D.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005D.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -9,7 +12,7 @@ namespace JT808.Protocol.MessageBody
     /// b7-b0: 碰撞时间,单位 4ms;
     /// b15-b8:碰撞加速度,单位 0.1g,设置范围在:0-79 之间,默认为10。
     /// </summary>
-    public class JT808_0x8103_0x005D : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005D>
+    public class JT808_0x8103_0x005D : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005D>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x005D;
         /// <summary>
@@ -18,10 +21,22 @@ namespace JT808.Protocol.MessageBody
         public override byte ParamLength { get; set; } = 2;
         /// <summary>
         /// 碰撞报警参数设置
-        /// b7-b0: 碰撞时间,单位 4ms;
+        /// b7-b0: 碰撞时间,单位4ms;
         /// b15-b8:碰撞加速度,单位 0.1g,设置范围在:0-79 之间,默认为10。
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x005D jT808_0x8103_0x005D = new JT808_0x8103_0x005D();
+            jT808_0x8103_0x005D.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x005D.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x005D.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x005D.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x005D.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x005D.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x005D.ParamLength);
+            writer.WriteString($"[{ jT808_0x8103_0x005D.ParamValue.ReadNumber()}]参数值[碰撞报警参数设置]",$"碰撞时间:{(byte)jT808_0x8103_0x005D.ParamValue}(ms),碰撞加速度:{(byte)(jT808_0x8103_0x005D.ParamValue>>8)}(0.1g)");
+        }
+
         public JT808_0x8103_0x005D Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x005D jT808_0x8103_0x005D = new JT808_0x8103_0x005D();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005E.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005E.cs
index 268230b..a3e6f0f 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005E.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x005E.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -8,7 +11,7 @@ namespace JT808.Protocol.MessageBody
     /// 侧翻报警参数设置:
     /// 侧翻角度,单位 1 度,默认为 30 度
     /// </summary>
-    public class JT808_0x8103_0x005E : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005E>
+    public class JT808_0x8103_0x005E : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x005E>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x005E;
         /// <summary>
@@ -20,6 +23,18 @@ namespace JT808.Protocol.MessageBody
         /// 侧翻角度,单位 1 度,默认为 30 度
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x005E jT808_0x8103_0x005E = new JT808_0x8103_0x005E();
+            jT808_0x8103_0x005E.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x005E.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x005E.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x005E.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x005E.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x005E.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x005E.ParamLength);
+            writer.WriteString($"[{ jT808_0x8103_0x005E.ParamValue.ReadNumber()}]参数值[侧翻报警参数设置]",$"侧翻角度:{jT808_0x8103_0x005E.ParamValue}(度)" );
+        }
+
         public JT808_0x8103_0x005E Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x005E jT808_0x8103_0x005E = new JT808_0x8103_0x005E();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0064.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0064.cs
index 78e829e..e55fbfa 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0064.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0064.cs
@@ -1,13 +1,16 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
 {
     /// <summary>
-    /// 定时拍照控制,见 表 13
+    /// 定时拍照控制,见 表 14
     /// </summary>
-    public class JT808_0x8103_0x0064 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0064>
+    public class JT808_0x8103_0x0064 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0064>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0064;
         /// <summary>
@@ -15,9 +18,21 @@ namespace JT808.Protocol.MessageBody
         /// </summary>
         public override byte ParamLength { get; set; } = 4;
         /// <summary>
-        /// 定时拍照控制,见 表 13
+        /// 定时拍照控制,见 表 14
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0064 jT808_0x8103_0x0064 = new JT808_0x8103_0x0064();
+            jT808_0x8103_0x0064.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0064.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0064.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0064.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0064.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0064.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0064.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0064.ParamValue.ReadNumber()}]参数值[定时拍照控制,见表14]", jT808_0x8103_0x0064.ParamValue);
+        }
+
         public JT808_0x8103_0x0064 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0064 jT808_0x8103_0x0064 = new JT808_0x8103_0x0064();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0065.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0065.cs
index e20d683..ec978da 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0065.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0065.cs
@@ -1,13 +1,16 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
 {
     /// <summary>
-    /// 定距拍照控制,见 表 14
+    /// 定距拍照控制,见 表 15
     /// </summary>
-    public class JT808_0x8103_0x0065 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0065>
+    public class JT808_0x8103_0x0065 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0065>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0065;
         /// <summary>
@@ -15,9 +18,21 @@ namespace JT808.Protocol.MessageBody
         /// </summary>
         public override byte ParamLength { get; set; } = 4;
         /// <summary>
-        /// 定距拍照控制,见 表 14
+        /// 定距拍照控制,见 表 15
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0065 jT808_0x8103_0x0065 = new JT808_0x8103_0x0065();
+            jT808_0x8103_0x0065.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0065.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0065.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0065.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0065.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0065.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0065.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0065.ParamValue.ReadNumber()}]参数值[定距拍照控制,见表15]", jT808_0x8103_0x0065.ParamValue);
+        }
+
         public JT808_0x8103_0x0065 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0065 jT808_0x8103_0x0065 = new JT808_0x8103_0x0065();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0070.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0070.cs
index 32a1806..26aacee 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0070.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0070.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 图像/视频质量,1-10,1 最好
     /// </summary>
-    public class JT808_0x8103_0x0070 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0070>
+    public class JT808_0x8103_0x0070 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0070>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0070;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 图像/视频质量,1-10,1 最好
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0070 jT808_0x8103_0x0070 = new JT808_0x8103_0x0070();
+            jT808_0x8103_0x0070.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0070.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0070.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0070.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0070.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0070.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0070.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0070.ParamValue.ReadNumber()}]参数值[图像/视频质量,越小越好]", jT808_0x8103_0x0070.ParamValue);
+        }
+
         public JT808_0x8103_0x0070 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0070 jT808_0x8103_0x0070 = new JT808_0x8103_0x0070();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0071.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0071.cs
index 22daffc..602d975 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0071.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0071.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 亮度,0-255
     /// </summary>
-    public class JT808_0x8103_0x0071 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0071>
+    public class JT808_0x8103_0x0071 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0071>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0071;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 亮度,0-255
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0071 jT808_0x8103_0x0071 = new JT808_0x8103_0x0071();
+            jT808_0x8103_0x0071.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0071.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0071.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0071.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0071.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0071.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0071.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0071.ParamValue.ReadNumber()}]参数值[亮度]", jT808_0x8103_0x0071.ParamValue);
+        }
+
         public JT808_0x8103_0x0071 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0071 jT808_0x8103_0x0071 = new JT808_0x8103_0x0071();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0072.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0072.cs
index 6d89b54..73349d8 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0072.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0072.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 对比度,0-127
     /// </summary>
-    public class JT808_0x8103_0x0072 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0072>
+    public class JT808_0x8103_0x0072 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0072>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0072;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 对比度,0-127
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0072 jT808_0x8103_0x0072 = new JT808_0x8103_0x0072();
+            jT808_0x8103_0x0072.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0072.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0072.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0072.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0072.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0072.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0072.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0072.ParamValue.ReadNumber()}]参数值[对比度]", jT808_0x8103_0x0072.ParamValue);
+        }
+
         public JT808_0x8103_0x0072 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0072 jT808_0x8103_0x0072 = new JT808_0x8103_0x0072();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0073.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0073.cs
index f8e9208..0eacbc6 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0073.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0073.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 饱和度,0-127
     /// </summary>
-    public class JT808_0x8103_0x0073 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0073>
+    public class JT808_0x8103_0x0073 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0073>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0073;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 饱和度,0-127
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0073 jT808_0x8103_0x0073 = new JT808_0x8103_0x0073();
+            jT808_0x8103_0x0073.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0073.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0073.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0073.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0073.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0073.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0073.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0073.ParamValue.ReadNumber()}]参数值[饱和度]", jT808_0x8103_0x0073.ParamValue);
+        }
+
         public JT808_0x8103_0x0073 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0073 jT808_0x8103_0x0073 = new JT808_0x8103_0x0073();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0074.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0074.cs
index 279f78b..63cad28 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0074.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0074.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 色度,0-255
     /// </summary>
-    public class JT808_0x8103_0x0074 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0074>
+    public class JT808_0x8103_0x0074 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0074>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0074;
         /// <summary>
@@ -15,9 +18,21 @@ namespace JT808.Protocol.MessageBody
         /// </summary>
         public override byte ParamLength { get; set; } = 4;
         /// <summary>
-        /// 饱和度,0-127
+        /// 色度,0-255
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0074 jT808_0x8103_0x0074 = new JT808_0x8103_0x0074();
+            jT808_0x8103_0x0074.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0074.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0074.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0074.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0074.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0074.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0074.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0074.ParamValue.ReadNumber()}]参数值[色度]", jT808_0x8103_0x0074.ParamValue);
+        }
+
         public JT808_0x8103_0x0074 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0074 jT808_0x8103_0x0074 = new JT808_0x8103_0x0074();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0080.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0080.cs
index fc10ba4..3e51214 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0080.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0080.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 车辆里程表读数,1/10km
     /// </summary>
-    public class JT808_0x8103_0x0080 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0080>
+    public class JT808_0x8103_0x0080 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0080>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0080;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 车辆里程表读数,1/10km
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0080 jT808_0x8103_0x0080 = new JT808_0x8103_0x0080();
+            jT808_0x8103_0x0080.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0080.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0080.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0080.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0080.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0080.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0080.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0080.ParamValue.ReadNumber()}]参数值[车辆里程表读数1/10km]", jT808_0x8103_0x0080.ParamValue);
+        }
+
         public JT808_0x8103_0x0080 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0080 jT808_0x8103_0x0080 = new JT808_0x8103_0x0080();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0081.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0081.cs
index dd1ebb3..89bda97 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0081.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0081.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 车辆所在的省域 ID
     /// </summary>
-    public class JT808_0x8103_0x0081 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0081>
+    public class JT808_0x8103_0x0081 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0081>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0081;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 车辆所在的省域 ID
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0081 jT808_0x8103_0x0081 = new JT808_0x8103_0x0081();
+            jT808_0x8103_0x0081.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0081.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0081.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0081.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0081.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0081.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0081.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0081.ParamValue.ReadNumber()}]参数值[车辆所在的省域ID]", jT808_0x8103_0x0081.ParamValue);
+        }
+
         public JT808_0x8103_0x0081 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0081 jT808_0x8103_0x0081 = new JT808_0x8103_0x0081();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0082.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0082.cs
index 5a12098..08920a3 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0082.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0082.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 车辆所在的市域 ID
     /// </summary>
-    public class JT808_0x8103_0x0082 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0082>
+    public class JT808_0x8103_0x0082 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0082>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0082;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 车辆所在的市域 ID
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0082 jT808_0x8103_0x0082 = new JT808_0x8103_0x0082();
+            jT808_0x8103_0x0082.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0082.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0082.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0082.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0082.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0082.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0082.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0082.ParamValue.ReadNumber()}]参数值[车辆所在的市域ID]", jT808_0x8103_0x0082.ParamValue);
+        }
+
         public JT808_0x8103_0x0082 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0082 jT808_0x8103_0x0082 = new JT808_0x8103_0x0082();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0083.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0083.cs
index 3bda09d..2e4c6c7 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0083.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0083.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 公安交通管理部门颁发的机动车号牌
     /// </summary>
-    public class JT808_0x8103_0x0083 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0083>
+    public class JT808_0x8103_0x0083 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0083>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0083;
         /// <summary>
@@ -18,6 +21,19 @@ namespace JT808.Protocol.MessageBody
         /// 公安交通管理部门颁发的机动车号牌
         /// </summary>
         public string ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0083 jT808_0x8103_0x0083 = new JT808_0x8103_0x0083();
+            jT808_0x8103_0x0083.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0083.ParamLength = reader.ReadByte();
+            var paramValue = reader.ReadVirtualArray(jT808_0x8103_0x0083.ParamLength);
+            jT808_0x8103_0x0083.ParamValue = reader.ReadString(jT808_0x8103_0x0083.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0083.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0083.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0083.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0083.ParamLength);
+            writer.WriteString($"[{paramValue.ToArray().ToHexString()}]参数值[公安交通管理部门颁发的机动车号牌]", jT808_0x8103_0x0083.ParamValue);
+        }
+
         public JT808_0x8103_0x0083 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0083 jT808_0x8103_0x0083 = new JT808_0x8103_0x0083();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0084.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0084.cs
index ceb2b6b..0835b6d 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0084.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0084.cs
@@ -1,4 +1,6 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
 using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
@@ -8,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// 车牌颜色,按照 JT/T415-2006 的 5.4.12
     /// </summary>
-    public class JT808_0x8103_0x0084 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0084>, IJT808_2019_Version
+    public class JT808_0x8103_0x0084 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0084>, IJT808_2019_Version, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0084;
         /// <summary>
@@ -19,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// 车牌颜色,按照 JT/T415-2006 的 5.4.12
         /// </summary>
         public byte ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0084 jT808_0x8103_0x0084 = new JT808_0x8103_0x0084();
+            jT808_0x8103_0x0084.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0084.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0084.ParamValue = reader.ReadByte();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0084.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0084.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0084.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0084.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0084.ParamValue.ReadNumber()}]参数值[车牌颜色,按照 JT/T415-2006 的 5.4.12]", jT808_0x8103_0x0084.ParamValue);
+        }
+
         public JT808_0x8103_0x0084 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0084 jT808_0x8103_0x0084 = new JT808_0x8103_0x0084();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0090.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0090.cs
index 09d1789..48b5c5e 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0090.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0090.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -11,7 +14,7 @@ namespace JT808.Protocol.MessageBody
     /// bit2,0:禁用 GLONASS 定位, 1:启用 GLONASS 定位;
     /// bit3,0:禁用 Galileo 定位, 1:启用 Galileo 定位。
     /// </summary>
-    public class JT808_0x8103_0x0090 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0090>
+    public class JT808_0x8103_0x0090 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0090>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0090;
         /// <summary>
@@ -26,6 +29,23 @@ namespace JT808.Protocol.MessageBody
         /// bit3,0:禁用 Galileo 定位, 1:启用 Galileo 定位。
         /// </summary>
         public byte ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0090 jT808_0x8103_0x0090 = new JT808_0x8103_0x0090();
+            jT808_0x8103_0x0090.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0090.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0090.ParamValue = reader.ReadByte();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0090.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0090.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0090.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0090.ParamLength);
+            writer.WriteStartArray($"[{ jT808_0x8103_0x0090.ParamValue.ReadNumber()}]参数值[GNSS定位模式]");
+            writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 01) > 0 ? "启用GPS定位" : "禁用GPS定位");
+            writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 02) > 0 ? "启用北斗定位" : "禁用北斗定位");
+            writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 04) > 0 ? "启用GLONASS定位" : "禁用GLONASS定位");
+            writer.WriteStringValue((jT808_0x8103_0x0090.ParamValue & 08) > 0 ? "启用Galileo定位" : "禁用Galileo定位");
+            writer.WriteEndArray();
+        }
+
         public JT808_0x8103_0x0090 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0090 jT808_0x8103_0x0090 = new JT808_0x8103_0x0090();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0091.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0091.cs
index cbe094f..7c66de1 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0091.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0091.cs
@@ -1,5 +1,9 @@
-using JT808.Protocol.Attributes;
+using System;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -10,7 +14,7 @@ namespace JT808.Protocol.MessageBody
     /// 0x02:19200;0x03:38400;
     /// 0x04:57600;0x05:115200。
     /// </summary>
-    public class JT808_0x8103_0x0091 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0091>
+    public class JT808_0x8103_0x0091 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0091>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0091;
         /// <summary>
@@ -24,6 +28,18 @@ namespace JT808.Protocol.MessageBody
         /// 0x04:57600;0x05:115200。
         /// </summary>
         public byte ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0091 jT808_0x8103_0x0091 = new JT808_0x8103_0x0091();
+            jT808_0x8103_0x0091.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0091.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0091.ParamValue = reader.ReadByte();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0091.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0091.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0091.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0091.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0091.ParamValue.ReadNumber()}]参数值[GNSS波特率]",Math.Pow(4800, jT808_0x8103_0x0091.ParamValue));
+        }
+
         public JT808_0x8103_0x0091 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0091 jT808_0x8103_0x0091 = new JT808_0x8103_0x0091();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0092.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0092.cs
index e747a8c..eb8500e 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0092.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0092.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -10,7 +13,7 @@ namespace JT808.Protocol.MessageBody
     /// 0x02:2000ms;0x03:3000ms;
     /// 0x04:4000ms。
     /// </summary>
-    public class JT808_0x8103_0x0092 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0092>
+    public class JT808_0x8103_0x0092 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0092>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0092;
         /// <summary>
@@ -24,6 +27,18 @@ namespace JT808.Protocol.MessageBody
         /// 0x04:4000ms。
         /// </summary>
         public byte ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0092 jT808_0x8103_0x0092 = new JT808_0x8103_0x0092();
+            jT808_0x8103_0x0092.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0092.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0092.ParamValue = reader.ReadByte();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0092.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0092.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0092.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0092.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0092.ParamValue.ReadNumber()}]GNSS模块详细定位数据输出频率ms", jT808_0x8103_0x0092.ParamValue==0?500: jT808_0x8103_0x0092.ParamValue*1000);
+        }
+
         public JT808_0x8103_0x0092 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0092 jT808_0x8103_0x0092 = new JT808_0x8103_0x0092();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0093.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0093.cs
index 223f8a9..483230d 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0093.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0093.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// GNSS 模块详细定位数据采集频率,单位为秒,默认为 1。
     /// </summary>
-    public class JT808_0x8103_0x0093 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0093>
+    public class JT808_0x8103_0x0093 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0093>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0093;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// GNSS 模块详细定位数据采集频率,单位为秒,默认为 1。
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0093 jT808_0x8103_0x0093 = new JT808_0x8103_0x0093();
+            jT808_0x8103_0x0093.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0093.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0093.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0093.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0093.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0093.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0093.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0093.ParamValue.ReadNumber()}]参数值[GNSS模块详细定位数据采集频率s]", jT808_0x8103_0x0093.ParamValue);
+        }
+
         public JT808_0x8103_0x0093 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0093 jT808_0x8103_0x0093 = new JT808_0x8103_0x0093();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0094.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0094.cs
index 015db18..a4a36fe 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0094.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0094.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -13,7 +16,7 @@ namespace JT808.Protocol.MessageBody
     /// 0x0C,按累计距离上传,达到距离后自动停止上传;
     /// 0x0D,按累计条数上传,达到上传条数后自动停止上传。
     /// </summary>
-    public class JT808_0x8103_0x0094 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0094>
+    public class JT808_0x8103_0x0094 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0094>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0094;
         /// <summary>
@@ -30,6 +33,37 @@ namespace JT808.Protocol.MessageBody
         /// 0x0D,按累计条数上传,达到上传条数后自动停止上传。
         /// </summary>
         public byte ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0094 jT808_0x8103_0x0094 = new JT808_0x8103_0x0094();
+            jT808_0x8103_0x0094.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0094.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0094.ParamValue = reader.ReadByte();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0094.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0094.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0094.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0094.ParamLength);
+            writer.WriteString($"[{ jT808_0x8103_0x0094.ParamValue.ReadNumber()}]参数值[GNSS模块详细定位数据上传方式]", GetUploadType( jT808_0x8103_0x0094.ParamValue));
+            string GetUploadType(byte num) {
+                switch (num)
+                {
+                    case 0x00:
+                        return "本地存储,不上传(默认值)";
+                    case 0x01:
+                        return "按时间间隔上传";
+                    case 0x02:
+                        return "按距离间隔上传";
+                    case 0x0B:
+                        return "按累计时间上传,达到传输时间后自动停止上传";
+                    case 0x0C:
+                        return "按累计距离上传,达到距离后自动停止上传";
+                    case 0x0D:
+                        return "按累计条数上传,达到上传条数后自动停止上传";
+                    default:
+                        return "未识别";
+                }
+            }
+        }
+
         public JT808_0x8103_0x0094 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0094 jT808_0x8103_0x0094 = new JT808_0x8103_0x0094();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0095.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0095.cs
index 4afca31..216e0e3 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0095.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0095.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -12,7 +15,7 @@ namespace JT808.Protocol.MessageBody
     /// 上传方式为 0x0C 时,单位为米;
     /// 上传方式为 0x0D 时,单位为条。
     /// </summary>
-    public class JT808_0x8103_0x0095 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0095>
+    public class JT808_0x8103_0x0095 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0095>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0095;
         /// <summary>
@@ -28,6 +31,18 @@ namespace JT808.Protocol.MessageBody
         /// 上传方式为 0x0D 时,单位为条。
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0095 jT808_0x8103_0x0095 = new JT808_0x8103_0x0095();
+            jT808_0x8103_0x0095.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0095.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0095.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0095.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0095.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0095.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0095.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0095.ParamValue.ReadNumber()}]参数值[GNSS模块详细定位数据上传设置]", jT808_0x8103_0x0095.ParamValue);
+        }
+
         public JT808_0x8103_0x0095 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0095 jT808_0x8103_0x0095 = new JT808_0x8103_0x0095();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0100.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0100.cs
index b55d432..6815f2b 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0100.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0100.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// CAN 总线通道 1 采集时间间隔(ms),0 表示不采集
     /// </summary>
-    public class JT808_0x8103_0x0100 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0100>
+    public class JT808_0x8103_0x0100 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0100>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0100;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// CAN 总线通道 1 采集时间间隔(ms),0 表示不采集
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0100 jT808_0x8103_0x0100 = new JT808_0x8103_0x0100();
+            jT808_0x8103_0x0100.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0100.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0100.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0100.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0100.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0100.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0100.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0100.ParamValue.ReadNumber()}]参数值[CAN总线通道1 ,采集时间间隔(ms),0 表示不采集]", jT808_0x8103_0x0100.ParamValue);
+        }
+
         public JT808_0x8103_0x0100 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0100 jT808_0x8103_0x0100 = new JT808_0x8103_0x0100();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0101.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0101.cs
index 0ba8322..f5dbf11 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0101.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0101.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// CAN 总线通道 1 上传时间间隔(s),0 表示不上传
     /// </summary>
-    public class JT808_0x8103_0x0101 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0101>
+    public class JT808_0x8103_0x0101 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0101>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0101;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// CAN 总线通道 1 上传时间间隔(s),0 表示不上传
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0101 jT808_0x8103_0x0101 = new JT808_0x8103_0x0101();
+            jT808_0x8103_0x0101.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0101.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0101.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0101.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0101.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0101.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0101.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0101.ParamValue.ReadNumber()}]参数值[CAN总线通道1, 上传时间间隔(s),0 表示不上传]", jT808_0x8103_0x0101.ParamValue);
+        }
+
         public JT808_0x8103_0x0101 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0101 jT808_0x8103_0x0101 = new JT808_0x8103_0x0101();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0102.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0102.cs
index 7037e35..3b92840 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0102.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0102.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// CAN 总线通道 2 采集时间间隔(ms),0 表示不采集
     /// </summary>
-    public class JT808_0x8103_0x0102 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0102>
+    public class JT808_0x8103_0x0102 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0102>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0102;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// CAN 总线通道 2 采集时间间隔(ms),0 表示不采集
         /// </summary>
         public uint ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0102 jT808_0x8103_0x0102 = new JT808_0x8103_0x0102();
+            jT808_0x8103_0x0102.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0102.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0102.ParamValue = reader.ReadUInt32();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0102.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0102.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0102.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0102.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0102.ParamValue.ReadNumber()}]参数值[CAN 总线通道2, 采集时间间隔(ms),0 表示不采集]", jT808_0x8103_0x0102.ParamValue);
+        }
+
         public JT808_0x8103_0x0102 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0102 jT808_0x8103_0x0102 = new JT808_0x8103_0x0102();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0103.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0103.cs
index 4a2388e..5c5c2ce 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0103.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0103.cs
@@ -1,5 +1,8 @@
-using JT808.Protocol.Attributes;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -7,7 +10,7 @@ namespace JT808.Protocol.MessageBody
     /// <summary>
     /// CAN 总线通道 2 上传时间间隔(s),0 表示不上传
     /// </summary>
-    public class JT808_0x8103_0x0103 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0103>
+    public class JT808_0x8103_0x0103 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0103>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0103;
         /// <summary>
@@ -18,6 +21,18 @@ namespace JT808.Protocol.MessageBody
         /// CAN 总线通道 2 上传时间间隔(s),0 表示不上传
         /// </summary>
         public ushort ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0103 jT808_0x8103_0x0103 = new JT808_0x8103_0x0103();
+            jT808_0x8103_0x0103.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0103.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0103.ParamValue = reader.ReadUInt16();
+            writer.WriteNumber($"[{ jT808_0x8103_0x0103.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0103.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0103.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0103.ParamLength);
+            writer.WriteNumber($"[{ jT808_0x8103_0x0103.ParamValue.ReadNumber()}]参数值[CAN 总线通道2,上传时间间隔(s),0 表示不上传]", jT808_0x8103_0x0103.ParamValue);
+        }
+
         public JT808_0x8103_0x0103 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0103 jT808_0x8103_0x0103 = new JT808_0x8103_0x0103();
diff --git a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0110.cs b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0110.cs
index dbd46f0..30cdc59 100644
--- a/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0110.cs
+++ b/src/JT808.Protocol/MessageBody/JT808_0x8103_0x0110.cs
@@ -1,5 +1,10 @@
-using JT808.Protocol.Attributes;
+using System;
+using System.Buffers.Binary;
+using System.Text.Json;
+using JT808.Protocol.Attributes;
+using JT808.Protocol.Extensions;
 using JT808.Protocol.Formatters;
+using JT808.Protocol.Interfaces;
 using JT808.Protocol.MessagePack;
 
 namespace JT808.Protocol.MessageBody
@@ -12,7 +17,7 @@ namespace JT808.Protocol.MessageBody
     /// bit29 表示数据采集方式,0:原始数据,1:采集区间的计算值;
     /// bit28-bit0 表示 CAN 总线 ID。
     /// </summary>
-    public class JT808_0x8103_0x0110 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0110>
+    public class JT808_0x8103_0x0110 : JT808_0x8103_BodyBase, IJT808MessagePackFormatter<JT808_0x8103_0x0110>, IJT808Analyze
     {
         public override uint ParamId { get; set; } = 0x0110;
         /// <summary>
@@ -28,6 +33,24 @@ namespace JT808.Protocol.MessageBody
         /// bit28-bit0 表示 CAN 总线 ID。
         /// </summary>
         public byte[] ParamValue { get; set; }
+
+        public void Analyze(ref JT808MessagePackReader reader, Utf8JsonWriter writer, IJT808Config config)
+        {
+            JT808_0x8103_0x0110 jT808_0x8103_0x0110 = new JT808_0x8103_0x0110();
+            jT808_0x8103_0x0110.ParamId = reader.ReadUInt32();
+            jT808_0x8103_0x0110.ParamLength = reader.ReadByte();
+            jT808_0x8103_0x0110.ParamValue = reader.ReadArray(jT808_0x8103_0x0110.ParamLength).ToArray();
+            writer.WriteNumber($"[ { jT808_0x8103_0x0110.ParamId.ReadNumber()}]参数ID", jT808_0x8103_0x0110.ParamId);
+            writer.WriteNumber($"[{jT808_0x8103_0x0110.ParamLength.ReadNumber()}]参数长度", jT808_0x8103_0x0110.ParamLength);
+            writer.WriteStartArray($"[{ jT808_0x8103_0x0110.ParamValue.ToHexString()}]参数值[CAN总线ID单独采集设置]");
+            writer.WriteNumber("此 ID 采集时间间隔(ms)", BinaryPrimitives.ReadUInt32BigEndian( jT808_0x8103_0x0110.ParamValue.AsSpan().Slice(0,4)));
+            writer.WriteString("CAN通道号", (jT808_0x8103_0x0110.ParamValue.AsSpan().Slice(4, 1).ToArray()[0]&0x01)==0? "CAN1" : "CAN2");
+            writer.WriteString("帧类型", (jT808_0x8103_0x0110.ParamValue.AsSpan().Slice(4, 1).ToArray()[0] & 0x02) == 0 ? "标准帧" : "扩展帧");
+            writer.WriteString("数据采集方式", (jT808_0x8103_0x0110.ParamValue.AsSpan().Slice(4, 1).ToArray()[0] & 0x04) == 0 ? "原始数据" : "采集区间的计算值");
+            writer.WriteNumber("CAN 总线 ID", BinaryPrimitives.ReadUInt32BigEndian(jT808_0x8103_0x0110.ParamValue.AsSpan().Slice(4, 4)) & 0x01FFFFFF);
+            writer.WriteEndArray();
+        }
+
         public JT808_0x8103_0x0110 Deserialize(ref JT808MessagePackReader reader, IJT808Config config)
         {
             JT808_0x8103_0x0110 jT808_0x8103_0x0110 = new JT808_0x8103_0x0110();