OSDN Git Service

Heightへの対応,緯度・経度が反転していた不具合の修正
authorkimikage <kimikage_ceo@hotmail.com>
Thu, 7 Jun 2012 11:21:40 +0000 (20:21 +0900)
committerkimikage <kimikage_ceo@hotmail.com>
Thu, 7 Jun 2012 11:21:40 +0000 (20:21 +0900)
Yubeshi/Ubx/NavPosLlh.cs
YubeshiTest/UbxTest/NavPacketTest.cs
YubeshiTest/UbxTest/SamplePackets.cs

index e6f5a7a..96af3fa 100755 (executable)
@@ -38,16 +38,21 @@ namespace Yubeshi.Ubx
             {\r
                 Degree lon = BitConverter.ToInt32(Raw, 6 + 4) * 1e-7;\r
                 Degree lat = BitConverter.ToInt32(Raw, 6 + 8) * 1e-7;\r
             {\r
                 Degree lon = BitConverter.ToInt32(Raw, 6 + 4) * 1e-7;\r
                 Degree lat = BitConverter.ToInt32(Raw, 6 + 8) * 1e-7;\r
-                double h = BitConverter.ToUInt32(Raw, 6 + 12);\r
-                return new GeodeticCoordinate(lon, lat, h);\r
+                Height h = new Height(\r
+                                    BitConverter.ToUInt32(Raw, 6 + 12) * 1e-3, \r
+                                    Height.Base.Ellipsoid);\r
+                return new GeodeticCoordinate(lat, lon, h);\r
             }\r
         }\r
 \r
             }\r
         }\r
 \r
-        public double MslHeight\r
+        public Height MslHeight\r
         {\r
             get\r
             {\r
         {\r
             get\r
             {\r
-                return BitConverter.ToUInt32(Raw, 6 + 16);\r
+                Height h = new Height(\r
+                                    BitConverter.ToUInt32(Raw, 6 + 16) * 1e-3,\r
+                                    Height.Base.MeanSeaLevel);\r
+                return h;\r
             }\r
         }\r
 \r
             }\r
         }\r
 \r
index 333ab8e..65264a0 100755 (executable)
@@ -51,6 +51,23 @@ namespace YubeshiTest.UbxTest
         }\r
 \r
         [Test]\r
         }\r
 \r
         [Test]\r
+        public void NavPosLlhTest()\r
+        {\r
+            UnknownPacket packet;\r
+            Assert.IsTrue(NavPosLlh.TryParse(P.NavPosLlh, out packet));\r
+            NavPosLlh p = packet as NavPosLlh;\r
+            Assert.AreEqual(Packet.MessageID.NavPosLlh, p.ID);\r
+            Assert.AreEqual(timeOfWeek, p.TimeOfWeek);\r
+            Assert.AreEqual(35.710058, (double)p.Position.Latitude);\r
+            Assert.AreEqual(139.8107190, (double)p.Position.Longitude);\r
+            Assert.AreEqual(676.391, (double)p.Position.Altitude);\r
+            Assert.AreEqual(Height.Base.Ellipsoid, \r
+                                                p.Position.Altitude.BaseLevel);\r
+            Assert.AreEqual(640.0, (double)p.MslHeight);\r
+            Assert.AreEqual(Height.Base.MeanSeaLevel, p.MslHeight.BaseLevel);\r
+        }\r
+\r
+        [Test]\r
         public void NavSolTest()\r
         {\r
             UnknownPacket packet;\r
         public void NavSolTest()\r
         {\r
             UnknownPacket packet;\r
index ce482da..928c70e 100755 (executable)
@@ -25,6 +25,7 @@ namespace YubeshiTest.UbxTest
         public static readonly byte[] NavClock;\r
         public static readonly byte[] NavDop;\r
         public static readonly byte[] NavPosEcef;\r
         public static readonly byte[] NavClock;\r
         public static readonly byte[] NavDop;\r
         public static readonly byte[] NavPosEcef;\r
+        public static readonly byte[] NavPosLlh;\r
         public static readonly byte[] NavSol;\r
 \r
 \r
         public static readonly byte[] NavSol;\r
 \r
 \r
@@ -122,6 +123,18 @@ namespace YubeshiTest.UbxTest
                 0xFF, 0xFF\r
             };\r
 \r
                 0xFF, 0xFF\r
             };\r
 \r
+            NavPosLlh = new byte[]{\r
+                0xB5, 0x62, 0x01, 0x02, 0x1C, 0x00,\r
+                0xE5, 0x16, 0x3F, 0x0A, // tow\r
+                0x36, 0x6C, 0x55, 0x53, // lon\r
+                0x24, 0xEC, 0x48, 0x15, // lat \r
+                0x27, 0x52, 0x0A, 0x00, // height\r
+                0x00, 0xC4, 0x09, 0x00, // hMSL \r
+                0x6D, 0x14, 0x00, 0x00, // hAcc\r
+                0x6D, 0x14, 0x00, 0x00, // vAcc\r
+                0xFF, 0xFF\r
+            };\r
+\r
             NavSol = new byte[]{\r
                 0xB5, 0x62, 0x01, 0x06, 0x34, 0x00,\r
                 0xE5, 0x16, 0x3F, 0x0A, // tow\r
             NavSol = new byte[]{\r
                 0xB5, 0x62, 0x01, 0x06, 0x34, 0x00,\r
                 0xE5, 0x16, 0x3F, 0x0A, // tow\r