|
@@ -1,7 +1,9 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.IO;
|
|
|
using System.Linq;
|
|
|
using System.Text;
|
|
|
+using System.Threading;
|
|
|
using System.Threading.Tasks;
|
|
|
using Tps_LQ_Transmitter.com;
|
|
|
|
|
@@ -23,15 +25,30 @@ namespace Tps_LQ_Transmitter.models
|
|
|
//获取仪器
|
|
|
DataType PowerPrint = new DataType();//功率(w)
|
|
|
|
|
|
- var PowerMeter = this.tps.GetDeviceModel("E4418A");
|
|
|
+ var PowerMeter = this.tps.GetDeviceModel("GPIB0::13::INSTR");
|
|
|
if (PowerMeter == null)
|
|
|
{
|
|
|
ShowMessage(MsgType.Error, string.Format("仪器不齐全,{0}/{1}无法运行", parameters.Channel, parameters.Name));
|
|
|
return false;
|
|
|
}
|
|
|
+ Thread.Sleep(1000);//让产品稳定
|
|
|
+ TransmitterSerialPort SerialClient = new TransmitterSerialPort();
|
|
|
ConfigParameter PowerPara = new ConfigParameter();
|
|
|
- PowerPara.ComPort = parameters.Parameters.GetParameter<string>("串口");
|
|
|
- PowerPara.OutLoss = parameters.Parameters.GetParameter<double>("输出损耗");
|
|
|
+
|
|
|
+ MatchComPara CfigComParas = new MatchComPara();
|
|
|
+ CfigComParas = LoadModulationWorkBook();
|
|
|
+ if (CfigComParas == null)
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ 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.StartFrequency = parameters.Parameters.GetParameter<double>("起始频率");
|
|
|
PowerPara.StepFrequency = parameters.Parameters.GetParameter<double>("频率步进");
|
|
|
PowerPara.FrequencyNumber = parameters.Parameters.GetParameter<int>("频点数量");
|
|
@@ -46,13 +63,13 @@ 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))
|
|
|
- {
|
|
|
- ShowMessage(MsgType.Error, string.Format("配置文件中频率参数为空,{0}/{1}无法运行", parameters.Channel, parameters.Name));
|
|
|
- return false;
|
|
|
- }
|
|
|
+ //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.ControlDelay == 0)
|
|
|
{
|
|
|
PowerPara.ControlDelay = 10;
|
|
@@ -76,6 +93,10 @@ namespace Tps_LQ_Transmitter.models
|
|
|
{
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+ FourthByte = byte.Parse(CfigComParas.GetFourthByte((point+1).ToString()));
|
|
|
+ //SerialClient.DUT_Transmitter_Ctrol(ComPort, ThridByte, FourthByte);
|
|
|
+ Thread.Sleep(PowerPara.ControlDelay);//单位ms
|
|
|
string aa = PowerMeter.Query("Fetch测量功率", "1");
|
|
|
PowerPrint.Test_name = parameters.Channel + "-功率测试(W)-" + CenterFreq.ToString() + "MHz";
|
|
|
PowerPrint.Lower = PowerPara.PowerLower;
|
|
@@ -93,12 +114,153 @@ namespace Tps_LQ_Transmitter.models
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
- public class ConfigParameter
|
|
|
+
|
|
|
+ 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))
|
|
|
+ {
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ 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) )
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ ComMatchParameter ObjModulation = new ComMatchParameter();
|
|
|
+ ObjModulation.SN = col1;
|
|
|
+ ObjModulation.ComPort = col2;
|
|
|
+ ObjModulation.ThirdByte = col3;
|
|
|
+ ObjModulation.FourthByte = col4;
|
|
|
+
|
|
|
+ ModulationTable.Add(ObjModulation);
|
|
|
+ }
|
|
|
+ return ModulationTable;
|
|
|
+ }
|
|
|
+ /// <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 ComPort { set; get; }
|
|
|
+ public string FourthByte { get; set; }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ public class ConfigParameter
|
|
|
+ {
|
|
|
/// <summary>
|
|
|
/// 输出损耗
|
|
|
/// </summary>
|