示例#1
0
        private TdrParam[] GetTdrParam()
        {
            TdrParam[] ret   = new TdrParam[2];
            TdrParam   tdd11 = new TdrParam();

            tdd11.StartTime = (double)num_StartTime1.Value;
            tdd11.EndTime   = (double)num_StopTime1.Value;
            tdd11.Points    = (int)num_TdrPoint1.Value;
            tdd11.RiseTime  = (double)num_RiseTime1.Value;
            tdd11.Offset    = (double)num_TdrOffset1.Value;

            tdd11.UperTimePoints  = new[] { (double)num_UpperMatingStartTime1.Value, (double)num_UpperCableStartTime1.Value };
            tdd11.UperResi        = new[] { (double)num_UpperMatingSpec1.Value, (double)num_UpperCableSpec1.Value };
            tdd11.LowerTimePoints = new[] { (double)num_LowerMatingStartTime1.Value, (double)num_LowerCableStartTime1.Value };
            tdd11.LowerResi       = new[] { (double)num_LowerMatingSpec1.Value, (double)num_LowerCableSpec1.Value };


            TdrParam tdd22 = new TdrParam();

            tdd22.StartTime = (double)num_StartTime2.Value;
            tdd22.EndTime   = (double)num_StopTime2.Value;
            tdd22.Points    = (int)num_TdrPoint2.Value;
            tdd22.RiseTime  = (double)num_RiseTime2.Value;
            tdd22.Offset    = (double)num_TdrOffset2.Value;

            tdd22.UperTimePoints  = new[] { (double)num_UpperMatingStartTime2.Value, (double)num_UpperCableStartTime2.Value };
            tdd22.UperResi        = new[] { (double)num_UpperMatingSpec2.Value, (double)num_UpperCableSpec2.Value };
            tdd22.LowerTimePoints = new[] { (double)num_LowerMatingStartTime2.Value, (double)num_LowerCableStartTime2.Value };
            tdd22.LowerResi       = new[] { (double)num_LowerMatingSpec2.Value, (double)num_LowerCableSpec2.Value };

            ret[0] = tdd11;
            ret[1] = tdd22;

            return(ret);
        }
示例#2
0
文件: SITest.cs 项目: xiexiaojun/HPMS
        private plotData GetPlotdata(SNP snp, string itemName, TaskSnp taskSnp, ConsumerParams cpParams, plotData offset)
        {
            plotData        dataSeries = new plotData();
            List <TdrParam> tdrParams  = cpParams.TestConfigs[0].TdrParams;

            switch (taskSnp.ItemType)
            {
            case   ItemType.Loss:

                if (itemName.StartsWith("S"))
                {
                    itemName = GetReverseItem(itemName, !taskSnp.FirstHalf && taskSnp.Srevert);
                    // cpParams.FormUi.AddStatus("analyze:"+itemName);
                    string[] outPairs = new string[1];
                    var      data     = snp.EasyGetfreData(itemName, out outPairs);
                    float[]  x        = SConvert.indexArray(data.dB, 0, false);
                    dataSeries.xData = data.fre;
                    dataSeries.yData = x;
                }
                else if (itemName.StartsWith("TDD"))
                {
                    itemName = GetReverseItem(itemName, !taskSnp.FirstHalf && taskSnp.Trevert);
                    // cpParams.FormUi.AddStatus("analyze:" + itemName);
                    TdrParam tdrParam = tdrParams[int.Parse(itemName.Substring(3, 1)) - 1];
                    string[] outPairs = new string[1];
                    double   timeStep = (tdrParam.EndTime - tdrParam.StartTime) / (tdrParam.Points - 1);
                    var      data     = snp.EasyGetTimeData(itemName, out outPairs, tdrParam.RiseTime, timeStep, tdrParam.Points, tdrParam.Offset);
                    float[]  x        = SConvert.indexArray(data.resistance, 0, false);
                    dataSeries.xData = data.time;
                    dataSeries.yData = x;
                }
                else if (itemName.Equals("ILD", StringComparison.OrdinalIgnoreCase))
                {
                    string[] outPairs = new string[1];
                    var      data     = snp.EasyGetILD(cpParams.TestConfigs[0].IldSpec, out outPairs);
                    float[]  x        = SConvert.indexArray(data.dB, 0, false);
                    dataSeries.xData = data.fre;
                    dataSeries.yData = x;
                }
                break;

            case ItemType.Next:
                if (itemName.StartsWith("NEXT"))
                {
                    // cpParams.FormUi.AddStatus("analyze:" + itemName);
                    string[] outPairs = new string[1];
                    var      data     = snp.EasyGetfreData("SDD21", out outPairs);
                    float[]  x        = SConvert.indexArray(data.dB, 0, false);
                    dataSeries.xData = data.fre;
                    dataSeries.yData = x;
                }
                break;

            case ItemType.Fext:
                if (itemName.StartsWith("FEXT"))
                {
                    // cpParams.FormUi.AddStatus("analyze:" + itemName);
                    string[] outPairs = new string[1];
                    var      data     = snp.EasyGetfreData("SDD21", out outPairs);
                    float[]  x        = SConvert.indexArray(data.dB, 0, false);
                    dataSeries.xData = data.fre;
                    dataSeries.yData = x;
                }
                break;
            }

            if (offset.yData != null)
            {
                int length = dataSeries.yData.Length < offset.yData.Length
                    ? dataSeries.yData.Length
                    : offset.yData.Length;
                for (int i = 0; i < length; i++)
                {
                    dataSeries.yData[i] = dataSeries.yData[i] + offset.yData[i];
                }
            }

            return(dataSeries);
        }
示例#3
0
        public static plotData[] GetTddSpec(TdrParam tdrParam)
        {
            plotData[] ret  = new plotData[2];
            double     step = (tdrParam.EndTime - tdrParam.StartTime) / (tdrParam.Points - 1);

            float[] timeArray = new float[tdrParam.Points];


            double upperPoint1 = tdrParam.UperTimePoints[0];
            double upperPoint2 = tdrParam.UperTimePoints[1];
            double upperPoint3 = (tdrParam.EndTime - upperPoint2) / 2 + upperPoint2;
            double upperValue1 = tdrParam.UperResi[0];
            double upperValue2 = tdrParam.UperResi[1];

            double lowerPoint1 = tdrParam.LowerTimePoints[0];
            double lowerPoint2 = tdrParam.LowerTimePoints[1];
            double lowerPoint3 = (tdrParam.EndTime - lowerPoint2) / 2 + lowerPoint2;
            double lowerValue1 = tdrParam.LowerResi[0];
            double lowerValue2 = tdrParam.LowerResi[1];


            List <float> x      = new List <float>();
            List <float> y      = new List <float>();
            double       pointX = 0;

            while (pointX < upperPoint1)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.NaN);
                pointX = pointX + step;
            }
            while (pointX <= upperPoint2)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.Parse(upperValue1.ToString()));
                pointX = pointX + step;
            }
            while (pointX <= upperPoint3)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.Parse(upperValue2.ToString()));
                pointX = pointX + step;
            }
            while (pointX <= tdrParam.EndTime + step / 2)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.NaN);
                pointX = pointX + step;
            }

            ret[0].xData = x.ToArray();
            ret[0].yData = y.ToArray();

            x.Clear();
            y.Clear();
            pointX = 0;
            while (pointX < lowerPoint1)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.NaN);
                pointX = pointX + step;
            }
            while (pointX <= lowerPoint2)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.Parse(lowerValue1.ToString()));
                pointX = pointX + step;
            }
            while (pointX <= lowerPoint3)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.Parse(lowerValue2.ToString()));
                pointX = pointX + step;
            }
            while (pointX <= tdrParam.EndTime + step / 2)
            {
                x.Add(float.Parse(pointX.ToString()));
                y.Add(float.NaN);
                pointX = pointX + step;
            }
            ret[1].xData = x.ToArray();
            ret[1].yData = y.ToArray();
            return(ret);
        }