diff --git a/src/JT809.Protocol.Test/JT809Packages/JT809_0x9400_0x9401PackageTest.cs b/src/JT809.Protocol.Test/JT809Packages/JT809_0x9400_0x9401PackageTest.cs
new file mode 100644
index 0000000..4a9eb8b
--- /dev/null
+++ b/src/JT809.Protocol.Test/JT809Packages/JT809_0x9400_0x9401PackageTest.cs
@@ -0,0 +1,87 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Xunit;
+using JT809.Protocol;
+using JT809.Protocol.JT809Extensions;
+using JT809.Protocol.JT809MessageBody;
+using JT809.Protocol.JT809SubMessageBody;
+using JT809.Protocol.JT809Enums;
+
+namespace JT809.Protocol.Test.JT809Packages
+{
+    public class JT809_0x9400_0x9401PackageTest
+    {
+        [Fact]
+        public void Test1()
+        {
+            JT809Package jT809Package = new JT809Package();
+
+            jT809Package.Header = new JT809Header
+            {
+                MsgSN = 1666,
+                EncryptKey = 9999,
+                EncryptFlag= JT809Header_Encrypt.None,
+                Version = new JT809Header_Version(1, 0, 0),
+                MsgID = JT809Enums.JT809BusinessType.DOWN_WARN_MSG,
+                MsgGNSSCENTERID = 20180920,
+            };
+
+            jT809Package.Bodies = new JT809_0x9400
+            {
+                  VehicleNo="粤A12345",
+                  VehicleColor= JT809Enums.JT809VehicleColorType.黄色,
+                  SubBusinessType= JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ,
+            };
+
+            JT809_0x9400_0x9401 jT809_0x9400_0x9401 = new JT809_0x9400_0x9401
+            {
+                WarnSrc = JT809WarnSrc.车载终端,
+                WarnType = JT809WarnType.疲劳驾驶报警,
+                WarnTime = DateTime.Parse("2018-09-27 10:24:00"),
+                SupervisionID = "123FFAA1",
+                SupervisionEndTime = DateTime.Parse("2018-09-27 11:24:00"),
+                SupervisionLevel = 3,
+                Supervisor = "smallchi",
+                SupervisorTel = "12345678901",
+                SupervisorEmail = "123456@qq.com"
+            };
+            jT809Package.Bodies.JT809SubBodies = jT809_0x9400_0x9401;
+
+            var hex = JT809Serializer.Serialize(jT809Package).ToHexString();
+            //"5B 00 00 00 92 00 00 06 82 94 00 01 33 EF B8 01 00 00 00 00 00 27 0F D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 02 94 01 00 00 00 5C 01 00 02 00 00 00 00 5A 01 AC 3F 40 12 3F FA A1 00 00 00 00 5A 01 AC 4D 50 03 73 6D 61 6C 6C 63 68 69 00 00 00 00 00 00 00 00 31 32 33 34 35 36 37 38 39 30 31 00 00 00 00 00 00 00 00 00 31 32 33 34 35 36 40 71 71 2E 63 6F 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA D8 5D"
+        }
+
+        [Fact]
+        public void Test2()
+        {
+            var bytes = "5B 00 00 00 92 00 00 06 82 94 00 01 33 EF B8 01 00 00 00 00 00 27 0F D4 C1 41 31 32 33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00 02 94 01 00 00 00 5C 01 00 02 00 00 00 00 5A 01 AC 3F 40 12 3F FA A1 00 00 00 00 5A 01 AC 4D 50 03 73 6D 61 6C 6C 63 68 69 00 00 00 00 00 00 00 00 31 32 33 34 35 36 37 38 39 30 31 00 00 00 00 00 00 00 00 00 31 32 33 34 35 36 40 71 71 2E 63 6F 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA D8 5D".ToHexBytes();
+            JT809Package jT809Package = JT809Serializer.Deserialize(bytes);
+
+            Assert.Equal((uint)146, jT809Package.Header.MsgLength);
+            Assert.Equal((uint)1666, jT809Package.Header.MsgSN);
+            Assert.Equal((uint)9999, jT809Package.Header.EncryptKey);
+            Assert.Equal(JT809Header_Encrypt.None, jT809Package.Header.EncryptFlag);
+            Assert.Equal((uint)20180920, jT809Package.Header.MsgGNSSCENTERID);
+            Assert.Equal(JT809Enums.JT809BusinessType.DOWN_WARN_MSG, jT809Package.Header.MsgID);
+            Assert.Equal(new JT809Header_Version().ToString(), jT809Package.Header.Version.ToString());
+
+            JT809_0x9400 jT809_0X400 = (JT809_0x9400)jT809Package.Bodies;
+            Assert.Equal("粤A12345", jT809_0X400.VehicleNo);
+            Assert.Equal(JT809Enums.JT809VehicleColorType.黄色, jT809_0X400.VehicleColor);
+            Assert.Equal(JT809Enums.JT809SubBusinessType.DOWN_WARN_MSG_URGE_TODO_REQ, jT809_0X400.SubBusinessType);
+            Assert.Equal((uint)92, jT809_0X400.DataLength);
+
+            JT809_0x9400_0x9401 jT809_0x9400_0x9401 = (JT809_0x9400_0x9401)jT809_0X400.JT809SubBodies;
+            Assert.Equal(JT809WarnSrc.车载终端, jT809_0x9400_0x9401.WarnSrc);
+            Assert.Equal(JT809WarnType.疲劳驾驶报警, jT809_0x9400_0x9401.WarnType);
+            Assert.Equal(DateTime.Parse("2018-09-27 10:24:00"), jT809_0x9400_0x9401.WarnTime);
+            Assert.Equal("123FFAA1", jT809_0x9400_0x9401.SupervisionID);
+            Assert.Equal(DateTime.Parse("2018-09-27 11:24:00"), jT809_0x9400_0x9401.SupervisionEndTime);
+            Assert.Equal(3, jT809_0x9400_0x9401.SupervisionLevel);
+            Assert.Equal("smallchi", jT809_0x9400_0x9401.Supervisor);
+            Assert.Equal("12345678901", jT809_0x9400_0x9401.SupervisorTel);
+            Assert.Equal("123456@qq.com", jT809_0x9400_0x9401.SupervisorEmail);
+        }
+    }
+}