get\r
{\r
uint tow = BitConverter.ToUInt32(Raw, 6 + 0);\r
- int ftow = BitConverter.ToInt32(Raw, 6 + 4);\r
+ int ftow = BitConverter.ToInt32(Raw, 6 + 8);\r
return tow * 1e-3m + ftow * 1e-9m;\r
}\r
-\r
}\r
\r
- public int Week\r
+ public decimal Accuracy\r
{\r
- get\r
+ get \r
{\r
- return BitConverter.ToInt16(Raw, 6 + 8);\r
+ return BitConverter.ToUInt32(Raw, 6 + 4) * 1e-9m;\r
}\r
}\r
\r
- public int LeapSecond\r
+ public DateTime Utc\r
{\r
get\r
- {\r
- return (sbyte)(Raw[6 + 10]);\r
+ { \r
+ int y = BitConverter.ToUInt16(Raw, 6 + 12);\r
+ int m = Raw[6 + 14];\r
+ int d = Raw[6 + 14];\r
+ int h = Raw[6 + 14];\r
+ int min = Raw[6 + 14];\r
+ int s = Raw[6 + 14];\r
+ int ftow = BitConverter.ToInt32(Raw, 6 + 8);\r
+ DateTime utc = new DateTime(y, m, d, h, min, s, \r
+ DateTimeKind.Utc);\r
+ return utc.AddTicks(ftow / 100);\r
}\r
}\r
-\r
- public decimal Accuracy\r
- {\r
- get \r
- {\r
- return BitConverter.ToUInt32(Raw, 6 + 12) * 1e-9m;\r
- }\r
- }\r
-\r
#endregion\r
\r
#region public methods\r
public static bool TryParse(byte[] sentence, out UnknownPacket packet)\r
{\r
return TryParse(sentence, out packet, \r
- MessageID.NavTimeGps, 16, Build);\r
+ MessageID.NavTimeUtc, 20, Build);\r
}\r
\r
#endregion\r
get;\r
private set;\r
}\r
- public void Set(byte[] raw)\r
- {\r
- Raw = raw;\r
- }\r
+\r
public double CarrierPhase\r
{\r
get\r
{\r
get\r
{\r
- return (Raw[21] << 24) >> 24; // SByte\r
+ return ((int)(Raw[21] << 24)) >> 24; // SByte\r
}\r
}\r
\r
{\r
get\r
{\r
- return (Raw[22] << 24) >> 24; // SByte\r
+ return ((int)(Raw[22] << 24)) >> 24; // SByte\r
}\r
}\r
\r
return Raw[23];\r
}\r
}\r
- \r
+\r
+\r
+ public void Set(byte[] raw)\r
+ {\r
+ Raw = raw;\r
+ }\r
}\r
#endregion\r
\r
\r
#region properties\r
\r
+ public GpsTime GpsTime\r
+ {\r
+ get\r
+ {\r
+ return new GpsTime(Week, TimeOfWeek);\r
+ }\r
+ }\r
+\r
public decimal TimeOfWeek\r
{\r
get\r