123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Tps_LQ_Transmitter.Common
- {
- /// <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 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;
- }
- }
- public class SerialConfig
- {
- #region 串口配置表
- /// <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( "找不到串口控制.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( string.Format("串口控制:{0} 存在同名参数:{1},无法重复添加参数", sheet.Name, item.SN));
- continue;
- }
- pars.ComParameters.Add(item.SN, item);
- }
- }
- }
- return pars;
- }
-
- protected void ShowMessage(string msg)
- {
- MessageBox.Show(msg);
- }
- 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( "'串口控制'行首标题位置和格式不正确");
- 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;
- }
-
- #endregion
- }
- }
|