Пример #1
0
        public override void Parse(byte[] data, LogRecord record)
        {
            record.Header.Name = "RANGE";
            var nOfObservations = BitConverter.ToUInt32(data, HeaderLength);

            for (int idx = 0; idx < nOfObservations; idx++)
            {
                var offset   = HeaderLength + idx * 44;
                var tracking = BitConverter.ToUInt32(data, offset + 44);

                var range = new LogDataRange()
                {
                    Prn              = BitConverter.ToUInt16(data, offset + 4),
                    GloFreq          = BitConverter.ToInt16(data, offset + 6),
                    Psr              = BitConverter.ToDouble(data, offset + 8),
                    PsrStd           = BitConverter.ToSingle(data, offset + 16),
                    Adr              = BitConverter.ToDouble(data, offset + 20),
                    AdrStd           = BitConverter.ToSingle(data, offset + 28),
                    CNo              = BitConverter.ToSingle(data, offset + 36),
                    LockTime         = BitConverter.ToSingle(data, offset + 40),
                    NavigationSystem = Util.GetNavigationSystem(tracking),
                    SignalType       = Util.GetSignalType(tracking),
                    Tracking         = tracking
                };

                if (range.NavigationSystem == NavigationSystem.GLONASS)
                {
                    range.Prn     = Util.GetActualPrn(range.Prn);
                    range.GloFreq = Util.GetActualGlonassFrequency(range.GloFreq);
                }

                record.Data.Add(range);
            }
        }
Пример #2
0
        public override void Parse(string[] body, LogRecord record)
        {
            long nOfObservations = Int64.Parse(body[0]);

            long offset      = 1;
            long rangeFields = 10;
            long maxIndex    = rangeFields * nOfObservations + offset;

            while (offset < maxIndex)
            {
                var tracking = Convert.ToUInt32(body[offset + 9], 16);

                var data = new LogDataRange()
                {
                    Prn              = UInt32.Parse(body[offset]),
                    GloFreq          = Int32.Parse(body[offset + 1]),
                    Psr              = Double.Parse(body[offset + 2], CultureInfo.InvariantCulture),
                    PsrStd           = Double.Parse(body[offset + 3], CultureInfo.InvariantCulture),
                    Adr              = Double.Parse(body[offset + 4], CultureInfo.InvariantCulture),
                    AdrStd           = Double.Parse(body[offset + 5], CultureInfo.InvariantCulture),
                    CNo              = Double.Parse(body[offset + 7], CultureInfo.InvariantCulture),
                    LockTime         = Double.Parse(body[offset + 8], CultureInfo.InvariantCulture),
                    NavigationSystem = Util.GetNavigationSystem(tracking),
                    SignalType       = Util.GetSignalType(tracking),
                    Tracking         = tracking
                };

                if (data.NavigationSystem == NavigationSystem.GLONASS)
                {
                    data.Prn     = Util.GetActualPrn(data.Prn);
                    data.GloFreq = Util.GetActualGlonassFrequency(data.GloFreq);
                }

                record.Data.Add(data);
                offset += rangeFields;
            }
        }