예제 #1
0
파일: GPS.cs 프로젝트: predek97/TCPServer
        private void ReadFromRawGPS(RawGPS rawGPS)
        {
            const uint    HemisphereMask     = 0x80000000;
            const uint    CoordinateMask     = 0x1FFFFFFF;
            const decimal CoordinatesDivisor = 1000000;
            const decimal DirectionDivisor   = 100;
            const decimal SpeedDivisor       = 100;

            Viled    = (GpsReliability)rawGPS.viled;
            Expand   = rawGPS.uexpand;
            Real     = (DataType)rawGPS.ureal;
            Reserved = rawGPS.reserver;
            Latitude = new LatitudeType {
                Hemisphere = (LatitudeType.LatHemisphere)(rawGPS.ulatitude & HemisphereMask), Latitude = (rawGPS.ulatitude & CoordinateMask) / CoordinatesDivisor
            };
            Longitude = new LongitudeType {
                Hemisphere = (LongitudeType.LonHemisphere)(rawGPS.ulatitude & HemisphereMask), Longitude = (rawGPS.ulongitude & CoordinateMask) / CoordinatesDivisor
            };
            Speed     = rawGPS.uspeed / SpeedDivisor;
            Height    = rawGPS.uhigh;
            Direction = rawGPS.uhigh / DirectionDivisor;

            var dateString = Encoding.Default.GetString(rawGPS.utime).Trim('\0');

            try
            {
                Time = DateTime.ParseExact(dateString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
            }
            catch (FormatException)
            {
                Console.WriteLine("[ERROR]DATE FORMAT IS INAPPROPRIATE", ConsoleColor.Red);
            }
        }
예제 #2
0
        public override void WriteJson(JsonWriter writer,
                                       object untypedValue,
                                       JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer,
                                     null);

                return;
            }

            LatitudeType value = (LatitudeType)untypedValue;

            if (value == LatitudeType.Quantitative)
            {
                serializer.Serialize(writer,
                                     "quantitative");

                return;
            }

            throw new Exception("Cannot marshal type LatitudeType");
        }
예제 #3
0
        /// <summary>
        /// 纬度转化为度(带单位)
        /// </summary>
        /// <param name="degree"></param>
        /// <param name="minute"></param>
        /// <param name="second"></param>
        /// <param name="latitudeType"></param>
        /// <returns></returns>
        public static double ToStandardRadian(double subDegree, double subMinute, double subSecond, LatitudeType latitudeType)
        {
            var totalDegree = subDegree + subMinute / _degreeToMiniute + subSecond / _degreeToSecond;
            var type        = latitudeType == LatitudeType.N ? 1 : -1;

            return(type * totalDegree);
        }