|
@@ -28,7 +28,11 @@ namespace Tps_LQ_Transmitter.models
|
|
|
TransmitterSerialPort SerialClient = new TransmitterSerialPort();
|
|
|
OutData Data = new OutData();
|
|
|
DataType ModulationIndexPrint = new DataType();
|
|
|
+ DataType leftModulationIndexPrint = new DataType();
|
|
|
+ DataType rightModulationIndexPrint = new DataType();
|
|
|
DataType MaxFreqOffsetPrint = new DataType();
|
|
|
+ DataType leftFreqOffsetPrint = new DataType();
|
|
|
+ DataType rightFreqOffsetPrint = new DataType();
|
|
|
|
|
|
if (SA == null)
|
|
|
{
|
|
@@ -50,6 +54,7 @@ namespace Tps_LQ_Transmitter.models
|
|
|
}
|
|
|
|
|
|
ConfigParameter PowerPara = new ConfigParameter();
|
|
|
+ PowerPara.StepFrequency = 0;
|
|
|
PowerPara.ComPort = parameters.Parameters.GetParameter<string>("串口");
|
|
|
PowerPara.OutLoss = parameters.Parameters.GetParameter<double>("输出损耗");
|
|
|
PowerPara.StartFrequency = parameters.Parameters.GetParameter<double>("起始频率");
|
|
@@ -63,7 +68,7 @@ namespace Tps_LQ_Transmitter.models
|
|
|
PowerPara.ControlDelay = parameters.Parameters.GetParameter<int>("控制延时");
|
|
|
PowerPara.ModulationIndexLower = parameters.Parameters.GetParameter<double>("调制系数下限");
|
|
|
PowerPara.ModulationIndexUpper = parameters.Parameters.GetParameter<double>("调制系数上限");
|
|
|
- if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
|
|
|
+ if ((PowerPara.StartFrequency == 0) || (PowerPara.StopFrequency == 0)
|
|
|
|| (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null)||
|
|
|
(PowerPara.ModulationIndexLower==0) || (PowerPara.ModulationIndexUpper==0))
|
|
|
{
|
|
@@ -85,7 +90,9 @@ namespace Tps_LQ_Transmitter.models
|
|
|
|
|
|
SA.Write("MARK打开", "1"); SA.Query("OPC");
|
|
|
SA.Write("MARK打开", "2"); SA.Query("OPC");
|
|
|
+ SA.Write("MARK打开", "3"); SA.Query("OPC");
|
|
|
SA.Write("DELT打开", "2"); SA.Query("OPC");
|
|
|
+ SA.Write("DELT打开", "3"); SA.Query("OPC");
|
|
|
}
|
|
|
|
|
|
|
|
@@ -99,10 +106,15 @@ namespace Tps_LQ_Transmitter.models
|
|
|
}
|
|
|
|
|
|
double CenterFreq;
|
|
|
- double[] PowerDelt = new double[PowerPara.FrequencyNumber];
|
|
|
+ double[] PowerDeltleft = new double[PowerPara.FrequencyNumber];
|
|
|
+ double[] PowerDeltright = new double[PowerPara.FrequencyNumber];
|
|
|
Data.ModulationIndex = new string[PowerPara.FrequencyNumber];
|
|
|
+ Data.leftModulationIndex = new string[PowerPara.FrequencyNumber];
|
|
|
+ Data.rightModulationIndex = new string[PowerPara.FrequencyNumber];
|
|
|
Data.MaxFreqOffset = new string[PowerPara.FrequencyNumber];
|
|
|
-
|
|
|
+ Data.leftFreqOffset = new string[PowerPara.FrequencyNumber];
|
|
|
+ Data.rightFreqOffset = new string[PowerPara.FrequencyNumber];
|
|
|
+
|
|
|
for (int point = 0;; point++)
|
|
|
{
|
|
|
CenterFreq = PowerPara.StartFrequency + PowerPara.StepFrequency * point;
|
|
@@ -123,19 +135,25 @@ namespace Tps_LQ_Transmitter.models
|
|
|
SA.Write("单次扫描"); SA.Query("OPC");
|
|
|
SA.Write("PEAK", "1"); SA.Query("OPC");
|
|
|
SA.Write("PEAK", "2"); SA.Query("OPC");
|
|
|
+ SA.Write("PEAK", "3"); SA.Query("OPC");
|
|
|
|
|
|
if (SA.Query("IDN").Contains("N9030"))//N9030A型号频谱仪
|
|
|
{
|
|
|
|
|
|
SA.Write("DELT打开", "2"); SA.Query("OPC");
|
|
|
- SA.Write("NextPeak", "2"); SA.Query("OPC");
|
|
|
- PowerDelt[point] = double.Parse(SA.Query("读MARK功率", "2")); SA.Query("OPC");
|
|
|
+ SA.Write("NextPeakLeft", "2"); SA.Query("OPC");
|
|
|
+ PowerDeltleft[point] = double.Parse(SA.Query("读MARK功率", "2")); SA.Query("OPC");
|
|
|
+ SA.Write("DELT打开", "3"); SA.Query("OPC");
|
|
|
+ SA.Write("NextPeakRight", "3"); SA.Query("OPC");
|
|
|
+ PowerDeltright[point] = double.Parse(SA.Query("读MARK功率", "3")); SA.Query("OPC");
|
|
|
}
|
|
|
else//其他型号频谱仪
|
|
|
{
|
|
|
-
|
|
|
- SA.Write("NextPeak", "2"); SA.Query("OPC");
|
|
|
- PowerDelt[point] = double.Parse(SA.Query("读DELT功率", "2")); SA.Query("OPC");
|
|
|
+ SA.Write("NextPeakLeft", "2"); SA.Query("OPC");
|
|
|
+ PowerDeltleft[point] = double.Parse(SA.Query("读DELT功率", "2")); SA.Query("OPC");
|
|
|
+ SA.Write("NextPeakRight", "3"); SA.Query("OPC");
|
|
|
+ PowerDeltright[point] = double.Parse(SA.Query("读DELT功率", "3")); SA.Query("OPC");
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -146,52 +164,118 @@ namespace Tps_LQ_Transmitter.models
|
|
|
string RelativeVal= "0";
|
|
|
foreach (KeyValuePair<string, ModulationMatchParameter> kvp in CfigModuParas.ModulaParameters)
|
|
|
{
|
|
|
- if ((Math.Abs(Math.Abs(PowerDelt[point]) - double.Parse(kvp.Value.CfgRelative))) < temp)
|
|
|
+ if ((Math.Abs(Math.Abs(PowerDeltleft[point]) - double.Parse(kvp.Value.CfgRelative))) < temp)
|
|
|
{
|
|
|
- temp = Math.Abs(Math.Abs(PowerDelt[point]) - double.Parse(kvp.Value.CfgRelative));
|
|
|
+ temp = Math.Abs(Math.Abs(PowerDeltleft[point]) - double.Parse(kvp.Value.CfgRelative));
|
|
|
RelativeVal = kvp.Value.CfgRelative;
|
|
|
}
|
|
|
}
|
|
|
+ Data.leftModulationIndex[point] = CfigModuParas.GetModulaParameter(RelativeVal);//左侧调制系数
|
|
|
+ Data.leftFreqOffset[point] = CfigModuParas.GetFreqOffsetParameter(RelativeVal);//左侧最大频偏
|
|
|
|
|
|
- Data.ModulationIndex[point] = CfigModuParas.GetModulaParameter(RelativeVal);//调制系数
|
|
|
- Data.MaxFreqOffset[point] = CfigModuParas.GetFreqOffsetParameter(RelativeVal);//最大频偏
|
|
|
+ temp = 30;
|
|
|
+ RelativeVal = "0";
|
|
|
+ foreach (KeyValuePair<string, ModulationMatchParameter> kvp in CfigModuParas.ModulaParameters)
|
|
|
+ {
|
|
|
+ if ((Math.Abs(Math.Abs(PowerDeltright[point]) - double.Parse(kvp.Value.CfgRelative))) < temp)
|
|
|
+ {
|
|
|
+ temp = Math.Abs(Math.Abs(PowerDeltright[point]) - double.Parse(kvp.Value.CfgRelative));
|
|
|
+ RelativeVal = kvp.Value.CfgRelative;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Data.rightModulationIndex[point] = CfigModuParas.GetModulaParameter(RelativeVal);//右侧调制系数
|
|
|
+ Data.rightFreqOffset[point] = CfigModuParas.GetFreqOffsetParameter(RelativeVal);//右侧最大频偏
|
|
|
+
|
|
|
+ Data.ModulationIndex[point] = Math.Min(double.Parse(Data.leftModulationIndex[point]), double.Parse(Data.rightModulationIndex[point])).ToString();//调制系数
|
|
|
+ Data.MaxFreqOffset[point] = Math.Min(double.Parse(Data.leftFreqOffset[point]), double.Parse(Data.rightFreqOffset[point])).ToString();//最大频偏
|
|
|
|
|
|
ModulationIndexPrint.Test_name = parameters.Channel + "-调制系数测试-" + CenterFreq.ToString() + "MHz";
|
|
|
+ leftModulationIndexPrint.Test_name = parameters.Channel + "-fL调制系数测试-" + CenterFreq.ToString() + "MHz";
|
|
|
+ rightModulationIndexPrint.Test_name = parameters.Channel + "-fH调制系数测试-" + CenterFreq.ToString() + "MHz";
|
|
|
+
|
|
|
MaxFreqOffsetPrint.Test_name = parameters.Channel + "-最大频偏(KHz)-" + CenterFreq.ToString() + "MHz";
|
|
|
+ leftFreqOffsetPrint.Test_name = parameters.Channel + "-fL(KHz)-" + CenterFreq.ToString() + "MHz";
|
|
|
+ rightFreqOffsetPrint.Test_name = parameters.Channel + "-fH(KHz)-" + CenterFreq.ToString() + "MHz";
|
|
|
+
|
|
|
ModulationIndexPrint.Lower = PowerPara.ModulationIndexLower;
|
|
|
ModulationIndexPrint.Upper = PowerPara.ModulationIndexUpper;
|
|
|
+
|
|
|
ModulationIndexPrint.TestVal = double.Parse(Data.ModulationIndex[point]);
|
|
|
+ leftModulationIndexPrint.TestVal = double.Parse(Data.leftModulationIndex[point]);
|
|
|
+ rightModulationIndexPrint.TestVal = double.Parse(Data.rightModulationIndex[point]);
|
|
|
+
|
|
|
MaxFreqOffsetPrint.TestVal = double.Parse(Data.MaxFreqOffset[point]);
|
|
|
+ leftFreqOffsetPrint.TestVal = double.Parse(Data.leftFreqOffset[point]);
|
|
|
+ rightFreqOffsetPrint.TestVal = double.Parse(Data.rightFreqOffset[point]);
|
|
|
+
|
|
|
if (ModulationIndexPrint.TestVal >= ModulationIndexPrint.Lower && ModulationIndexPrint.TestVal <= ModulationIndexPrint.Upper)
|
|
|
{
|
|
|
ModulationIndexPrint.Result = "是";
|
|
|
MaxFreqOffsetPrint.Result = "是";
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ModulationIndexPrint.Result = "否";
|
|
|
+ ModulationIndexPrint.Result = "否";
|
|
|
MaxFreqOffsetPrint.Result = "否";
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (leftModulationIndexPrint.TestVal >= ModulationIndexPrint.Lower && leftModulationIndexPrint.TestVal <= ModulationIndexPrint.Upper)
|
|
|
+ {
|
|
|
+
|
|
|
+ leftModulationIndexPrint.Result = "是";
|
|
|
+ leftFreqOffsetPrint.Result = "是";
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ leftModulationIndexPrint.Result = "否";
|
|
|
+ leftFreqOffsetPrint.Result = "否";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (rightModulationIndexPrint.TestVal >= ModulationIndexPrint.Lower && rightModulationIndexPrint.TestVal <= ModulationIndexPrint.Upper)
|
|
|
+ {
|
|
|
+
|
|
|
+ rightModulationIndexPrint.Result = "是";
|
|
|
+ rightFreqOffsetPrint.Result = "是";
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ rightModulationIndexPrint.Result = "否";
|
|
|
+ rightFreqOffsetPrint.Result = "否";
|
|
|
}
|
|
|
- tps.TestTableAddCell(MaxFreqOffsetPrint.Test_name, "/","/", MaxFreqOffsetPrint.TestVal.ToString(), MaxFreqOffsetPrint.Result);
|
|
|
+ tps.TestTableAddCell(MaxFreqOffsetPrint.Test_name, leftFreqOffsetPrint.Lower.ToString(), leftFreqOffsetPrint.Upper.ToString(), MaxFreqOffsetPrint.TestVal.ToString(), MaxFreqOffsetPrint.Result);
|
|
|
+ tps.TestTableAddCell(leftFreqOffsetPrint.Test_name, leftFreqOffsetPrint.Lower.ToString(), leftFreqOffsetPrint.Upper.ToString(), leftFreqOffsetPrint.TestVal.ToString(), leftFreqOffsetPrint.Result);
|
|
|
+ tps.TestTableAddCell(rightFreqOffsetPrint.Test_name, rightFreqOffsetPrint.Lower.ToString(), rightFreqOffsetPrint.Upper.ToString(), rightFreqOffsetPrint.TestVal.ToString(), rightFreqOffsetPrint.Result);
|
|
|
+
|
|
|
tps.TestTableAddCell(ModulationIndexPrint.Test_name, ModulationIndexPrint.Lower.ToString(), ModulationIndexPrint.Upper.ToString(), ModulationIndexPrint.TestVal.ToString(), ModulationIndexPrint.Result);
|
|
|
-
|
|
|
+ tps.TestTableAddCell(leftModulationIndexPrint.Test_name, ModulationIndexPrint.Lower.ToString(), ModulationIndexPrint.Upper.ToString(), leftModulationIndexPrint.TestVal.ToString(), leftModulationIndexPrint.Result);
|
|
|
+ tps.TestTableAddCell(rightModulationIndexPrint.Test_name, ModulationIndexPrint.Lower.ToString(), ModulationIndexPrint.Upper.ToString(), rightModulationIndexPrint.TestVal.ToString(), rightModulationIndexPrint.Result);
|
|
|
+
|
|
|
if (parameters.Channel == "通道1")
|
|
|
{
|
|
|
- if (point == 0)
|
|
|
- {
|
|
|
- WriteExcelData(sheet, point - 1, 1, "测试名称", "下限", "上限", "测试值", "通过");
|
|
|
- }
|
|
|
+
|
|
|
//tps.SetTestTableCellValue(point, 9, ModulationIndexPrint.Result,Data.ModulationIndex[point]);
|
|
|
WriteExcelData(sheet, point, 1, ModulationIndexPrint.Test_name, ModulationIndexPrint.Lower.ToString(), ModulationIndexPrint.Upper.ToString(), ModulationIndexPrint.TestVal.ToString(), ModulationIndexPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 5, leftModulationIndexPrint.Test_name, leftModulationIndexPrint.Lower.ToString(), leftModulationIndexPrint.Upper.ToString(), leftModulationIndexPrint.TestVal.ToString(), leftModulationIndexPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 9, rightModulationIndexPrint.Test_name, rightModulationIndexPrint.Lower.ToString(), rightModulationIndexPrint.Upper.ToString(), rightModulationIndexPrint.TestVal.ToString(), rightModulationIndexPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 3, MaxFreqOffsetPrint.Test_name, MaxFreqOffsetPrint.Lower.ToString(), MaxFreqOffsetPrint.Upper.ToString(), MaxFreqOffsetPrint.TestVal.ToString(), MaxFreqOffsetPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 7, leftFreqOffsetPrint.Test_name, leftFreqOffsetPrint.Lower.ToString(), leftFreqOffsetPrint.Upper.ToString(), leftFreqOffsetPrint.TestVal.ToString(), leftFreqOffsetPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 11, rightFreqOffsetPrint.Test_name, rightFreqOffsetPrint.Lower.ToString(), rightFreqOffsetPrint.Upper.ToString(), rightFreqOffsetPrint.TestVal.ToString(), rightFreqOffsetPrint.Result);
|
|
|
// tps.SetTestTableCellValue(point, 6, Data.MaxFreqOffset[point]);
|
|
|
}
|
|
|
else if (parameters.Channel == "通道2")
|
|
|
{
|
|
|
- if (point == 0)
|
|
|
- {
|
|
|
- WriteExcelData(sheet, point - 1, 2, "测试名称", "下限", "上限", "测试值", "通过");
|
|
|
- }
|
|
|
+
|
|
|
WriteExcelData(sheet, point, 2, ModulationIndexPrint.Test_name, ModulationIndexPrint.Lower.ToString(), ModulationIndexPrint.Upper.ToString(), ModulationIndexPrint.TestVal.ToString(), ModulationIndexPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 6, leftModulationIndexPrint.Test_name, leftModulationIndexPrint.Lower.ToString(), leftModulationIndexPrint.Upper.ToString(), leftModulationIndexPrint.TestVal.ToString(), leftModulationIndexPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 10, rightModulationIndexPrint.Test_name, rightModulationIndexPrint.Lower.ToString(), rightModulationIndexPrint.Upper.ToString(), rightModulationIndexPrint.TestVal.ToString(), rightModulationIndexPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 4, MaxFreqOffsetPrint.Test_name, MaxFreqOffsetPrint.Lower.ToString(), MaxFreqOffsetPrint.Upper.ToString(), MaxFreqOffsetPrint.TestVal.ToString(), MaxFreqOffsetPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 8, leftFreqOffsetPrint.Test_name, leftFreqOffsetPrint.Lower.ToString(), leftFreqOffsetPrint.Upper.ToString(), leftFreqOffsetPrint.TestVal.ToString(), leftFreqOffsetPrint.Result);
|
|
|
+ WriteExcelData(sheet, point, 11, rightFreqOffsetPrint.Test_name, rightFreqOffsetPrint.Lower.ToString(), rightFreqOffsetPrint.Upper.ToString(), rightFreqOffsetPrint.TestVal.ToString(), rightFreqOffsetPrint.Result);
|
|
|
//tps.SetTestTableCellValue(point + 15, 9, ModulationIndexPrint.Result, Data.ModulationIndex[point]);
|
|
|
//tps.SetTestTableCellValue(point + 15, 6, Data.MaxFreqOffset[point]);
|
|
|
}
|
|
@@ -440,10 +524,26 @@ namespace Tps_LQ_Transmitter.models
|
|
|
/// </summary>
|
|
|
public string[] ModulationIndex { set; get; }
|
|
|
/// <summary>
|
|
|
+ ///主频左侧调制系数
|
|
|
+ /// </summary>
|
|
|
+ public string[] leftModulationIndex { set; get; }
|
|
|
+ /// <summary>
|
|
|
+ ///主频右侧调制系数
|
|
|
+ /// </summary>
|
|
|
+ public string[] rightModulationIndex { set; get; }
|
|
|
+ /// <summary>
|
|
|
/// 最大频偏
|
|
|
/// </summary>
|
|
|
public string[] MaxFreqOffset { set; get; }
|
|
|
-
|
|
|
+ /// <summary>
|
|
|
+ /// FL频偏
|
|
|
+ /// </summary>
|
|
|
+ public string[] leftFreqOffset { set; get; }
|
|
|
+ /// <summary>
|
|
|
+ /// FH频偏
|
|
|
+ /// </summary>
|
|
|
+ public string[] rightFreqOffset { set; get; }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
//public class DataType
|