示例#1
0
        public override void Parse(byte[] data, LogRecord record)
        {
            record.Header.Name = "SATVIS";
            var nOfObservations = BitConverter.ToUInt32(data, HeaderLength + 8);

            for (int idx = 0; idx < nOfObservations; idx++)
            {
                var           offset = HeaderLength + idx * 40;
                LogDataSatvis satvis = new LogDataSatvis()
                {
                    SatVis  = BitConverter.ToInt32(data, HeaderLength) == 1,
                    Prn     = BitConverter.ToUInt16(data, offset + 12),
                    GloFreq = BitConverter.ToUInt16(data, offset + 14),
                    Health  = BitConverter.ToUInt32(data, offset + 16),
                    Elev    = BitConverter.ToDouble(data, offset + 20),
                    Az      = BitConverter.ToDouble(data, offset + 28)
                };
                satvis.NavigationSystem = Util.GetNavigationSystemByPrn(satvis.Prn);

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

                record.Data.Add(satvis);
            }
        }
示例#2
0
        public override void Parse(string[] body, LogRecord record)
        {
            long nOfObservations = Int64.Parse(body[2]);

            long offset      = 3;
            long rangeFields = 7;
            long maxIndex    = rangeFields * nOfObservations + offset;

            while (offset < maxIndex)
            {
                var data = new LogDataSatvis()
                {
                    SatVis  = String.Compare("TRUE", body[0], true) == 0,
                    Prn     = uint.Parse(body[offset]),
                    GloFreq = int.Parse(body[offset + 1]),
                    Health  = ulong.Parse(body[offset + 2]),
                    Elev    = double.Parse(body[offset + 3], CultureInfo.InvariantCulture),
                    Az      = double.Parse(body[offset + 4], CultureInfo.InvariantCulture)
                };

                data.NavigationSystem = Util.GetNavigationSystemByPrn(data.Prn);

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

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