diff --git a/README.md b/README.md
index 043295a..5823ef9 100644
--- a/README.md
+++ b/README.md
@@ -71,4 +71,22 @@
 |  8  | 0x9208  |  √   |  取消申请交换指定车辆定位信息应答消息  |
 |  9  | 0x9209  |  √   |  补发车辆定位信息应答消息  |
 |  10 | 0x920A  |  √   |  上报驾驶员身份识别信息请求消息  |
-|  11 | 0x920B  |  √   |  上报车辆电子运单请求消息  |
\ No newline at end of file
+|  11 | 0x920B  |  √   |  上报车辆电子运单请求消息  |
+
+### 平台间信息交互类
+
+#### 主链路平台间信息交互消息
+
+|序号|消息ID|完成情况|消息体名称|
+|:------:|:------:|:------:|:------:|
+|  1  | 0x1300  |  √   |  主链路平台间信息交互消息  |
+|  2  | 0x1301  |  √   |  平台查岗应答消息  |
+|  3  | 0x1302  |  √   |  下发平台间报文应答消息  |
+
+#### 从链路平台间信息交互消息
+
+|序号|消息ID|完成情况|消息体名称|
+|:------:|:------:|:------:|:------:|
+|  1  | 0x9300  |  √   |  从链路平台间信息交互消息  |
+|  2  | 0x9301  |  √   |  平台查岗请求  |
+|  3  | 0x9302  |  √   |  下发平台间报文请求  |
\ No newline at end of file
diff --git a/src/JT809.Protocol/JT809.Protocol.csproj b/src/JT809.Protocol/JT809.Protocol.csproj
index 0db14cb..f041121 100644
--- a/src/JT809.Protocol/JT809.Protocol.csproj
+++ b/src/JT809.Protocol/JT809.Protocol.csproj
@@ -40,6 +40,9 @@
     <Compile Include="JT809Enums\JT809VehicleColorType.cs" />
     <Compile Include="JT809Enums\JT809_0x1002_Result.cs" />
     <Compile Include="JT809Enums\JT809_0x1007_ErrorCode.cs" />
+    <Compile Include="JT809Enums\JT809_0x9302_ObjectType.cs" />
+    <Compile Include="JT809Enums\JT809_0x9301_ObjectType.cs" />
+    <Compile Include="JT809Enums\JT809_0x1301_ObjectType.cs" />
     <Compile Include="JT809Enums\JT809_0x9209_Result.cs" />
     <Compile Include="JT809Enums\JT809_0x9208_Result.cs" />
     <Compile Include="JT809Enums\JT809_0x9207_Result.cs" />
diff --git a/src/JT809.Protocol/JT809Enums/JT809BusinessType.cs b/src/JT809.Protocol/JT809Enums/JT809BusinessType.cs
index 9fa329c..d6466b8 100644
--- a/src/JT809.Protocol/JT809Enums/JT809BusinessType.cs
+++ b/src/JT809.Protocol/JT809Enums/JT809BusinessType.cs
@@ -137,11 +137,13 @@ namespace JT809.Protocol.JT809Enums
         ///主链路平台间信息交互消息  
         ///</summary>
         [Description("主链路平台间信息交互消息")]
+        [JT809BodiesType(typeof(JT809_0x1300))]
         UP_PLATFORM_MSG = 0x1300,
         ///<summary>
         ///从链路平台间信息交互消息  
         ///</summary>
         [Description("从链路平台间信息交互消息")]
+        [JT809BodiesType(typeof(JT809_0x9300))]
         DOWN_PLATFORM_MSG = 0x9300,
         #endregion
         #region 车辆报警信息交互类
@@ -156,6 +158,7 @@ namespace JT809.Protocol.JT809Enums
         [Description("从链路报警信息交互消息")]
         DOWN_WARN_MSG = 0x9400,
         #endregion
+
         #region 车辆监管类 
         ///<summary>
         ///主链路车辆监管消息  
diff --git a/src/JT809.Protocol/JT809Enums/JT809SubBusinessType.cs b/src/JT809.Protocol/JT809Enums/JT809SubBusinessType.cs
index f07a12b..d127715 100644
--- a/src/JT809.Protocol/JT809Enums/JT809SubBusinessType.cs
+++ b/src/JT809.Protocol/JT809Enums/JT809SubBusinessType.cs
@@ -152,11 +152,13 @@ namespace JT809.Protocol.JT809Enums
         ///平台查岗应答	
         ///</summary>
         [Description("平台查岗应答")]
+        [JT809BodiesType(typeof(JT809_0x1300_0x1301))]
         UP_PLATFORM_MSG_POST_QUERY_ACK = 0x1301,
         ///<summary>
         ///下发平台间报文应答	
         ///</summary>
         [Description("下发平台间报文应答")]
+        [JT809BodiesType(typeof(JT809_0x1300_0x1302))]
         UP_PLATFORM_MSG_INFO_ACK = 0x1302,
         #endregion
 
@@ -165,11 +167,13 @@ namespace JT809.Protocol.JT809Enums
         ///平台查岗请求	
         ///</summary>
         [Description("平台查岗请求")]
+        [JT809BodiesType(typeof(JT809_0x9300_0x9301))]
         DOWN_PLATFORM_MSG_POST_QUERY_REQ = 0x9301,
         ///<summary>
         ///下发平台间报文请求	
         ///</summary>
         [Description("下发平台间报文请求")]
+        [JT809BodiesType(typeof(JT809_0x9300_0x9302))]
         DOWN_PLATFORM_MSG_INFO_REQ = 0x9302,
         #endregion
 
diff --git a/src/JT809.Protocol/JT809Enums/JT809_0x1301_ObjectType.cs b/src/JT809.Protocol/JT809Enums/JT809_0x1301_ObjectType.cs
new file mode 100644
index 0000000..24c0e04
--- /dev/null
+++ b/src/JT809.Protocol/JT809Enums/JT809_0x1301_ObjectType.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Enums
+{
+    /// <summary>
+    /// 查岗对象的类型
+    /// </summary>
+    public enum JT809_0x1301_ObjectType:byte
+    {
+        当前连接的下级平台=0x01,
+        下级平台所属单一业户=0x02,
+        下级平台所属所有业户=0x03
+    }
+}
diff --git a/src/JT809.Protocol/JT809Enums/JT809_0x9301_ObjectType.cs b/src/JT809.Protocol/JT809Enums/JT809_0x9301_ObjectType.cs
new file mode 100644
index 0000000..4fe11e3
--- /dev/null
+++ b/src/JT809.Protocol/JT809Enums/JT809_0x9301_ObjectType.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Enums
+{
+    /// <summary>
+    /// 查岗对象的类型
+    /// </summary>
+    public enum JT809_0x9301_ObjectType : byte
+    {
+        当前连接的下级平台=0x01,
+        下级平台所属单一业户=0x02,
+        下级平台所属所有业户=0x03
+    }
+}
diff --git a/src/JT809.Protocol/JT809Enums/JT809_0x9302_ObjectType.cs b/src/JT809.Protocol/JT809Enums/JT809_0x9302_ObjectType.cs
new file mode 100644
index 0000000..4668e58
--- /dev/null
+++ b/src/JT809.Protocol/JT809Enums/JT809_0x9302_ObjectType.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Enums
+{
+    /// <summary>
+    /// 查岗对象的类型
+    /// </summary>
+    public enum JT809_0x9302_ObjectType : byte
+    {
+        下级平台所属单一平台 = 0x00,
+        当前连接的下级平台 = 0x01,
+        下级平台所属单一业户 = 0x02,
+        下级平台所属所有业户 = 0x03,
+        下级平台所属所有平台 = 0x04,
+        下级平台所属所有平台和业户 = 0x05,
+        下级平台所属所有政府监管平台_含监控端 = 0x06,
+        下级平台所属所有企业监控平台 = 0x07,
+        下级平台所属所有经营性企业监控平台 = 0x08,
+        下级平台所属所有非经营性企业监控平台 = 0x09,
+    }
+}
diff --git a/src/JT809.Protocol/JT809Formatters/JT809MessageBodyFormatters/JT809_0x1300Formatter.cs b/src/JT809.Protocol/JT809Formatters/JT809MessageBodyFormatters/JT809_0x1300Formatter.cs
new file mode 100644
index 0000000..fb4ea0d
--- /dev/null
+++ b/src/JT809.Protocol/JT809Formatters/JT809MessageBodyFormatters/JT809_0x1300Formatter.cs
@@ -0,0 +1,60 @@
+using JT809.Protocol.JT809Attributes;
+using JT809.Protocol.JT809Enums;
+using JT809.Protocol.JT809Exceptions;
+using JT809.Protocol.JT809Extensions;
+using JT809.Protocol.JT809MessageBody;
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters
+{
+    public class JT809_0x1300Formatter : IJT809Formatter<JT809_0x1300>
+    {
+        public JT809_0x1300 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
+        {
+            int offset = 0;
+            JT809_0x1300 jT809_0X1300 = new JT809_0x1300();
+            jT809_0X1300.SubBusinessType = (JT809SubBusinessType)JT809BinaryExtensions.ReadUInt16Little(bytes, ref offset);
+            jT809_0X1300.DataLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            //JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性
+            JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = jT809_0X1300.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>();
+            if (jT809SubBodiesTypeAttribute == null)
+            {
+                throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{jT809_0X1300.SubBusinessType.ToString()}");
+            }
+            try
+            {
+                jT809_0X1300.JT809SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X1300.DataLength), out readSize);
+            }
+            catch
+            {
+                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT809_0X1300.SubBusinessType.ToString()}");
+            }
+            readSize = offset;
+            return jT809_0X1300;
+        }
+
+        public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x1300 value)
+        {
+            offset += JT809BinaryExtensions.WriteUInt16Little(memoryOwner, offset, (ushort)value.SubBusinessType);
+            offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.DataLength);
+            //JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性
+            JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = value.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>();
+            if (jT809SubBodiesTypeAttribute == null)
+            {
+                throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{value.SubBusinessType.ToString()}");
+            }
+            try
+            {
+                offset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.JT809SubBodies);
+            }
+            catch
+            {
+                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}");
+            }
+            return offset;
+        }
+    }
+}
diff --git a/src/JT809.Protocol/JT809Formatters/JT809MessageBodyFormatters/JT809_0x9300Formatter.cs b/src/JT809.Protocol/JT809Formatters/JT809MessageBodyFormatters/JT809_0x9300Formatter.cs
new file mode 100644
index 0000000..32d786d
--- /dev/null
+++ b/src/JT809.Protocol/JT809Formatters/JT809MessageBodyFormatters/JT809_0x9300Formatter.cs
@@ -0,0 +1,60 @@
+using JT809.Protocol.JT809Attributes;
+using JT809.Protocol.JT809Enums;
+using JT809.Protocol.JT809Exceptions;
+using JT809.Protocol.JT809Extensions;
+using JT809.Protocol.JT809MessageBody;
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters
+{
+    public class JT809_0x9300Formatter : IJT809Formatter<JT809_0x9300>
+    {
+        public JT809_0x9300 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
+        {
+            int offset = 0;
+            JT809_0x9300 jT809_0X9300 = new JT809_0x9300();
+            jT809_0X9300.SubBusinessType = (JT809SubBusinessType)JT809BinaryExtensions.ReadUInt16Little(bytes, ref offset);
+            jT809_0X9300.DataLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            //JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性
+            JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = jT809_0X9300.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>();
+            if (jT809SubBodiesTypeAttribute == null)
+            {
+                throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{jT809_0X9300.SubBusinessType.ToString()}");
+            }
+            try
+            {
+                jT809_0X9300.JT809SubBodies = JT809FormatterResolverExtensions.JT809DynamicDeserialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), bytes.Slice(offset, (int)jT809_0X9300.DataLength), out readSize);
+            }
+            catch
+            {
+                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{jT809_0X9300.SubBusinessType.ToString()}");
+            }
+            readSize = offset;
+            return jT809_0X9300;
+        }
+
+        public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x9300 value)
+        {
+            offset += JT809BinaryExtensions.WriteUInt16Little(memoryOwner, offset, (ushort)value.SubBusinessType);
+            offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.DataLength);
+            //JT809.Protocol.JT809Enums.JT809BusinessType 映射对应消息特性
+            JT809BodiesTypeAttribute jT809SubBodiesTypeAttribute = value.SubBusinessType.GetAttribute<JT809BodiesTypeAttribute>();
+            if (jT809SubBodiesTypeAttribute == null)
+            {
+                throw new JT809Exception(JT809ErrorCode.GetAttributeError, $"JT809BodiesTypeAttribute Not Found>{value.SubBusinessType.ToString()}");
+            }
+            try
+            {
+                offset = JT809FormatterResolverExtensions.JT809DynamicSerialize(JT809FormatterExtensions.GetFormatter(jT809SubBodiesTypeAttribute.JT809BodiesType), memoryOwner, offset, value.JT809SubBodies);
+            }
+            catch
+            {
+                throw new JT809Exception(JT809ErrorCode.SubBodiesParseError, $"SubBusinessType>{value.SubBusinessType.ToString()}");
+            }
+            return offset;
+        }
+    }
+}
diff --git a/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x1300_0x1301Formatter.cs b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x1300_0x1301Formatter.cs
new file mode 100644
index 0000000..dedf0c8
--- /dev/null
+++ b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x1300_0x1301Formatter.cs
@@ -0,0 +1,38 @@
+using JT809.Protocol.JT809Extensions;
+using JT809.Protocol.JT809SubMessageBody;
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters
+{
+    public class JT809_0x1300_0x1301Formatter : IJT809Formatter<JT809_0x1300_0x1301>
+    {
+        public JT809_0x1300_0x1301 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
+        {
+            int offset = 0;
+            JT809_0x1300_0x1301 jT809_0X1200_0X1301 = new JT809_0x1300_0x1301();
+            jT809_0X1200_0X1301.ObjectType = (JT809Enums.JT809_0x1301_ObjectType)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset);
+            jT809_0X1200_0X1301.ObjectID = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, 12);
+            jT809_0X1200_0X1301.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            jT809_0X1200_0X1301.InfoLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            jT809_0X1200_0X1301.InfoContent = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, (int)jT809_0X1200_0X1301.InfoLength);
+            readSize = offset;
+            return jT809_0X1200_0X1301;
+        }
+
+        public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x1300_0x1301 value)
+        {
+            offset += JT809BinaryExtensions.WriteByteLittle(memoryOwner, offset, (byte)value.ObjectType);
+            offset += JT809BinaryExtensions.WriteStringPadRightLittle(memoryOwner, offset, value.ObjectID, 12);
+            offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID);
+            // 先计算内容长度(汉字为两个字节)
+            offset += 4;
+            int byteLength = JT809BinaryExtensions.WriteStringLittle(memoryOwner, offset, value.InfoContent);
+            JT809BinaryExtensions.WriteInt32Little(memoryOwner, offset - 4, byteLength);
+            offset += byteLength;
+            return offset;
+        }
+    }
+}
diff --git a/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x1300_0x1302Formatter.cs b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x1300_0x1302Formatter.cs
new file mode 100644
index 0000000..639e076
--- /dev/null
+++ b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x1300_0x1302Formatter.cs
@@ -0,0 +1,27 @@
+using JT809.Protocol.JT809Extensions;
+using JT809.Protocol.JT809SubMessageBody;
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters
+{
+    public class JT809_0x1300_0x1302Formatter : IJT809Formatter<JT809_0x1300_0x1302>
+    {
+        public JT809_0x1300_0x1302 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
+        {
+            int offset = 0;
+            JT809_0x1300_0x1302 jT809_0X1200_0X1302 = new JT809_0x1300_0x1302();
+            jT809_0X1200_0X1302.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            readSize = offset;
+            return jT809_0X1200_0X1302;
+        }
+
+        public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x1300_0x1302 value)
+        {
+            offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID);
+            return offset;
+        }
+    }
+}
diff --git a/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x9300_0x9301Formatter.cs b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x9300_0x9301Formatter.cs
new file mode 100644
index 0000000..03d025f
--- /dev/null
+++ b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x9300_0x9301Formatter.cs
@@ -0,0 +1,38 @@
+using JT809.Protocol.JT809Extensions;
+using JT809.Protocol.JT809SubMessageBody;
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters
+{
+    public class JT809_0x9300_0x9301Formatter : IJT809Formatter<JT809_0x9300_0x9301>
+    {
+        public JT809_0x9300_0x9301 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
+        {
+            int offset = 0;
+            JT809_0x9300_0x9301 jT809_0X9300_0X9301 = new JT809_0x9300_0x9301();
+            jT809_0X9300_0X9301.ObjectType = (JT809Enums.JT809_0x9301_ObjectType)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset);
+            jT809_0X9300_0X9301.ObjectID = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, 12);
+            jT809_0X9300_0X9301.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            jT809_0X9300_0X9301.InfoLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            jT809_0X9300_0X9301.InfoContent = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, (int)jT809_0X9300_0X9301.InfoLength);
+            readSize = offset;
+            return jT809_0X9300_0X9301;
+        }
+
+        public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x9300_0x9301 value)
+        {
+            offset += JT809BinaryExtensions.WriteByteLittle(memoryOwner, offset, (byte)value.ObjectType);
+            offset += JT809BinaryExtensions.WriteStringPadRightLittle(memoryOwner, offset, value.ObjectID, 12);
+            offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID);
+            // 先计算内容长度(汉字为两个字节)
+            offset += 4;
+            int byteLength = JT809BinaryExtensions.WriteStringLittle(memoryOwner, offset, value.InfoContent);
+            JT809BinaryExtensions.WriteInt32Little(memoryOwner, offset - 4, byteLength);
+            offset += byteLength;
+            return offset;
+        }
+    }
+}
diff --git a/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x9300_0x9302Formatter.cs b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x9300_0x9302Formatter.cs
new file mode 100644
index 0000000..2da3210
--- /dev/null
+++ b/src/JT809.Protocol/JT809Formatters/JT809SubMessageBodyFormatters/JT809_0x9300_0x9302Formatter.cs
@@ -0,0 +1,38 @@
+using JT809.Protocol.JT809Extensions;
+using JT809.Protocol.JT809SubMessageBody;
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters
+{
+    public class JT809_0x9300_0x9302Formatter : IJT809Formatter<JT809_0x9300_0x9302>
+    {
+        public JT809_0x9300_0x9302 Deserialize(ReadOnlySpan<byte> bytes, out int readSize)
+        {
+            int offset = 0;
+            JT809_0x9300_0x9302 jT809_0X9300_0X9302 = new JT809_0x9300_0x9302();
+            jT809_0X9300_0X9302.ObjectType = (JT809Enums.JT809_0x9302_ObjectType)JT809BinaryExtensions.ReadByteLittle(bytes, ref offset);
+            jT809_0X9300_0X9302.ObjectID = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, 12);
+            jT809_0X9300_0X9302.InfoID = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            jT809_0X9300_0X9302.InfoLength = JT809BinaryExtensions.ReadUInt32Little(bytes, ref offset);
+            jT809_0X9300_0X9302.InfoContent = JT809BinaryExtensions.ReadStringLittle(bytes, ref offset, (int)jT809_0X9300_0X9302.InfoLength);
+            readSize = offset;
+            return jT809_0X9300_0X9302;
+        }
+
+        public int Serialize(IMemoryOwner<byte> memoryOwner, int offset, JT809_0x9300_0x9302 value)
+        {
+            offset += JT809BinaryExtensions.WriteByteLittle(memoryOwner, offset, (byte)value.ObjectType);
+            offset += JT809BinaryExtensions.WriteStringPadRightLittle(memoryOwner, offset, value.ObjectID, 12);
+            offset += JT809BinaryExtensions.WriteUInt32Little(memoryOwner, offset, value.InfoID);
+            // 先计算内容长度(汉字为两个字节)
+            offset += 4;
+            int byteLength = JT809BinaryExtensions.WriteStringLittle(memoryOwner, offset, value.InfoContent);
+            JT809BinaryExtensions.WriteInt32Little(memoryOwner, offset - 4, byteLength);
+            offset += byteLength;
+            return offset;
+        }
+    }
+}
diff --git a/src/JT809.Protocol/JT809MessageBody/JT809_0x1300.cs b/src/JT809.Protocol/JT809MessageBody/JT809_0x1300.cs
new file mode 100644
index 0000000..3136f9c
--- /dev/null
+++ b/src/JT809.Protocol/JT809MessageBody/JT809_0x1300.cs
@@ -0,0 +1,30 @@
+using JT809.Protocol.JT809Enums;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809MessageBody
+{
+    /// <summary>
+    /// 主链路平台间信息交互消息
+    /// <para>链路类型:主链路</para>
+    /// <para>消息方向:下级平台往上级平台</para>
+    /// <para>业务数据类型标识:UP_PLATFORM_MSG</para>
+    /// <para>描述:下级平台向上级平台发送平台间交互信息</para>
+    /// </summary>
+    public class JT809_0x1300:JT809Bodies
+    {
+        /// <summary>
+        /// 子业务类型标识
+        /// </summary>
+        public JT809SubBusinessType SubBusinessType { get; set; }
+        /// <summary>
+        /// 后续数据长度
+        /// </summary>
+        public uint DataLength { get; set; }
+        /// <summary>
+        /// 子业务数据体
+        /// </summary>
+        public JT809SubBodies JT809SubBodies { get; set; }
+    }
+}
diff --git a/src/JT809.Protocol/JT809MessageBody/JT809_0x9300.cs b/src/JT809.Protocol/JT809MessageBody/JT809_0x9300.cs
new file mode 100644
index 0000000..e1642be
--- /dev/null
+++ b/src/JT809.Protocol/JT809MessageBody/JT809_0x9300.cs
@@ -0,0 +1,33 @@
+using JT809.Protocol.JT809Attributes;
+using JT809.Protocol.JT809Enums;
+using JT809.Protocol.JT809Formatters.JT809MessageBodyFormatters;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809MessageBody
+{
+    /// <summary>
+    /// 从链路平台间信息交互业务
+    /// <para>链路类型:从链路</para>
+    /// <para>消息方向:上级平台往下级平台</para>
+    /// <para>业务数据类型标识:DOWN_PLATFORM_MSG</para>
+    /// <para>描述:上级平台向下级平台发送平台问交互信息</para>
+    /// </summary>
+    [JT809Formatter(typeof(JT809_0x9300Formatter))]
+    public class JT809_0x9300:JT809Bodies
+    {
+        /// <summary>
+        /// 子业务类型标识
+        /// </summary>
+        public JT809SubBusinessType SubBusinessType { get; set; }
+        /// <summary>
+        /// 后续数据长度
+        /// </summary>
+        public uint DataLength { get; set; }
+        /// <summary>
+        /// 子业务数据体
+        /// </summary>
+        public JT809SubBodies JT809SubBodies { get; set; }
+    }
+}
diff --git a/src/JT809.Protocol/JT809SubMessageBody/JT809_0x1300_0x1301.cs b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x1300_0x1301.cs
new file mode 100644
index 0000000..f413f82
--- /dev/null
+++ b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x1300_0x1301.cs
@@ -0,0 +1,39 @@
+using JT809.Protocol.JT809Attributes;
+using JT809.Protocol.JT809Enums;
+using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809SubMessageBody
+{
+    /// <summary>
+    /// 平台查岗应答消息
+    /// <para>子业务类型标识:UP_PLATFORM_MSG_POST_QUERY_ACK</para>
+    /// <para>描述:下级平台应答上级平台发送的不定期平台查岗消息</para>
+    /// </summary>
+    [JT809Formatter(typeof(JT809_0x1300_0x1301Formatter))]
+    public class JT809_0x1300_0x1301:JT809SubBodies
+    {
+        /// <summary>
+        /// 查岗对象的类型
+        /// </summary>
+        public JT809_0x1301_ObjectType ObjectType { get; set; }
+        /// <summary>
+        /// 查岗对象的ID
+        /// </summary>
+        public string ObjectID { get; set; }
+        /// <summary>
+        /// 信息ID
+        /// </summary>
+        public uint InfoID { get; set; }
+        /// <summary>
+        /// 数据长度
+        /// </summary>
+        public uint InfoLength { get; set; }
+        /// <summary>
+        /// 应答内容
+        /// </summary>
+        public string InfoContent { get; set; }
+    }
+}
diff --git a/src/JT809.Protocol/JT809SubMessageBody/JT809_0x1300_0x1302.cs b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x1300_0x1302.cs
new file mode 100644
index 0000000..1171e73
--- /dev/null
+++ b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x1300_0x1302.cs
@@ -0,0 +1,22 @@
+using JT809.Protocol.JT809Attributes;
+using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809SubMessageBody
+{
+    /// <summary>
+    /// 下发平台间报文应答消息
+    /// <para>子业务类型标识:UP_PLATFORM_MSG_INFO_ACK</para>
+    /// <para>描述:下级平台收到上级平台发送的下发平台间报文请求消息后,发送应答消息</para>
+    /// </summary>
+    [JT809Formatter(typeof(JT809_0x1300_0x1302Formatter))]
+    public class JT809_0x1300_0x1302:JT809SubBodies
+    {
+        /// <summary>
+        /// 信息ID
+        /// </summary>
+        public uint InfoID { get; set; }
+    }
+}
diff --git a/src/JT809.Protocol/JT809SubMessageBody/JT809_0x9300_0x9301.cs b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x9300_0x9301.cs
new file mode 100644
index 0000000..d39933c
--- /dev/null
+++ b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x9300_0x9301.cs
@@ -0,0 +1,39 @@
+using JT809.Protocol.JT809Attributes;
+using JT809.Protocol.JT809Enums;
+using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809SubMessageBody
+{
+    /// <summary>
+    /// 平台查岗请求
+    /// <para>子业务类型标识:DOWN_PLATFORM-MSG_POST_QUERY_REQ</para>
+    /// <para>描述:上级平台不定期向下级平台发送平台查岗信息</para>
+    /// </summary>
+    [JT809Formatter(typeof(JT809_0x9300_0x9301Formatter))]
+    public class JT809_0x9300_0x9301:JT809SubBodies
+    {
+        /// <summary>
+        /// 查岗对象的类型
+        /// </summary>
+        public JT809_0x9301_ObjectType ObjectType { get; set; }
+        /// <summary>
+        /// 查岗对象的ID
+        /// </summary>
+        public string ObjectID { get; set; }
+        /// <summary>
+        /// 信息ID
+        /// </summary>
+        public uint InfoID { get; set; }
+        /// <summary>
+        /// 数据长度
+        /// </summary>
+        public uint InfoLength { get; set; }
+        /// <summary>
+        /// 应答内容
+        /// </summary>
+        public string InfoContent { get; set; }
+    }
+}
diff --git a/src/JT809.Protocol/JT809SubMessageBody/JT809_0x9300_0x9302.cs b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x9300_0x9302.cs
new file mode 100644
index 0000000..fe72dac
--- /dev/null
+++ b/src/JT809.Protocol/JT809SubMessageBody/JT809_0x9300_0x9302.cs
@@ -0,0 +1,39 @@
+using JT809.Protocol.JT809Attributes;
+using JT809.Protocol.JT809Enums;
+using JT809.Protocol.JT809Formatters.JT809SubMessageBodyFormatters;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace JT809.Protocol.JT809SubMessageBody
+{
+    /// <summary>
+    /// 下发平台间报文请求
+    /// <para>子业务类型标识:DOWN_PLATFORM_MSG_INFO_REQ</para>
+    /// <para>描述:上级平台不定期向下级平台下发平台间报文</para>
+    /// </summary>
+    [JT809Formatter(typeof(JT809_0x9300_0x9302Formatter))]
+    public class JT809_0x9300_0x9302:JT809SubBodies
+    {
+        /// <summary>
+        /// 查岗对象的类型
+        /// </summary>
+        public JT809_0x9302_ObjectType ObjectType { get; set; }
+        /// <summary>
+        /// 查岗对象的ID
+        /// </summary>
+        public string ObjectID { get; set; }
+        /// <summary>
+        /// 信息ID
+        /// </summary>
+        public uint InfoID { get; set; }
+        /// <summary>
+        /// 数据长度
+        /// </summary>
+        public uint InfoLength { get; set; }
+        /// <summary>
+        /// 应答内容
+        /// </summary>
+        public string InfoContent { get; set; }
+    }
+}