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
{
///
/// 串口控制4个对应项
///
public class ComMatchParameter
{
///
/// 序号
///
public string SN { get; set; }
///
/// 串口号
///
public string ComPort { get; set; }
///
/// 第3个字节
///
public string ThirdByte { get; set; }
///
/// 第4个字节
///
public string FourthByte { get; set; }
///
/// 频点
///
public string freqpoint { get; set; }
}
public class MatchComPara
{
public Dictionary ComParameters;
public MatchComPara()
{
ComParameters = new Dictionary();
}
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 串口配置表
///
/// 获取串口配置表
///
///
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 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 ReadParameters(Spire.Xls.Worksheet sheet, int rowIndex)
{
List ModulationTable = new List();
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
}
}