示例#1
0
        /// <summary>
        /// 探测
        /// </summary>
        /// <returns></returns>
        protected override bool Detect()
        {
            bool isBaseCS = base.Detect();

            double lam         = 0.01;
            double lambda1     = EpochSat.FrequenceA.Frequence.WaveLength;
            double lambda2     = EpochSat.FrequenceB.Frequence.WaveLength;
            double lambdaLimit = Math.Sqrt(2 * (lambda1 * lambda1 + lambda2 * lambda2)) * lam;
            //if (epochSat.Prn.PRN == 29)
            //{ int ee = 0; }
            bool isCS = GetDetection(EpochSat.RecevingTime, EpochSat.Prn,
                                     EpochSat.Combinations.TriFreqBasedOnGF2Combination, lambdaLimit);

            if (IsSaveResultToTable && isCS)
            {
                var table = GetOutTable();
                if (!isBaseCS)
                {
                    table.NewRow(); table.AddItem("Epoch", EpochSat.ReceiverTime);
                }
                table.AddItem(DetectorType, true);
            }
            if (!isBaseCS && isCS)
            {
                CycleSlipStorage.Regist(EpochSat.Prn.ToString(), EpochSat.Time.Value);
            }
            return(isCS);
        }
示例#2
0
        /// <summary>
        /// 探测
        /// </summary>
        /// <param name="epochSat"></param>
        /// <returns></returns>
        public bool Detect(EpochSatellite epochSat)
        {
            bool isRecordedCycleSlipe = epochSat.EpochInfo.EpochState == EpochState.CycleSlip || epochSat.FrequenceA.IsPhaseLossedLock || epochSat.FrequenceB.IsPhaseLossedLock;
            var  alreadyHasSlip       = IsUsingRecordedCsInfo && isRecordedCycleSlipe;

            //double f1 = epochSat.FrequenceA.Frequence.Value * 1E6;
            //double f2 = epochSat.FrequenceB.Frequence.Value * 1E6;
            //double lam2 = GnssConst.LIGHT_SPEED / (f1 - f2);
            double lam = epochSat.Combinations.MwRangeCombination.Frequence.WaveLength;

            MaxNumLambdas = 1; //去掉之,会造成误探
            lambdaLimit   = MaxNumLambdas * lam;


            bool isCS = GetDetection(epochSat.RecevingTime, epochSat.Prn,
                                     epochSat.Combinations.MwRangeCombination.Value, alreadyHasSlip);

            if (isCS)
            {
                CycleSlipStorage.Regist(epochSat.Prn.ToString(), epochSat.Time.Value);
            }
            if (epochSat.Time.Value.Hour == 2 && epochSat.Time.Value.Minute == 27)
            {
                int a = 0;
            }
            return(isCS);
        }
示例#3
0
        /// <summary>
        /// 探测
        /// </summary>
        /// <returns></returns>
        protected override bool Detect()
        {
            bool isBaseCS = base.Detect();

            bool isCS = Detect(EpochSat.Prn, EpochSat[SatObsDataType].Value);

            if (IsSaveResultToTable && isCS)
            {
                var table = GetOutTable();
                if (!isBaseCS)
                {
                    table.NewRow(); table.AddItem("Epoch", EpochSat.ReceiverTime);
                }
                table.AddItem(DetectorType, true);
            }
            if (!isBaseCS && isCS)
            {
                CycleSlipStorage.Regist(EpochSat.Prn.ToString(), EpochSat.Time.Value);
            }
            return(isCS);
        }
示例#4
0
        /// <summary>
        /// 是否具有周跳。
        /// </summary>
        /// <param name="epochSat">被检核者</param>
        public bool Detect(EpochSatellite epochSat)
        {
            bool result = false;

            foreach (var item in CycleSlipDetectors)
            {
                if (item.Detect(epochSat))//即使已经得出结果了,也要让所有的周跳探测器都走一遍,才可以起到探测的作用。
                {
                    result = true;
                }
                else
                {
                    int a = 0;
                }
            }
            if (result)
            {
                CycleSlipStorage.Regist(epochSat.Prn.ToString(), epochSat.Time.Value);
            }
            this.CurrentResult = result;
            return(result);
        }
示例#5
0
        public bool Detect(EpochSatellite epochSat)
        {
            bool isRecordedCycleSlipe = epochSat.EpochInfo.EpochState == EpochState.CycleSlip || epochSat.FrequenceA.IsPhaseLossedLock || epochSat.FrequenceB.IsPhaseLossedLock;
            var  alreadyHasSlip       = UseRecordedSlipInfo && isRecordedCycleSlipe;

            double lam = epochSat.Combinations.MwRangeCombination.Frequence.WaveLength;

            lambdaLimit = MaxNumLambdas * lam;
            if (epochSat.Prn.PRN == 29)
            {
                int ee = 0;
            }
            bool isCS = GetDetection(epochSat.RecevingTime, epochSat.Prn,
                                     epochSat.Combinations.MwPhaseCombinationValue, alreadyHasSlip);

            if (isCS)
            {
                CycleSlipStorage.Regist(epochSat.Prn.ToString(), epochSat.Time.Value);
            }

            return(isCS);
        }
示例#6
0
        /// <summary>
        /// 探测
        /// </summary>
        /// <returns></returns>
        protected override bool Detect()
        {
            bool isBaseCS = base.Detect();

            this.SetParam(EpochSat.EpochInfo.ObsInfo.Interval);

            bool isCS = GetDetection(EpochSat.RecevingTime, EpochSat.Prn, EpochSat[SatObsDataType].Value, isBaseCS);

            if (IsSaveResultToTable && isCS)
            {
                var table = GetOutTable();
                if (!isBaseCS)
                {
                    table.NewRow(); table.AddItem("Epoch", EpochSat.ReceiverTime);
                }
                table.AddItem(this.DetectorType, true);
            }

            if (!isBaseCS && isCS)
            {
                CycleSlipStorage.Regist(EpochSat.Prn.ToString(), EpochSat.Time.Value);
            }
            return(isCS);
        }