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); }
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); }
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); }