Ejemplo n.º 1
0
        public void BuildAutomaticPoints()
        {
            ClearAll();

            if (!IntervalSettings.isAuto)
            {
                Markers.Add(((IntervalSettings.PointsQuantity - 1) / 2) + 1);
                CenterFrequencys.Add(IntervalSettings.HandCenterFrequency);
            }
            else
            {
                if (IntervalSettings.FrequencyInnerStep <= 0)
                {
                    MessageBox.Show("ШАГ СКАНИРОВАНИЯ ДОЛЖЕН БЫТЬ БОЛЬШЕ 0");
                    return;
                }

                if (IntervalSettings.FrequencyStart > IntervalSettings.FrequencyStop)
                {
                    MessageBox.Show("КОНЕЦ ДИАПАЗОНА ДОЛЖЕН БЫТЬ БОЛЬШЕ НАЧАЛА ДИАПАЗОНА");
                    return;
                }

                long CurrentCenterFrequency;

                long innerStepQuantity = (IntervalSettings.FrequencyStop - IntervalSettings.FrequencyStart) / IntervalSettings.FrequencyInnerStep;

                if (innerStepQuantity <= IntervalSettings.PointsQuantity - 1)
                {
                    IntervalSettings.Span = IntervalSettings.FrequencyStop - IntervalSettings.FrequencyStart;

                    CurrentCenterFrequency = IntervalSettings.FrequencyStart + IntervalSettings.Span / 2;

                    CenterFrequencys.Add(CurrentCenterFrequency);

                    for (int counter = 0; counter <= innerStepQuantity; counter++)
                    {
                        Markers.Add(counter * ((IntervalSettings.PointsQuantity - 1) / (int)innerStepQuantity));
                    }
                }
                else
                {
                    IntervalSettings.Span = (IntervalSettings.PointsQuantity - 1) * IntervalSettings.FrequencyInnerStep;

                    CurrentCenterFrequency = IntervalSettings.FrequencyStart + IntervalSettings.Span / 2;
                    CenterFrequencys.Add(CurrentCenterFrequency);

                    while ((CurrentCenterFrequency + IntervalSettings.Span / 2) < IntervalSettings.FrequencyStop)
                    {
                        CurrentCenterFrequency += IntervalSettings.Span;
                        CenterFrequencys.Add(CurrentCenterFrequency);
                    }

                    for (int counter = 0; counter <= innerStepQuantity; counter++)
                    {
                        Markers.Add(counter);
                    }
                }
            }
        }
 public void ClearAll()
 {
     SignalClear();
     NoiseClear();
     Frequencys.Clear();
     CenterFrequencys.Clear();
     Markers.Clear();
 }
        public void BuildAutomaticPoints()
        {
            //IntervalSettings.PointsQuantity = this.GetExperimentExplorer().Experiment.ExperimentSettings.HardwareSettings.PointsQuantity;
            ClearAll();

            if (!IntervalSettings.isAuto) //диф.спектр
            {
                //Markers.Add(((IntervalSettings.PointsQuantity - 1) / 2) + 1); //точка соответствует середине частотного интервала
                Markers.Add((IntervalSettings.PointsQuantity - 1) / 2); //точка соответствует середине частотного интервала
                // Markers.Add(315);
                CenterFrequencys.Add(IntervalSettings.HandCenterFrequency);
            }
            else   //сплошной спектр
            {
                if (IntervalSettings.FrequencyInnerStep <= 0)
                {
                    MessageBox.Show("ШАГ СКАНИРОВАНИЯ ДОЛЖЕН БЫТЬ БОЛЬШЕ 0");
                    return;
                }

                if (IntervalSettings.FrequencyStart > IntervalSettings.FrequencyStop)
                {
                    MessageBox.Show("КОНЕЦ ДИАПАЗОНА ДОЛЖЕН БЫТЬ БОЛЬШЕ НАЧАЛА ДИАПАЗОНА");
                    return;
                }

                long CurrentCenterFrequency; //частотный центр заданного диапазона
                //расчётное количество точек измерения, включая
                long innerStepQuantity = (IntervalSettings.FrequencyStop - IntervalSettings.FrequencyStart) / IntervalSettings.FrequencyInnerStep;
                if (innerStepQuantity == 0)
                {
                    MessageBox.Show("Согласуйте значение ДИАПАЗОНА и ШАГа");
                    return;
                }
                if (innerStepQuantity <= IntervalSettings.PointsQuantity - 1)    //расчётное число точек <= числа точек ИП
                {
                    // if (!IntervalSettings.isManualSpan || IntervalSettings.Span == 0)
                    // {
                    IntervalSettings.Span = IntervalSettings.FrequencyStop - IntervalSettings.FrequencyStart;
                    //центральная частота диапазона
                    CurrentCenterFrequency = IntervalSettings.FrequencyStart + IntervalSettings.Span / 2;
                    // }
                    //  else   //иначе, значение уже установлено вручную
                    // {
                    //центральная частота диапазона
                    //     CurrentCenterFrequency = (IntervalSettings.FrequencyStop - IntervalSettings.FrequencyStart)/2 + IntervalSettings.Span / 2;

                    //}

                    CenterFrequencys.Add(CurrentCenterFrequency);
                    //диапазон измерений ИП разбит на некое число точек(зависит от типа прибора)
                    //при заданном дииапазоне и шаге измерения число точек получается своё
                    //приведём пользовательские частоты к частотам в соответствующих точках ИП
                    for (int counter = 0; counter <= innerStepQuantity; counter++)
                    {
                        Markers.Add(counter * ((IntervalSettings.PointsQuantity - 1) / (int)innerStepQuantity)); //точки измерений пользователя на шкале точек ИП
                    }
                }
                else  //расчётное число точек > числа точек ИП.Исходный диапазон разбивается на интревалы с количеством точек измерения = ИП.Рассчитываются центры интервалов и маркеры точек измерений
                {
                    //if (!IntervalSettings.isManualSpan || IntervalSettings.Span == 0)
                    //{
                    //диапазон, рассчитанный из заданного шага частоты и количества точек прибора
                    IntervalSettings.Span = (IntervalSettings.PointsQuantity - 1) * IntervalSettings.FrequencyInnerStep;
                    //центральная частота диапазона
                    CurrentCenterFrequency = IntervalSettings.FrequencyStart + IntervalSettings.Span / 2;
                    //}
                    // else
                    //центральная частота диапазона
                    //    CurrentCenterFrequency = (IntervalSettings.FrequencyStop - IntervalSettings.FrequencyStart) / 2 + IntervalSettings.Span / 2;
                    CenterFrequencys.Add(CurrentCenterFrequency);
                    //пока
                    while ((CurrentCenterFrequency + IntervalSettings.Span / 2) < IntervalSettings.FrequencyStop)
                    {
                        CurrentCenterFrequency += IntervalSettings.Span;
                        CenterFrequencys.Add(CurrentCenterFrequency);
                    }

                    for (int counter = 0; counter <= innerStepQuantity; counter++)
                    {
                        Markers.Add(counter);
                    }
                }
            }
        }