/// <summary>
        /// 获取窗口
        /// </summary>
        /// <param name="prn"></param>
        /// <param name="frequenceType"></param>
        /// <returns></returns>
        public TimeNumeralWindowData GetBufferValues(SatelliteNumber prn, FrequenceType frequenceType)
        {
            TimeNumeralWindowData window = new TimeNumeralWindowData(WindowSize);
            var buffer = this.Buffers;
            //首先从过去的
            var lastWindowOfP1 = LastWindowDataManager.GetOrCreate(BuildKey(prn, frequenceType));

            window.Add(lastWindowOfP1);

            //然后从bufffer里面提取另一半
            var bufferOfEpoches = buffer.GetSubList(0, HalfWindowSize);

            foreach (var epoch in bufferOfEpoches)
            {
                if (epoch.Contains(prn))
                {
                    var sat  = epoch[prn];
                    var time = epoch.ReceiverTime;
                    var p    = sat[frequenceType].PseudoRange.Value;//原始数据

                    window.Add(time, p);
                }
            }
            return(window);
        }
        /// <summary>
        /// 注册数据
        /// </summary>
        /// <param name="paramName"></param>
        /// <param name="time"></param>
        /// <param name="val"></param>
        /// <param name="isBreakTime">是否重新记录,如发生了周跳</param>
        public void Regist(string paramName, Time time, double val, bool isBreakTime)
        {
            TimePeriod            period  = null;
            TimeNumeralWindowData winData = null;
            var last = this.GetLastTimePeriod(paramName);

            if (last != null)
            {
                winData = GetWindowData(last);

                if (winData.Count > 0)
                {
                    var differ = Math.Abs(winData.AverageValue - val);
                    if (differ > MaxDiffer)
                    {
                        //重新建立分区
                        period  = base.Regist(paramName, time, true);
                        winData = GetWindowData(period);
                    }
                }
            }

            if (period == null)//新建
            {
                period  = base.Regist(paramName, time, isBreakTime);
                winData = GetWindowData(period);
            }

            //最后都要添加
            winData.Add(time, val);
        }