Ejemplo n.º 1
0
        private static List <double> GetRangeData(List <PointTestItem> data, string[] settings, int dataType)
        {
            var tempData = new List <double>();
            var wls      = new double[1];
            var ranges   = MeasuringManager.GetRangeSettings(settings[0]);

            for (int i = 0; i < ranges.Length; i++)
            {
                var range = ranges[i];
                if (range.Equals("itu", StringComparison.OrdinalIgnoreCase))
                {
                    var type = GetSettingType(settings);
                    var cw   = GetSettingCenterWaveLength(settings);
                    var db   = GetSettingDB(settings);
                    var wl   = GetCenterWaveLength(data, type, cw, db, bwSetting);
                    if (wl == double.MinValue)
                    {
                        throw new MeasuringException("ITU计算错误");
                    }

                    ranges[i] = wl.ToString();
                }
            }

            if (ranges.Length > 1)
            {
                wls    = new double[2];
                wls[0] = MeasuringManager.GetWavelengthNm(ranges[0]);
                if (settings[0].IndexOf("±") > -1)
                {
                    wls = MeasuringManager.GetWavelengthRange(wls[0], "±", ranges[1]);
                }
                else
                {
                    wls[1] = MeasuringManager.GetWavelengthNm(ranges[1]);
                }
            }
            else
            {
                wls[0] = MeasuringManager.GetWavelengthNm(ranges[0]);
            }


            if (wls.Length > 1)
            {
                var wl1      = wls.Min();
                var wl2      = wls.Max();
                var taskData = TakeData(data, wl1, wl2);
                tempData.AddRange(taskData.Select(q => GetPointItemValue(q, dataType)));
            }
            else
            {
                var wl       = wls[0];
                var taskData = GetPointItemSlopeValue(data, wl, dataType);
                tempData.Add(taskData);
            }

            return(tempData);
        }