Пример #1
0
        /// <summary>
        /// 获取频率带宽
        /// </summary>
        /// <param name="type">系统类型</param>
        /// <param name="freqType">频率类型</param>
        /// <param name="satNumber">卫星编号,GLONASS 系统需要</param>
        /// <param name="time">time,GLONASS 系统需要</param>
        /// <returns></returns>
        public static Frequence GetFrequenceBand(GnssType type, FrequenceType freqType, int satNumber = -1, Time time = default(Time))
        {
            switch (type)
            {
            case GnssType.GPS:
            case GnssType.SBAS:
                switch (freqType)
                {
                case FrequenceType.A: return(Frequence.GpsL1);

                case FrequenceType.B: return(Frequence.GpsL2);

                case FrequenceType.C: return(Frequence.GpsL5);

                default:
                    return(null);
                    // throw new ArgumentException("GPS 有三个频率。分别以编号1、2、3表示。");
                }

            case GnssType.Galileo:
                switch (freqType)
                {
                case FrequenceType.A: return(Frequence.GalileoE1);

                case FrequenceType.B: return(Frequence.GalileoE5a);

                case FrequenceType.C: return(Frequence.GalileoE5b);

                case FrequenceType.D: return(Frequence.GalileoE5);

                case FrequenceType.E: return(Frequence.GalileoE6);

                default:
                    return(null);
                    //  throw new ArgumentException("Galileo 有5个频率。分别以编号 1-5 表示。");
                }

            case GnssType.BeiDou:     //215786
                switch (freqType)
                {
                case FrequenceType.A: return(Frequence.CompassB1);

                case FrequenceType.B: return(Frequence.CompassB2);

                case FrequenceType.C: return(Frequence.CompassB3);

                default:
                    return(null);
                    //   throw new ArgumentException("BeiDou 有三个频率。分别以编号1、2、3表示。");
                }

            case GnssType.GLONASS:
                if (satNumber == -1)
                {
                    throw new ArgumentException("GLONASS是频分多址,需要指定卫星编号,此处有待改进!!!!请联系开发人员。");
                }
                var prn = new SatelliteNumber(satNumber, SatelliteType.R);
                var k   = (int)GlobalGlonassSlotFreqService.Instance.Get(prn, time);
                //   var k = Setting.GnsserConfig.GlonassSlotFrequences[prn];

                switch (freqType)
                {
                case FrequenceType.A: return(Frequence.GetGlonassG1(k));

                case FrequenceType.B: return(Frequence.GetGlonassG2(k));

                case FrequenceType.C: return(Frequence.GlonassG3);

                default:
                    return(null);
                    //  throw new ArgumentException("GLONASS 有2个载波。分别以编号1、2表示。");
                }

            case GnssType.QZSS:
                switch (freqType)
                {
                case FrequenceType.A: return(Frequence.GpsL1);

                case FrequenceType.B: return(Frequence.GpsL2);

                case FrequenceType.C: return(Frequence.GpsL5);

                case FrequenceType.D: return(Frequence.QzssL6);

                default:
                    return(null);
                }

            case GnssType.NAVIC:
                switch (freqType)
                {
                case FrequenceType.A: return(Frequence.NavicL5);

                default:
                    return(null);
                }

            default:

                switch (freqType)
                {
                case FrequenceType.A: return(Frequence.GpsL1);

                case FrequenceType.B: return(Frequence.GpsL2);

                case FrequenceType.C: return(Frequence.GpsL5);

                default:
                    return(null);
                }
            }

            throw new ArgumentException(type + "尚不支持,请联系管理员。");
        }