123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.IO;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using Tps_LQ_Transmitter.com;
- namespace Tps_LQ_Transmitter.models
- {
- /// <summary>
- /// 测试模板,对测试模板的基础类别
- /// </summary>
- public class BaseModel
- {
- /// <summary>
- /// 测试模板名称,测试指标配置表中的模板名称源自这个参数
- /// </summary>
- public string TemplateName { get; protected set; }
- public bool IsRuning { get; set; }
- public bool IsPassed { get; protected set; }
- public DateTime FinishedTime { get; protected set; }
- /// <summary>
- /// 这个测试项对应的显示界面,也可能是一个界面有多个测试项共用,取决于顶层的控制
- /// </summary>
- public UserControl UC { get; set; }
- /// <summary>
- /// 主程序
- /// </summary>
- public MainTps tps { get; set; }
- public virtual bool Run(TestNode parameters)
- {
- return false;
- }
- /// <summary>
- /// 开始测试
- /// </summary>
- /// <returns></returns>
- public virtual bool Start(TestNode parameters)
- {
- IsRuning = true;
- IsPassed = false;
- bool ok = Run(parameters);
- IsRuning = false;
- FinishedTime = DateTime.Now;
- return ok;
- // return true;
- }
- /// <summary>
- /// 停止测试
- /// </summary>
- /// <returns></returns>
- public virtual bool Stop()
- {
- IsRuning = false;
- return true;
- }
- public event DltShowMsg MessageEvent;
- protected void ShowMessage(MsgType msgType, string msg)
- {
- if (MessageEvent != null)
- {
- MessageEvent(msgType, msg);
- }
- }
- public void OpenExcel(string sheetname, out Spire.Xls.Workbook workbook, out Spire.Xls.Worksheet sheet)
- {
- Spire.Xls.Worksheet sheet1 = null;
- 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))
- {
- System.IO.Directory.CreateDirectory(subPath);
- }
- workbook = new Spire.Xls.Workbook();
- string FileName = subPath + tps.Serial + ".xlsx";
- if (File.Exists(FileName))
- {
- workbook.LoadFromFile(FileName);
- sheet1 = workbook.Worksheets[sheetname];
-
- }
- else if (File.Exists(ModelFile))
- {
- workbook.LoadFromFile(ModelFile);
- sheet1 = workbook.Worksheets["测试信息"];
- sheet1.Range["A2"].Value2 = tps.Serial;//序列号
- sheet1.Range["B2"].Value2 = tps.Tester;//检验员
- sheet1.Range["C2"].Value2 = DateTime.Now.Date.ToString();//日期
- sheet1.Range["D2"].Value2 = tps.Temperature;//温度
- sheet1.Range["E2"].Value2 = tps.Humidity;//湿度
- sheet1 = workbook.Worksheets[sheetname];
-
- }
-
- if (!File.Exists(ModelFile))
- {
- sheet1 = null;
- }
- sheet = sheet1;
- }
- public void WriteExcelData(Spire.Xls.Worksheet sheet, int row, int channel, string name, string lower, string upper, string val, string result)
- {
- int column = (channel - 1) * 6;
- sheet.Range[row + 2, 1 + column].Value2 = name;
- sheet.Range[row + 2, 2 + column].Value2 = lower;
- sheet.Range[row + 2, 3 + column].Value2 = upper;
- sheet.Range[row + 2, 4 + column].Value = val;
- sheet.Range[row + 2, 5 + column].Value2 = result;
- }
- public void SaveExcel(Spire.Xls.Workbook workbook)
- {
- 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
- {
- /// <summary>
- /// 测试名称
- /// </summary>
- public string Test_name { set; get; }
- /// <summary>
- /// 指标下限
- /// </summary>
- public double Lower { set; get; }
- /// <summary>
- /// 指标上限
- /// </summary>
- public double Upper { set; get; }
- /// <summary>
- /// 测试值
- /// </summary>
- public double TestVal { set; get; }
- /// <summary>
- /// 判断结果
- /// </summary>
- public string Result { set; get; }
- }
- }
- }
|