Explorar o código

频点切换调试

ceac_pqy@163.com %!s(int64=3) %!d(string=hai) anos
pai
achega
bf1ce9a7fa

BIN=BIN
exe/apps/Tps_LQ_Transmitter/Tps_LQ_Transmitter.dll


BIN=BIN
exe/apps/Tps_LQ_Transmitter/Tps_LQ_Transmitter.pdb


BIN=BIN
exe/apps/Tps_LQ_Transmitter/config/串口控制.xlsx


BIN=BIN
exe/apps/Tps_LQ_Transmitter/config/测试#常温测试#发射机 -N9030A.xlsx


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1215 - 0
exe/logs/202108.log


BIN=BIN
tps/TpsLabStudio/.vs/TpsLabStudio/v16/.suo


+ 13 - 0
tps/TpsLabStudio/Common/SerialConfig.cs

@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tps_LQ_Transmitter.Common
+{
+    public class SerialConfig
+    {
+
+    }
+}

+ 1 - 1
tps/TpsLabStudio/FrmMain.cs

@@ -270,7 +270,7 @@ namespace Tps_LQ_Transmitter
 
             MainTps tps = new MainTps();
 
-            
+            tps.LoadComWorkBook();
 
             dgvTestData.DataSource = null;
             dgvTestData.DataSource = currFileNode.Tps.TestTable;

+ 1 - 0
tps/TpsLabStudio/TpsLabStudio.csproj

@@ -93,6 +93,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Bundle.cs" />
+    <Compile Include="Common\SerialConfig.cs" />
     <Compile Include="Common\VisaResource.cs" />
     <Compile Include="com\BaseModelStruct.cs" />
     <Compile Include="com\DeviceNode.cs" />

+ 28 - 7
tps/TpsLabStudio/com/SerialPort.cs

@@ -9,20 +9,38 @@ namespace Tps_LQ_Transmitter.com
 {
     class TransmitterSerialPort
     {
-        public void DUT_Transmitter_Ctrol(string PORT, byte ModeSelect,byte FreqSelect)
+         SerialPort sp = new SerialPort(); //新建一个串口对象  
+        public void SerialOpen(string PORT)
         {
-            
-            SerialPort sp = new SerialPort(); //新建一个串口对象
             sp.PortName = PORT;     //端口号设置为com_port的值
             sp.BaudRate = 115200;
             sp.DataBits = 8;
             sp.StopBits = StopBits.One;//停止位设置为com_stop的值
-            sp.Parity = Parity.None;//获取奇偶校验选项的值
+            sp.Parity = Parity.Odd;//获取奇偶校验选项的值
             sp.ReadTimeout = 1000;    //读取等待时间无限长
             sp.RtsEnable = true;
             try
             {
-                sp.Open();  //打开串口
+                if (!sp.IsOpen)
+                {
+                    sp.Open();  //打开串口
+                }
+            }
+            catch (Exception e2)
+            {
+                Console.WriteLine("open err:" + e2.Message);
+            }
+
+        }
+        public void DUT_Transmitter_Ctrol( byte ModeSelect,byte FreqSelect)
+        {
+            
+            try
+            {
+                if (!sp.IsOpen)
+                {
+                    sp.Open();  //打开串口
+                }
             }
             catch (Exception e2)
             {
@@ -43,10 +61,13 @@ namespace Tps_LQ_Transmitter.com
             catch (Exception ex)
             {
                 throw new Exception($"write com error msg:{ex.Message}");
-            }
+            }     
+        }
+        public void SerialClose()
+        {
             sp.Close();
-
         }
+
     }
 
 }

BIN=BIN
tps/TpsLabStudio/config/串口控制.xlsx


BIN=BIN
tps/TpsLabStudio/config/测试#常温测试#发射机 -N9030A.xlsx


+ 181 - 4
tps/TpsLabStudio/models/BaseModel.cs

@@ -73,9 +73,18 @@ namespace Tps_LQ_Transmitter.models
         public void OpenExcel(string sheetname, out Spire.Xls.Workbook workbook, out Spire.Xls.Worksheet sheet)
         {
             Spire.Xls.Worksheet sheet1 = null;
-            string TestFilePath = "F:";
-            string ModelFile = "F:/发射机/发射机模板/"+ tps.TestProject + "模板.xlsx";
-            string subPath = "F:/发射机/发射机测试数据/"+ tps.TestProject +"/";
+            string productname;
+            if (tps.Product.Contains('-'))
+            {
+               productname = tps.Product.Split('-')[0];
+            }
+            else 
+            {
+                productname = tps.Product;
+            }
+            
+            string ModelFile = "F:/发射机/" + productname + "/模板/" + tps.TestProject + "模板.xlsx";
+            string subPath = "F:/发射机/" + productname + "/测试数据/" + tps.TestProject +"/";
 
             if (false == System.IO.Directory.Exists(subPath))
             {
@@ -122,11 +131,179 @@ namespace Tps_LQ_Transmitter.models
         }
         public void SaveExcel(Spire.Xls.Workbook workbook)
         {
-            string subPath = "F:/发射机/发射机测试数据/" + tps.TestProject + "/";
+            string productname;
+            if (tps.Product.Contains('-'))
+            {
+                productname = tps.Product.Split('-')[0];
+            }
+            else
+            {
+                productname = tps.Product;
+            }
+            string subPath = "F:/发射机/" + productname +  "/测试数据 /" + tps.TestProject + "/";
             string FileName = subPath + tps.Serial + ".xlsx";
             workbook.CalculateAllValue();
             workbook.SaveToFile(FileName);
         }
+        /// <summary>
+        /// 获取串口配置表
+        /// </summary>
+        /// <returns></returns>
+        public MatchComPara LoadComWorkBook()
+        {
+            MatchComPara pars = new MatchComPara();
+            string FileName = Path.Combine(Bundle.bundle.BundleDir, "config\\串口控制.xlsx");
+            if (!File.Exists(FileName))
+            {
+                ShowMessage(MsgType.Error, "找不到串口控制.xlsx");
+                return null;
+            }
+
+            Spire.Xls.Workbook workbook = new Spire.Xls.Workbook();
+            workbook.LoadFromFile(FileName);
+
+
+            //获取第一个工作表sheet1
+            Spire.Xls.Worksheet sheet = workbook.Worksheets[0];
+            int num = 0;
+            int blankRows = 0;
+
+            while (num++ < 200)
+            {
+                //索引从1开始
+                string col1 = sheet.Range[num, 1].Value2 != null ? sheet.Range[num, 1].Value2.ToString() : "";
+                col1 = col1.Trim();
+                if (string.IsNullOrEmpty(col1))
+                {
+                    blankRows++;
+                    if (blankRows > 5)
+                    {
+                        //连续5个空行以上则退出
+                        break;
+                    }
+                }
+                else
+                {
+                    blankRows = 0;
+                }
+                if (col1.Equals("序号"))
+                {
+                    List<ComMatchParameter> ComTable = ReadParameters(sheet, num);
+
+                    foreach (var item in ComTable)
+                    {
+                        if (pars.ComParameters.ContainsKey(item.SN))
+                        {
+                            ShowMessage(MsgType.Error, string.Format("串口控制:{0} 存在同名参数:{1},无法重复添加参数", sheet.Name, item.SN));
+                            continue;
+                        }
+                        pars.ComParameters.Add(item.SN, item);
+                    }
+                }
+            }
+            return pars;
+        }
+        public class MatchComPara
+        {
+            public Dictionary<string, ComMatchParameter> ComParameters;
+            public MatchComPara()
+            {
+                ComParameters = new Dictionary<string, ComMatchParameter>();
+            }
+            public string GetComPort(string name)
+            {
+                if (string.IsNullOrEmpty(name))
+                    return null;
+
+                if (this.ComParameters.ContainsKey(name) == false)
+                    return null;
+
+                string val1 = this.ComParameters[name].ComPort.Trim();
+                return val1;
+            }
+            public string GetThirdByte(string name)
+            {
+                string val1 = this.ComParameters[name].ThirdByte.Trim();
+                return val1;
+            }
+            public string GetFourthByte(string name)
+            {
+                string val2 = this.ComParameters[name].FourthByte.Trim();
+                return val2;
+            }
+            public string Getfreqpoint(string name)
+            {
+                string val2 = this.ComParameters[name].freqpoint.Trim();
+                return val2;
+            }
+        }
+        List<ComMatchParameter> ReadParameters(Spire.Xls.Worksheet sheet, int rowIndex)
+        {
+            List<ComMatchParameter> ModulationTable = new List<ComMatchParameter>();
+            string col1 = sheet.Range[rowIndex, 1].Value2 != null ? sheet.Range[rowIndex, 1].Value2.ToString() : "";
+            string col2 = sheet.Range[rowIndex, 2].Value2 != null ? sheet.Range[rowIndex, 2].Value2.ToString() : "";
+            string col3 = sheet.Range[rowIndex, 3].Value2 != null ? sheet.Range[rowIndex, 3].Value2.ToString() : "";
+            string col4 = sheet.Range[rowIndex, 4].Value2 != null ? sheet.Range[rowIndex, 4].Value2.ToString() : "";
+            string col5 = sheet.Range[rowIndex, 5].Value2 != null ? sheet.Range[rowIndex, 5].Value2.ToString() : "";
+
+            if (!(col1 == "序号" && col2 == "串口号" && col3 == "第3个字节" && col4 == "第4个字节" && col5 == "频点(MHz)"))
+            {
+                ShowMessage(MsgType.Error, "'串口控制'行首标题位置和格式不正确");
+                return ModulationTable;
+            }
+
+            int num = rowIndex;
+            //默认最多30行
+            while (num++ < rowIndex + 100)
+            {
+                col1 = sheet.Range[num, 1].Value2 != null ? sheet.Range[num, 1].Value2.ToString() : "";
+                col2 = sheet.Range[num, 2].Value2 != null ? sheet.Range[num, 2].Value2.ToString() : "";
+                col3 = sheet.Range[num, 3].Value2 != null ? sheet.Range[num, 3].Value2.ToString() : "";
+                col4 = sheet.Range[num, 4].Value2 != null ? sheet.Range[num, 4].Value2.ToString() : "";
+                col5 = sheet.Range[num, 5].Value2 != null ? sheet.Range[num, 5].Value2.ToString() : "";
+                if (string.IsNullOrEmpty(col1))
+                {
+                    break;
+                }
+                ComMatchParameter ObjModulation = new ComMatchParameter();
+                ObjModulation.SN = col1;
+                ObjModulation.ComPort = col2;
+                ObjModulation.ThirdByte = col3;
+                ObjModulation.FourthByte = col4;
+                ObjModulation.freqpoint = col5;
+
+                ModulationTable.Add(ObjModulation);
+            }
+            return ModulationTable;
+        }
+        /// <summary>
+        /// 串口控制4个对应项
+        /// </summary>
+        public class ComMatchParameter
+        {
+
+            /// <summary>
+            /// 序号
+            /// </summary>
+            public string SN { get; set; }
+            /// <summary>
+            /// 串口号
+            /// </summary>
+            public string ComPort { get; set; }
+            /// <summary>
+            /// 第3个字节
+            /// </summary>
+            public string ThirdByte { get; set; }
+            /// <summary>
+            /// 第4个字节
+            /// </summary>
+            public string FourthByte { get; set; }
+            /// <summary>
+            /// 频点
+            /// </summary>
+            public string freqpoint { get; set; }
+
+        }
         public class DataType
         {
 

+ 32 - 26
tps/TpsLabStudio/models/HarmonicSuppression.cs

@@ -41,12 +41,21 @@ namespace Tps_LQ_Transmitter.models
 
             sheet.Range["L1"].Value2 = tps.Serial;
             ConfigParameter PowerPara = new ConfigParameter();
-            PowerPara.ComPort = parameters.Parameters.GetParameter<string>("串口");
+            MatchComPara CfigComParas = new MatchComPara();
+
+            CfigComParas = LoadComWorkBook();
+
+            if (CfigComParas == null)
+            {
+                return false;
+            }
+
+            byte FourthByte = 0x00;
+            string ComPort = CfigComParas.GetComPort("1");
+            byte ThridByte = Convert.ToByte(CfigComParas.GetThirdByte("1"), 16);
+            PowerPara.StepFrequency = 0;
+
             PowerPara.OutLoss = parameters.Parameters.GetParameter<double>("输出损耗");
-            PowerPara.StartFrequency = parameters.Parameters.GetParameter<double>("起始频率");
-            PowerPara.StepFrequency = parameters.Parameters.GetParameter<double>("频率步进");
-            PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
-            PowerPara.StopFrequency = parameters.Parameters.GetParameter<double>("终止频率");
             PowerPara.SPAN = parameters.Parameters.GetParameter<string>("扫描带宽(SPAN)");
             PowerPara.REF = parameters.Parameters.GetParameter<string>("参考电平(REF)");
             PowerPara.SmallSignalREF = parameters.Parameters.GetParameter<string>("小信号参考电平(REF)");
@@ -55,8 +64,7 @@ namespace Tps_LQ_Transmitter.models
             PowerPara.HarmonicTime = parameters.Parameters.GetParameterToArray<int>("谐波次数");
             PowerPara.ControlDelay = parameters.Parameters.GetParameter<int>("控制延时");
             PowerPara.HarmonicSuppressionLower = parameters.Parameters.GetParameter<double>("谐波抑制下限");
-            if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
-                || (PowerPara.SPAN == null) || (PowerPara.REF == null) ||(PowerPara.SmallSignalREF==null)|| (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.HarmonicTime == null)
+            if ( (PowerPara.SPAN == null) || (PowerPara.REF == null) ||(PowerPara.SmallSignalREF==null)|| (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.HarmonicTime == null)
                 ||(PowerPara.HarmonicSuppressionLower==0))
             {
                 ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
@@ -66,6 +74,7 @@ namespace Tps_LQ_Transmitter.models
             {
                 PowerPara.ControlDelay = 10;
             }
+            SerialClient.SerialOpen(ComPort);
             if (true)//需具备仪器
             {
                 SA.Write("仪器复位"); SA.Query("OPC");
@@ -75,15 +84,6 @@ namespace Tps_LQ_Transmitter.models
               //  SA.Write("SingleOrCont", "0"); SA.Query("OPC");
             }
 
-
-            if ((PowerPara.FrequencyNumber != 0) && (PowerPara.FrequencyNumber != 1) && (PowerPara.StepFrequency == 0))
-            {
-                PowerPara.StepFrequency = ((int)(((PowerPara.StopFrequency - PowerPara.StartFrequency) / (PowerPara.FrequencyNumber - 1)) * 100)) / 100;
-            }
-            if (PowerPara.StepFrequency != 0)
-            {
-                PowerPara.FrequencyNumber = ((int)((PowerPara.StopFrequency - PowerPara.StartFrequency) / PowerPara.StepFrequency)) + 1;
-            }
             double CenterFreq;
             int harmonic_num;
             double Power, Freq;
@@ -127,7 +127,7 @@ namespace Tps_LQ_Transmitter.models
                         SA.Write("单次扫描"); SA.Query("OPC");
                         PsaPeakValue_Tracedata(SA, out y_value, out x_value, false);
                         Data.HarmonicSuppression[point, harmonic_num] = Math.Round(Power - y_value, 2);
-                        HarmonicSuppressionPrint.Test_name = parameters.Channel + "-"+ PowerPara.HarmonicTime[harmonic_num].ToString()+ "次-谐波抑制测试-" + (Freq / 1000000).ToString() + "MHz";
+                        HarmonicSuppressionPrint.Test_name = parameters.Channel + "-"+ PowerPara.HarmonicTime[harmonic_num].ToString()+ "次-谐波抑制测试-" + CenterFreq.ToString() + "MHz";
                         HarmonicTimeVal[harmonic_num] = Data.HarmonicSuppression[point, harmonic_num];
                         if (HarmonicTimeVal[harmonic_num] >= HarmonicSuppressionPrint.Lower)
                         {
@@ -138,6 +138,18 @@ namespace Tps_LQ_Transmitter.models
                             HarmonicSuppressionPrint.Result = "否";
                         }
                         tps.TestTableAddCell(HarmonicSuppressionPrint.Test_name, HarmonicSuppressionPrint.Lower.ToString(), "/", HarmonicTimeVal[harmonic_num].ToString(), HarmonicSuppressionPrint.Result);
+                        if (parameters.Channel == "通道1")
+                        {
+
+                            WriteExcelData(sheet, point, 1+2*(harmonic_num+1), HarmonicSuppressionPrint.Test_name, HarmonicSuppressionPrint.Lower.ToString(), "/", HarmonicSuppressionPrint.TestVal.ToString(), HarmonicSuppressionPrint.Result);
+                            // tps.SetTestTableCellValue(point, 15, HarmonicSuppressionPrint.Result, HarmonicSuppressionPrint.TestVal);
+                        }
+                        else if (parameters.Channel == "通道2")
+                        {
+
+                            WriteExcelData(sheet, point, 2 + 2 * (harmonic_num + 1), HarmonicSuppressionPrint.Test_name, HarmonicSuppressionPrint.Lower.ToString(), "/", HarmonicSuppressionPrint.TestVal.ToString(), HarmonicSuppressionPrint.Result);
+                            // tps.SetTestTableCellValue(point + 15, 15, HarmonicSuppressionPrint.Result, HarmonicSuppressionPrint.TestVal);
+                        }
                     }
 
                     if (PowerPara.HarmonicTime.Length > 1)//计算几次谐波中的最小值
@@ -151,7 +163,7 @@ namespace Tps_LQ_Transmitter.models
 
                 }
 
-                HarmonicSuppressionPrint.Test_name = parameters.Channel + "-谐波抑制测试-" + (Freq / 1000000).ToString() + "MHz";
+                HarmonicSuppressionPrint.Test_name = parameters.Channel + "-谐波抑制测试-" + CenterFreq.ToString() + "MHz";
                
                 HarmonicSuppressionPrint.TestVal = HarmonicMinTimeVal;
               //  HarmonicSuppressionPrint.TestVal = random.Next(4000, 12000) / 100.0;//随机数
@@ -166,19 +178,13 @@ namespace Tps_LQ_Transmitter.models
                 tps.TestTableAddCell(HarmonicSuppressionPrint.Test_name, HarmonicSuppressionPrint.Lower.ToString(), "/", HarmonicSuppressionPrint.TestVal.ToString(), HarmonicSuppressionPrint.Result);
                 if (parameters.Channel == "通道1")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 1, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                    
                     WriteExcelData(sheet, point, 1, HarmonicSuppressionPrint.Test_name, HarmonicSuppressionPrint.Lower.ToString(),"/", HarmonicSuppressionPrint.TestVal.ToString(), HarmonicSuppressionPrint.Result);
                    // tps.SetTestTableCellValue(point, 15, HarmonicSuppressionPrint.Result, HarmonicSuppressionPrint.TestVal);
                 }
                 else if (parameters.Channel == "通道2")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point-1, 2, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                    
                     WriteExcelData(sheet, point, 2, HarmonicSuppressionPrint.Test_name, HarmonicSuppressionPrint.Lower.ToString(), "/", HarmonicSuppressionPrint.TestVal.ToString(), HarmonicSuppressionPrint.Result);
                    // tps.SetTestTableCellValue(point + 15, 15, HarmonicSuppressionPrint.Result, HarmonicSuppressionPrint.TestVal);
                 }

+ 124 - 24
tps/TpsLabStudio/models/ModulationIndexAndMaxFreqOffset.cs

@@ -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

+ 11 - 6
tps/TpsLabStudio/models/NoisePowerDensity.cs

@@ -35,11 +35,13 @@ 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>("起始频率");
             PowerPara.StepFrequency = parameters.Parameters.GetParameter<double>("频率步进");
             PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
+
             PowerPara.StopFrequency = parameters.Parameters.GetParameter<double>("终止频率");
            // PowerPara.SPAN = parameters.Parameters.GetParameter<string>("扫描带宽(SPAN)");
             PowerPara.CHSPAN = parameters.Parameters.GetParameter<string>("通道扫描带宽(SPAN)");
@@ -49,8 +51,8 @@ namespace Tps_LQ_Transmitter.models
             PowerPara.VBW = parameters.Parameters.GetParameter<string>("视频带宽(VBW)");
             PowerPara.ControlDelay = parameters.Parameters.GetParameter<int>("控制延时");
             PowerPara.NoisePowerUpper = parameters.Parameters.GetParameter<double>("噪声功率谱密度上限");
-            if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
-                || (PowerPara.CHSPAN == null) || (PowerPara.ACHBand == null) || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.NoisePowerUpper == 0))
+            if ((PowerPara.StartFrequency == 0) || (PowerPara.StopFrequency == 0)  || (PowerPara.CHSPAN == null) || (PowerPara.ACHBand == null) 
+                || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.NoisePowerUpper == 0))
             {
                 ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
                 return false;
@@ -68,7 +70,6 @@ namespace Tps_LQ_Transmitter.models
             {
                 SA.Write("设置通道REF", "-20"); SA.Query("OPC");
                 SA.Write("ATT", "2"); SA.Query("OPC");
-                SA.Write("设置通道SPAN", PowerPara.CHSPAN); SA.Query("OPC");
             }
             else
             {
@@ -79,10 +80,14 @@ namespace Tps_LQ_Transmitter.models
                 SA.Write("SPAN", PowerPara.CHSPAN); SA.Query("OPC");
             }
             
-            SA.Write("设置通道带宽", PowerPara.ACHBand); SA.Query("OPC");
-            
+            SA.Write("设置通道带宽", PowerPara.ACHBand); SA.Query("OPC");//设置完设置通道带宽后,设置通道SPAN会变,所以通道SPAN放在通道带宽后
+            if (SA.Query("IDN").Contains("N9030"))//N9030A型号频谱仪
+            {
+                SA.Write("设置通道SPAN", PowerPara.CHSPAN); SA.Query("OPC");
+            }
+
+
 
-            
 
             if ((PowerPara.FrequencyNumber != 0) && (PowerPara.FrequencyNumber != 1) && (PowerPara.StepFrequency == 0))
             {

+ 3 - 2
tps/TpsLabStudio/models/PhaseNoise.cs

@@ -34,6 +34,7 @@ namespace Tps_LQ_Transmitter.models
                 return false;
             }
             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>("起始频率");
@@ -48,8 +49,8 @@ namespace Tps_LQ_Transmitter.models
             PowerPara.VBW = parameters.Parameters.GetParameter<string>("视频带宽(VBW)");
             PowerPara.ControlDelay = parameters.Parameters.GetParameter<int>("控制延时");
             PowerPara.PhaseNoiseUpper = parameters.Parameters.GetParameter<double >("相位噪声上限");
-            if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
-                || (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.PhaseNoiseUpper==0))
+            if ((PowerPara.StartFrequency == 0) ||  (PowerPara.StopFrequency == 0)|| (PowerPara.SPAN == null) || (PowerPara.REF == null) 
+                || (PowerPara.RBW == null) ||  (PowerPara.VBW == null) || (PowerPara.PhaseNoiseUpper==0))
             {
                 ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
                 return false;

+ 57 - 47
tps/TpsLabStudio/models/PowerAndFreqStability.cs

@@ -52,13 +52,26 @@ namespace Tps_LQ_Transmitter.models
                 return false;
             }
 
+
             ConfigParameter PowerPara = new ConfigParameter();
-            PowerPara.ComPort = parameters.Parameters.GetParameter<string>("串口");
+            MatchComPara CfigComParas = new MatchComPara();
+            CfigComParas = LoadComWorkBook();
+
+            if (CfigComParas == null)
+            {
+                return false;
+            }
+
+            byte FourthByte = 0x00;
+            string ComPort = CfigComParas.GetComPort("1");
+            byte ThridByte = Convert.ToByte(CfigComParas.GetThirdByte("1"), 16);
+            PowerPara.StepFrequency = 0;
+            
             PowerPara.OutLoss = parameters.Parameters.GetParameter<double>("输出损耗");
-            PowerPara.StartFrequency = parameters.Parameters.GetParameter<double>("起始频率");
-            PowerPara.StepFrequency = parameters.Parameters.GetParameter<double>("频率步进");
-            PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
-            PowerPara.StopFrequency = parameters.Parameters.GetParameter<double>("终止频率");
+           // PowerPara.StartFrequency = parameters.Parameters.GetParameter<double>("起始频率");
+           // PowerPara.StepFrequency = parameters.Parameters.GetParameter<double>("频率步进");
+           // PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
+         //   PowerPara.StopFrequency = parameters.Parameters.GetParameter<double>("终止频率");
             PowerPara.SPAN = parameters.Parameters.GetParameter<string>("扫描带宽(SPAN)");
             PowerPara.CHSPAN = parameters.Parameters.GetParameter<string>("通道扫描带宽(SPAN)");
             PowerPara.ACHBand = parameters.Parameters.GetParameter<string>("通道带宽");
@@ -71,9 +84,8 @@ namespace Tps_LQ_Transmitter.models
             PowerPara.FreqAccuracyUpper = parameters.Parameters.GetParameter<double>("频率稳定度上限");
             PowerPara.PowerSumLower = parameters.Parameters.GetParameter<double>("两路功率总和下限");
             PowerPara.PowerFlatnessUpper = parameters.Parameters.GetParameter<double>("功率不平度上限");
-            if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
-                || (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.PowerLower == 0)
-                || (PowerPara.PowerUpper == 0) || (PowerPara.FreqAccuracyUpper == 0) ||(PowerPara.PowerSumLower == 0) || (PowerPara.PowerFlatnessUpper == 0))
+            if (  (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.PowerLower == 0)
+                || (PowerPara.PowerUpper == 0) || (PowerPara.FreqAccuracyUpper == 0) || (PowerPara.PowerSumLower == 0) || (PowerPara.PowerFlatnessUpper == 0))
             {
                 ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
                 return false;
@@ -82,20 +94,22 @@ namespace Tps_LQ_Transmitter.models
             {
                 PowerPara.ControlDelay = 10;
             }
-            if(true)//需具备仪器
+            SerialClient.SerialOpen(ComPort);
+            if (true)//需具备仪器
             {
                 SA.Write("仪器复位"); SA.Query("OPC");                           
                 
 
             }
-            if ((PowerPara.FrequencyNumber != 0) && (PowerPara.FrequencyNumber != 1) && (PowerPara.StepFrequency == 0))
-            {
-                PowerPara.StepFrequency = ((int)(((PowerPara.StopFrequency - PowerPara.StartFrequency) / (PowerPara.FrequencyNumber - 1)) * 100)) / 100;
-            }
-            if (PowerPara.StepFrequency != 0)
-            {
-                PowerPara.FrequencyNumber = ((int)((PowerPara.StopFrequency - PowerPara.StartFrequency) / PowerPara.StepFrequency)) + 1;
-            }
+            //if ((PowerPara.FrequencyNumber != 0) && (PowerPara.FrequencyNumber != 1) && (PowerPara.StepFrequency == 0))
+            //{
+            //    PowerPara.StepFrequency = ((int)(((PowerPara.StopFrequency - PowerPara.StartFrequency) / (PowerPara.FrequencyNumber - 1)) * 100)) / 100;
+            //}
+            //if (PowerPara.StepFrequency != 0)
+            //{
+            //    PowerPara.FrequencyNumber = ((int)((PowerPara.StopFrequency - PowerPara.StartFrequency) / PowerPara.StepFrequency)) + 1;
+            //}
+            PowerPara.FrequencyNumber = CfigComParas.ComParameters.Count;
             double CenterFreq;
             Data.Power = new double[PowerPara.FrequencyNumber];
             Data.Freq = new double[PowerPara.FrequencyNumber];
@@ -114,19 +128,19 @@ namespace Tps_LQ_Transmitter.models
                     }
                 }
             }
-
-            for (int point = 0; ; point++)
+            
+            for (int point = 0; point < PowerPara.FrequencyNumber; point++)
             {
 
-                CenterFreq = PowerPara.StartFrequency + PowerPara.StepFrequency * point;
-                if (CenterFreq > PowerPara.StopFrequency || (PowerPara.FrequencyNumber == 1 && point == 1))
-                {
-                    break;
-                }
+                string sa= CfigComParas.GetFourthByte((point + 1).ToString());
+                FourthByte = Convert.ToByte(CfigComParas.GetFourthByte((point + 1).ToString()), 16);
+                CenterFreq = double.Parse(CfigComParas.Getfreqpoint((point + 1).ToString()));
+                //CenterFreq = PowerPara.StartFrequency + PowerPara.StepFrequency * FourthByte;
+                
                 if (true)//需具备仪器
                 {
                     //控制
-                //    SerialClient.DUT_Transmitter_Ctrol(PowerPara.ComPort, Convert.ToByte(point + 1));
+                    SerialClient.DUT_Transmitter_Ctrol(ThridByte, FourthByte);
                     Thread.Sleep(PowerPara.ControlDelay);//单位ms
 
                     SA.Write("设置频谱测试模式"); SA.Query("OPC");
@@ -151,7 +165,7 @@ namespace Tps_LQ_Transmitter.models
                     SA.Write("SingleOrCont", "0"); SA.Query("OPC");
                     if (SA.Query("IDN").Contains("N9030"))
                     {
-                        SA.Write("设置通道SPAN", PowerPara.CHSPAN); SA.Query("OPC");
+                        
                         SA.Write("设置通道REF", PowerPara.REF); SA.Query("OPC");
                     }
                     else 
@@ -161,16 +175,20 @@ namespace Tps_LQ_Transmitter.models
 
                     }
 
-                    SA.Write("设置通道带宽", PowerPara.ACHBand); SA.Query("OPC");
+                    SA.Write("设置通道带宽", PowerPara.ACHBand); SA.Query("OPC"); ;//设置完设置通道带宽后,设置通道SPAN会变,所以通道SPAN放在通道带宽后
+                    if (SA.Query("IDN").Contains("N9030"))
+                    {
+                        SA.Write("设置通道SPAN", PowerPara.CHSPAN); SA.Query("OPC");
+                    }
                     SA.Write("单次扫描"); SA.Query("OPC");
                     if (SA.Query("IDN").Contains("N9030"))
                     {
-                        PsaPeakValue_CHTracedata(SA, out y_value, out x_value, true);
+                       // PsaPeakValue_CHTracedata(SA, out y_value, out x_value, true);
                         y_value = double.Parse(SA.Query("读通道功率"));
                     }
                     else
                     {
-                        PsaPeakValue_Tracedata(SA, out y_value, out x_value, true);
+                       // PsaPeakValue_Tracedata(SA, out y_value, out x_value, true);
                         y_value = double.Parse(SA.Query("读通道功率"));
 
                     }  
@@ -210,7 +228,7 @@ namespace Tps_LQ_Transmitter.models
 
                 FreqAccuracyPrint.Test_name = parameters.Channel + "-频率稳定度测试-" + CenterFreq.ToString() + "MHz";
                 FreqAccuracyPrint.Upper = PowerPara.FreqAccuracyUpper;
-                FreqAccuracyPrint.TestVal = Math.Round(Math.Abs(x_value - CenterFreq * 1000000) / (CenterFreq * 1000000), 6);//频率稳定度
+                FreqAccuracyPrint.TestVal = Math.Round(Math.Abs(TestFreq - CenterFreq * 1000000) / (CenterFreq * 1000000), 6);//频率稳定度
                 //FreqAccuracyPrint.TestVal = Math.Round(Math.Abs((random.Next(-600, 6000) / 100.0 + CenterFreq)*1000000 - CenterFreq * 1000000) / (CenterFreq * 1000000), 6);//随机数
                 if (FreqAccuracyPrint.TestVal <= FreqAccuracyPrint.Upper)
                 {
@@ -224,23 +242,17 @@ namespace Tps_LQ_Transmitter.models
                 tps.TestTableAddCell(FreqPrint.Test_name, FreqPrint.Lower.ToString(), FreqPrint.Upper.ToString(), FreqPrint.TestVal.ToString(), FreqPrint.Result);
                 if (parameters.Channel == "通道1")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 1, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                    
                     WriteExcelData(sheet, point, 1, PowerPrint.Test_name, "/", PowerPrint.Upper.ToString(), PowerPrint.TestVal.ToString(), PowerPrint.Result);
-                    WriteExcelData(sheet, point+15, 1, FreqPrint.Test_name, FreqPrint.Lower.ToString(), FreqPrint.Upper.ToString(), FreqPrint.TestVal.ToString(), FreqPrint.Result);
+                    WriteExcelData(sheet, point, 3, FreqPrint.Test_name, FreqPrint.Lower.ToString(), FreqPrint.Upper.ToString(), FreqPrint.TestVal.ToString(), FreqPrint.Result);
                     //tps.SetTestTableCellValue(point, 10, PowerPrint.Result, PowerPrint.TestVal);
                     //tps.SetTestTableCellValue(point, 7, FreqPrint.Result, FreqPrint.TestVal);
                 }
                 else if (parameters.Channel == "通道2")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 2, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                  
                     WriteExcelData(sheet, point, 2, PowerPrint.Test_name, "/", PowerPrint.Upper.ToString(), PowerPrint.TestVal.ToString(), PowerPrint.Result);
-                    WriteExcelData(sheet, point+15, 2, FreqPrint.Test_name, "/", FreqPrint.Upper.ToString(), FreqPrint.TestVal.ToString(), FreqPrint.Result);
+                    WriteExcelData(sheet, point, 4, FreqPrint.Test_name, "/", FreqPrint.Upper.ToString(), FreqPrint.TestVal.ToString(), FreqPrint.Result);
                     //tps.SetTestTableCellValue(point, 11, PowerPrint.Result, PowerPrint.TestVal);
                     //tps.SetTestTableCellValue(point + 15, 7, FreqPrint.Result, FreqPrint.TestVal);
                 }
@@ -281,21 +293,19 @@ namespace Tps_LQ_Transmitter.models
                     {
                         PowerFlatnessPrint.Result = "否";
                     }
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 3, "测试名称", "下限", "上限", "测试值", "通过");
-                        WriteExcelData(sheet, point - 1, 4, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                   
                     tps.TestTableAddCell(PowerSumPrint.Test_name, PowerSumPrint.Lower.ToString(), "/", PowerSumPrint.TestVal.ToString(), PowerSumPrint.Result);
                     tps.TestTableAddCell(PowerFlatnessPrint.Test_name, PowerFlatnessPrint.Lower.ToString(), "/", PowerFlatnessPrint.TestVal.ToString(), PowerFlatnessPrint.Result);
-                    WriteExcelData(sheet, point, 3, PowerSumPrint.Test_name, PowerSumPrint.Lower.ToString(), "/", PowerSumPrint.TestVal.ToString(), PowerSumPrint.Result);
-                    WriteExcelData(sheet, point, 4, PowerFlatnessPrint.Test_name, PowerFlatnessPrint.Lower.ToString(), "/", PowerFlatnessPrint.TestVal.ToString(), PowerFlatnessPrint.Result);
+                   // WriteExcelData(sheet, point, 3, PowerSumPrint.Test_name, PowerSumPrint.Lower.ToString(), "/", PowerSumPrint.TestVal.ToString(), PowerSumPrint.Result);
+                   // WriteExcelData(sheet, point, 4, PowerFlatnessPrint.Test_name, PowerFlatnessPrint.Lower.ToString(), "/", PowerFlatnessPrint.TestVal.ToString(), PowerFlatnessPrint.Result);
                     //tps.SetTestTableCellValue(point, 12, PowerSumPrint.Result, PowerSumPrint.TestVal);
                     //tps.SetTestTableCellValue(point, 13, PowerFlatnessPrint.Result,PowerFlatnessPrint.TestVal);
 
                 }
                 #endregion
             }
+            SerialClient.DUT_Transmitter_Ctrol( 00, 00);//控制掉电
+            SerialClient.SerialClose();
             SaveExcel(workbook);
             return true;
         }

+ 40 - 173
tps/TpsLabStudio/models/PowerTest-PowerMeter.cs

@@ -31,12 +31,19 @@ namespace Tps_LQ_Transmitter.models
                 ShowMessage(MsgType.Error, string.Format("仪器不齐全,{0}/{1}无法运行", parameters.Channel, parameters.Name));
                 return false;
             }
+            OpenExcel("功率及频率稳定度", out Spire.Xls.Workbook workbook, out Spire.Xls.Worksheet sheet);
+            if (sheet == null)
+            {
+                ShowMessage(MsgType.Error, "找不到" + tps.TestProject + "模板.xlsx");
+                return false;
+            }
             Thread.Sleep(1000);//让产品稳定
             TransmitterSerialPort SerialClient = new TransmitterSerialPort();
             ConfigParameter PowerPara = new ConfigParameter();
 
             MatchComPara CfigComParas = new MatchComPara();
-            CfigComParas = LoadModulationWorkBook();
+            CfigComParas = LoadComWorkBook();
+            
             if (CfigComParas == null)
             {
                 return false;
@@ -44,58 +51,50 @@ namespace Tps_LQ_Transmitter.models
 
             byte FourthByte=0x00;
             string ComPort = CfigComParas.GetComPort("1");
-            string i = CfigComParas.GetThirdByte("1");
-            i = CfigComParas.GetFourthByte("1");
-           
             byte ThridByte = Convert.ToByte(CfigComParas.GetThirdByte("1"),16);
-            byte ThridByte1 = Convert.ToByte(CfigComParas.GetFourthByte("1"),16);
+            PowerPara.StepFrequency = 0;
             PowerPara.StartFrequency = parameters.Parameters.GetParameter<double>("起始频率");
             PowerPara.StepFrequency = parameters.Parameters.GetParameter<double>("频率步进");
-            PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
+         //   PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
             PowerPara.StopFrequency = parameters.Parameters.GetParameter<double>("终止频率");
-            PowerPara.SPAN = parameters.Parameters.GetParameter<string>("扫描带宽(SPAN)");
-            PowerPara.REF = parameters.Parameters.GetParameter<string>("参考电平(REF)");
-            PowerPara.RBW = parameters.Parameters.GetParameter<string>("分辨率带宽(RBW)");
-            PowerPara.VBW = parameters.Parameters.GetParameter<string>("视频带宽(VBW)");
+            
             PowerPara.ControlDelay = parameters.Parameters.GetParameter<int>("控制延时");
             PowerPara.PowerLower = parameters.Parameters.GetParameter<double>("功率下限");
             PowerPara.PowerUpper = parameters.Parameters.GetParameter<double>("功率上限");
-            PowerPara.FreqAccuracyUpper = parameters.Parameters.GetParameter<double>("频率稳定度上限");
             PowerPara.PowerSumLower = parameters.Parameters.GetParameter<double>("两路功率总和下限");
             PowerPara.PowerFlatnessUpper = parameters.Parameters.GetParameter<double>("功率不平度上限");
-            //if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
-            //    || (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.PowerLower == 0)
-            //    || (PowerPara.PowerUpper == 0) || (PowerPara.FreqAccuracyUpper == 0) || (PowerPara.PowerSumLower == 0) || (PowerPara.PowerFlatnessUpper == 0))
-            //{
-            //    ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
-            //    return false;
-            //}
+            if ((PowerPara.StartFrequency == 0) || (PowerPara.StopFrequency == 0)  || (PowerPara.PowerLower == 0) 
+                || (PowerPara.PowerUpper == 0) ||  (PowerPara.PowerSumLower == 0) || (PowerPara.PowerFlatnessUpper == 0))
+            {
+                ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
+                return false;
+            }
             if (PowerPara.ControlDelay == 0)
             {
                 PowerPara.ControlDelay = 10;
             }
             PowerMeter.Write("设置显示单位W", "1");
-            if ((PowerPara.FrequencyNumber != 0) && (PowerPara.FrequencyNumber != 1) && (PowerPara.StepFrequency == 0))
-            {
-                PowerPara.StepFrequency = ((int)(((PowerPara.StopFrequency - PowerPara.StartFrequency) / (PowerPara.FrequencyNumber - 1)) * 100)) / 100;
-            }
-            if (PowerPara.StepFrequency != 0)
-            {
-                PowerPara.FrequencyNumber = ((int)((PowerPara.StopFrequency - PowerPara.StartFrequency) / PowerPara.StepFrequency)) + 1;
-            }
+            //if ((PowerPara.FrequencyNumber != 0) && (PowerPara.FrequencyNumber != 1) && (PowerPara.StepFrequency == 0))
+            //{
+            //    PowerPara.StepFrequency = ((int)(((PowerPara.StopFrequency - PowerPara.StartFrequency) / (PowerPara.FrequencyNumber - 1)) * 100)) / 100;
+            //}
+            //if (PowerPara.StepFrequency != 0)
+            //{
+            //    PowerPara.FrequencyNumber = ((int)((PowerPara.StopFrequency - PowerPara.StartFrequency) / PowerPara.StepFrequency)) + 1;
+            //}
             double CenterFreq;
+            PowerPara.FrequencyNumber = CfigComParas.ComParameters.Count;
 
-            for (int point = 0; ; point++)
+            for ( int point = 0;  point< PowerPara.FrequencyNumber; point++)
             {
-
-                CenterFreq = PowerPara.StartFrequency + PowerPara.StepFrequency * point;
-                if (CenterFreq > PowerPara.StopFrequency || (PowerPara.FrequencyNumber == 1 && point == 1))
+                FourthByte = Convert.ToByte(CfigComParas.GetFourthByte((point+1).ToString()), 16);
+                CenterFreq = PowerPara.StartFrequency + PowerPara.StepFrequency * FourthByte;
+                if (CenterFreq > PowerPara.StopFrequency)
                 {
                     break;
                 }
-
-                FourthByte = byte.Parse(CfigComParas.GetFourthByte((point+1).ToString()));
-                //SerialClient.DUT_Transmitter_Ctrol(ComPort, ThridByte, FourthByte);
+                
+                SerialClient.DUT_Transmitter_Ctrol(ThridByte, FourthByte);
                 Thread.Sleep(PowerPara.ControlDelay);//单位ms
                 string aa = PowerMeter.Query("Fetch测量功率", "1");
                 PowerPrint.Test_name = parameters.Channel + "-功率测试(W)-" + CenterFreq.ToString() + "MHz";
@@ -111,154 +110,22 @@ namespace Tps_LQ_Transmitter.models
                     PowerPrint.Result = "否";
                 }
                 tps.TestTableAddCell(PowerPrint.Test_name, "/", PowerPrint.Upper.ToString(), PowerPrint.TestVal.ToString(), PowerPrint.Result);
-            }
-            return true;
-        }
-
-        public MatchComPara LoadModulationWorkBook()
-        {
-            MatchComPara pars = new MatchComPara();
-            string FileName = Path.Combine(Bundle.bundle.BundleDir, "config\\串口控制.xlsx");
-            if (!File.Exists(FileName))
-            {
-                ShowMessage(MsgType.Error, "找不到串口控制.xlsx");
-                return null;
-            }
-
-            Spire.Xls.Workbook workbook = new Spire.Xls.Workbook();
-            workbook.LoadFromFile(FileName);
-
-
-            //获取第一个工作表sheet1
-            Spire.Xls.Worksheet sheet = workbook.Worksheets[0];
-            int num = 0;
-            int blankRows = 0;
-
-            while (num++ < 200)
-            {
-                //索引从1开始
-                string col1 = sheet.Range[num, 1].Value2 != null ? sheet.Range[num, 1].Value2.ToString() : "";
-                col1 = col1.Trim();
-                if (string.IsNullOrEmpty(col1))
+                if (parameters.Channel == "通道1")
                 {
-                    blankRows++;
-                    if (blankRows > 5)
-                    {
-                        //连续5个空行以上则退出
-                        break;
-                    }
-                }
-                else
-                {
-                    blankRows = 0;
-                }
-                if (col1.Equals("序号"))
-                {
-                    List<ComMatchParameter> ModulationTable = ReadParameters(sheet, num);
 
-                    foreach (var item in ModulationTable)
-                    {
-                        if (pars.ModulaParameters.ContainsKey(item.SN))
-                        {
-                            ShowMessage(MsgType.Error, string.Format("串口控制:{0} 存在同名参数:{1},无法重复添加参数", sheet.Name, item.SN));
-                            continue;
-                        }
-                        pars.ModulaParameters.Add(item.SN, item);
-                    }
+                    WriteExcelData(sheet, point, 1, PowerPrint.Test_name, "/", PowerPrint.Upper.ToString(), PowerPrint.TestVal.ToString(), PowerPrint.Result);            
                 }
-            }
-            return pars;
-        }
-        public class MatchComPara
-        {
-            public Dictionary<string, ComMatchParameter> ModulaParameters;
-            public MatchComPara()
-            {
-                ModulaParameters = new Dictionary<string, ComMatchParameter>();
-            }
-            public string GetComPort(string name)
-            {
-                if (string.IsNullOrEmpty(name))
-                    return null;
-
-                if (this.ModulaParameters.ContainsKey(name) == false)
-                    return null;
-
-                string val1 = this.ModulaParameters[name].ComPort.Trim();
-                return val1;
-            }
-            public string GetThirdByte(string name)
-            {             
-               string val1 = this.ModulaParameters[name].ThirdByte.Trim();
-                return val1;
-            }
-            public string GetFourthByte(string name)
-            {
-                string val2 = this.ModulaParameters[name].FourthByte.Trim();
-                return val2;
-            }
-        }
-        List<ComMatchParameter> ReadParameters(Spire.Xls.Worksheet sheet, int rowIndex)
-        {
-            List<ComMatchParameter> ModulationTable = new List<ComMatchParameter>();
-            string col1 = sheet.Range[rowIndex, 1].Value2 != null ? sheet.Range[rowIndex, 1].Value2.ToString() : "";
-            string col2 = sheet.Range[rowIndex, 2].Value2 != null ? sheet.Range[rowIndex, 2].Value2.ToString() : "";
-            string col3 = sheet.Range[rowIndex, 3].Value2 != null ? sheet.Range[rowIndex, 3].Value2.ToString() : "";
-            string col4 = sheet.Range[rowIndex, 4].Value2 != null ? sheet.Range[rowIndex, 4].Value2.ToString() : "";
-
-            if (!(col1 == "序号" && col2 == "串口号" && col3 == "第3个字节" && col4 == "第4个字节"))
-            {
-                ShowMessage(MsgType.Error, "'串口控制'行首标题位置和格式不正确");
-                return ModulationTable;
-            }
-
-            int num = rowIndex;
-            //默认最多30行
-            while (num++ < rowIndex + 100)
-            {
-                col1 = sheet.Range[num, 1].Value2 != null ? sheet.Range[num, 1].Value2.ToString() : "";
-                col2 = sheet.Range[num, 2].Value2 != null ? sheet.Range[num, 2].Value2.ToString() : "";
-                col3 = sheet.Range[num, 3].Value2 != null ? sheet.Range[num, 3].Value2.ToString() : "";
-                col4 = sheet.Range[num, 4].Value2 != null ? sheet.Range[num, 4].Value2.ToString() : "";
-                if (string.IsNullOrEmpty(col1) )
+                else if (parameters.Channel == "通道2")
                 {
-                    break;
-                }
-                ComMatchParameter ObjModulation = new ComMatchParameter();
-                ObjModulation.SN = col1;
-                ObjModulation.ComPort = col2;
-                ObjModulation.ThirdByte = col3;
-                ObjModulation.FourthByte = col4;
 
-                ModulationTable.Add(ObjModulation);
+                    WriteExcelData(sheet, point, 2, PowerPrint.Test_name, "/", PowerPrint.Upper.ToString(), PowerPrint.TestVal.ToString(), PowerPrint.Result);                 
+                }
             }
-            return ModulationTable;
+            SaveExcel(workbook);
+            return true;
         }
-        /// <summary>
-        /// 串口控制4个对应项
-        /// </summary>
-        public class ComMatchParameter
-        {
-
-            /// <summary>
-            /// 序号
-            /// </summary>
-            public string SN { get; set; }
-            /// <summary>
-            /// 调制指数(mf)
-            /// </summary>
-            public string ComPort { get; set; }
-            /// <summary>
-            /// 第3个字节
-            /// </summary>
-            public string ThirdByte { get; set; }
-            /// <summary>
-            /// 第4个字节
-            /// </summary>
-            public string FourthByte { get; set; }
 
-
-        }
+        
         public class ConfigParameter
         {
             /// <summary>

+ 8 - 12
tps/TpsLabStudio/models/SpuriousSuppression.cs

@@ -41,6 +41,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>("起始频率");
@@ -58,9 +59,10 @@ namespace Tps_LQ_Transmitter.models
             PowerPara.VBW = parameters.Parameters.GetParameter<string>("视频带宽(VBW)");
             PowerPara.ControlDelay = parameters.Parameters.GetParameter<int>("控制延时");
             PowerPara.SpuriousSuppressionLower = parameters.Parameters.GetParameter<double>("杂波抑制下限");
-            if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
-                || (PowerPara.LeftOffset == 0) || (PowerPara.LeftOffsetStart == 0) || (PowerPara.RightOffset == 0) || (PowerPara.RightOffsetStop == 0)
-                || (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.SmallSignalREF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || 
+            if ((PowerPara.StartFrequency == 0) ||  (PowerPara.StopFrequency == 0) || (PowerPara.LeftOffset == 0) ||
+                (PowerPara.LeftOffsetStart == 0) || (PowerPara.RightOffset == 0) || (PowerPara.RightOffsetStop == 0)
+                || (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.SmallSignalREF == null) ||
+                (PowerPara.RBW == null) || (PowerPara.VBW == null) || 
                 (PowerPara.SpuriousSuppressionLower == 0))
             {
                 ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
@@ -125,7 +127,7 @@ namespace Tps_LQ_Transmitter.models
                     PowerRigth = Power - y_value;
 
                 }
-                SpuriousSuppressionPrint.Test_name = parameters.Channel + "-杂波抑制测试-" + Freq.ToString() + "MHz";
+                SpuriousSuppressionPrint.Test_name = parameters.Channel + "-杂波抑制测试-" + CenterFreq.ToString() + "MHz";
                 SpuriousSuppressionPrint.Lower = PowerPara.SpuriousSuppressionLower;
                 SpuriousSuppressionPrint.TestVal = Math.Round(Math.Min(PowerLeft, PowerRigth), 2);
                // SpuriousSuppressionPrint.TestVal = random.Next(4000, 12000) / 100.0;//随机数
@@ -140,19 +142,13 @@ namespace Tps_LQ_Transmitter.models
                 tps.TestTableAddCell(SpuriousSuppressionPrint.Test_name, SpuriousSuppressionPrint.Lower.ToString(), "/", SpuriousSuppressionPrint.TestVal.ToString(), SpuriousSuppressionPrint.Result);
                 if (parameters.Channel == "通道1")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 1, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                    
                     //tps.SetTestTableCellValue(point, 14, SpuriousSuppressionPrint.Result,SpuriousSuppressionPrint.TestVal);    
                     WriteExcelData(sheet, point, 1, SpuriousSuppressionPrint.Test_name, SpuriousSuppressionPrint.Lower.ToString(),"/", SpuriousSuppressionPrint.TestVal.ToString(), SpuriousSuppressionPrint.Result);
                 }
                 else if (parameters.Channel == "通道2")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 2, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                  
                     //tps.SetTestTableCellValue(point + 15, 14, SpuriousSuppressionPrint.Result, SpuriousSuppressionPrint.TestVal);           
                     WriteExcelData(sheet, point, 2, SpuriousSuppressionPrint.Test_name, SpuriousSuppressionPrint.Lower.ToString(), "/", SpuriousSuppressionPrint.TestVal.ToString(), SpuriousSuppressionPrint.Result);
                 }

+ 8 - 19
tps/TpsLabStudio/models/VoltAndCurrent.cs

@@ -57,20 +57,15 @@ namespace Tps_LQ_Transmitter.models
             ConfigParameter PowerPara = new ConfigParameter();
             PowerPara.ComPort = parameters.Parameters.GetParameter<string>("串口");
             PowerPara.StartFrequency = parameters.Parameters.GetParameter<double>("起始频率");
-            PowerPara.StepFrequency = parameters.Parameters.GetParameter<double>("频率步进");
             PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
             PowerPara.StopFrequency = parameters.Parameters.GetParameter<double>("终止频率");
-            PowerPara.SPAN = parameters.Parameters.GetParameter<string>("扫描带宽(SPAN)");
-            PowerPara.REF = parameters.Parameters.GetParameter<string>("参考电平(REF)");
-            PowerPara.RBW = parameters.Parameters.GetParameter<string>("分辨率带宽(RBW)");
-            PowerPara.VBW = parameters.Parameters.GetParameter<string>("视频带宽(VBW)");
+         
             PowerPara.ControlDelay = parameters.Parameters.GetParameter<int>("控制延时");
             PowerPara.VoltLower = parameters.Parameters.GetParameter<double>("电压下限");
             PowerPara.VoltUpper= parameters.Parameters.GetParameter<double>("电压上限");
             PowerPara.CurrentLower = parameters.Parameters.GetParameter<double>("电流下限");
             PowerPara.CurrentUpper = parameters.Parameters.GetParameter<double>("电流上限");
-            if ((PowerPara.StartFrequency == 0) || ((PowerPara.StepFrequency == 0) && (PowerPara.FrequencyNumber == 0)) || (PowerPara.StopFrequency == 0)
-                || (PowerPara.SPAN == null) || (PowerPara.REF == null) || (PowerPara.RBW == null) || (PowerPara.VBW == null) || (PowerPara.VoltLower==0) 
+            if ((PowerPara.StartFrequency == 0) || (PowerPara.StopFrequency == 0)|| (PowerPara.VoltLower==0) 
                 || (PowerPara.VoltUpper == 0) ||(PowerPara.CurrentLower==0) ||(PowerPara.CurrentUpper==0))
             {
                 ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
@@ -144,24 +139,18 @@ namespace Tps_LQ_Transmitter.models
                
                 if (parameters.Channel == "通道1")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 1, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
+                   
 
-                    WriteExcelData(sheet, point, 1, CurrentDataPrint.Test_name, CurrentDataPrint.Lower.ToString(), CurrentDataPrint.Upper.ToString(), CurrentDataPrint.TestVal.ToString(), CurrentDataPrint.Result);
-                    WriteExcelData(sheet, point+ PowerPara.FrequencyNumber, 1, VoltDataPrint.Test_name, VoltDataPrint.Lower.ToString(), VoltDataPrint.Upper.ToString(), VoltDataPrint.TestVal.ToString(), VoltDataPrint.Result);
+                    WriteExcelData(sheet, point, 3, CurrentDataPrint.Test_name, CurrentDataPrint.Lower.ToString(), CurrentDataPrint.Upper.ToString(), CurrentDataPrint.TestVal.ToString(), CurrentDataPrint.Result);
+                    WriteExcelData(sheet, point, 1, VoltDataPrint.Test_name, VoltDataPrint.Lower.ToString(), VoltDataPrint.Upper.ToString(), VoltDataPrint.TestVal.ToString(), VoltDataPrint.Result);
                     //tps.SetTestTableCellValue(point, 5, VoltDataPrint.Result, VoltDataPrint.TestVal);
                     //tps.SetTestTableCellValue(point, 6, CurrentDataPrint.Result, CurrentDataPrint.TestVal);
                 }
                 else if (parameters.Channel == "通道2")
                 {
-                    if (point == 0)
-                    {
-                        WriteExcelData(sheet, point - 1, 2, "测试名称", "下限", "上限", "测试值", "通过");
-                    }
-                    WriteExcelData(sheet, point, 2, CurrentDataPrint.Test_name, CurrentDataPrint.Lower.ToString(), CurrentDataPrint.Upper.ToString(), CurrentDataPrint.TestVal.ToString(), CurrentDataPrint.Result);
-                    WriteExcelData(sheet, point+ PowerPara.FrequencyNumber, 2, VoltDataPrint.Test_name, VoltDataPrint.Lower.ToString(), VoltDataPrint.Upper.ToString(), VoltDataPrint.TestVal.ToString(), VoltDataPrint.Result);
+                    
+                    WriteExcelData(sheet, point, 4, CurrentDataPrint.Test_name, CurrentDataPrint.Lower.ToString(), CurrentDataPrint.Upper.ToString(), CurrentDataPrint.TestVal.ToString(), CurrentDataPrint.Result);
+                    WriteExcelData(sheet, point, 2, VoltDataPrint.Test_name, VoltDataPrint.Lower.ToString(), VoltDataPrint.Upper.ToString(), VoltDataPrint.TestVal.ToString(), VoltDataPrint.Result);
                     //tps.SetTestTableCellValue(point + 15, 5, VoltDataPrint.Result, VoltDataPrint.TestVal);
                     //tps.SetTestTableCellValue(point + 15, 6, CurrentDataPrint.Result, CurrentDataPrint.TestVal);
                 }