使用简介
实际使用界面
配置表管理界面
进入
csharp
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Sunny.UI;
using System.Xml;
using System.IO;
csharp
public ModuleGrid()
{
InitializeComponent();
uipanelMain.AutoScroll = true;//防止内容过多 当显示不下的时候 可以有滚轮
//DisplayData();//这个在这里使用不知道为什么就是报错 显示未将对象设置引用到对象实例 我直接放最开始调用
//MessageBox.Show("kai ");
}
csharp
public static ModuleGrid modgrid;
private void uiButton1_Click(object sender, EventArgs e)
{
modgrid = new ModuleGrid();
modgrid.Show();
ModuleGrid.DisplayData();//这个函数的作用就是新增我们需要的框的控件
}
csharp
private static int width = 360;
private static int height = 254;
private static List<GridContent> list;
public static string path = Directory.GetCurrentDirectory()+ "\\ParameterSet\\grid.xml";
public static void DisplayData()
{
try
{
list = new List<GridContent>();
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList nodeList = doc.SelectNodes("/person/list");//xPath相关手册,找节点person的list
int index = 1;
foreach (XmlNode node in nodeList)
{
string no = node.Attributes["no"].Value;
string modeName = node.SelectSingleNode("modeName").InnerText;
//MessageBox.Show("modeName:" + modeName);
GridContent grid = new GridContent();
grid.No = no;
list.Add(grid);
addUIItem(index, modeName);//UI增加
index++;
}
}
catch (Exception ex)
{
log.SaveLog(@"报告模板异常:" + ex.Message);
}
}
csharp
class GridContent
{
private string modeName;
private string no;
public string ModeName
{
get
{
return modeName;
}
set
{
modeName = value;
}
}
public string No
{
get
{
return no;
}
set
{
no = value;
}
}
}
csharp
private static void addUIItem(int index, string modeName)
{
//1724 -50 - 4*width = 78
UIPanel paneln = new UIPanel();
int curIndex = index / 4;
int mod = index % 4;
int pointX = (width + 65) * (mod) + 25;
int pointY = curIndex * (height) + (curIndex + 1) * 25;
paneln.Location = new Point(pointX, pointY);
paneln.Size = new Size(width, height);
paneln.FillColor = Color.White;
paneln.RectColor = ColorTranslator.FromHtml("#D6D6D6");
UILabel label = new UILabel();
label.AutoSize = false;
label.Text = modeName;
label.Location = new Point(40, 20);
label.Size = new Size(300, 90);
label.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
label.TextAlign = ContentAlignment.MiddleCenter;
UIButton btnDel = new UIButton();
btnDel.Size = new Size(100, 50);
btnDel.Location = new Point(50, 170);
btnDel.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
btnDel.FillColor = Color.White;
btnDel.RectColor = ColorTranslator.FromHtml("#D6D6D6");
btnDel.ForeColor = ColorTranslator.FromHtml("#333333");
btnDel.Text = "删除";
btnDel.Tag = list[index - 1].No;
btnDel.Click += new System.EventHandler(btnDel_Click);
UIButton btnEdit = new UIButton();
btnEdit.Size = new Size(100, 50);
btnEdit.Location = new Point(220, 170);
btnEdit.Font = new System.Drawing.Font("微软雅黑", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
btnEdit.FillColor = Color.White;
btnEdit.RectColor = ColorTranslator.FromHtml("#D6D6D6");
btnEdit.ForeColor = ColorTranslator.FromHtml("#333333");
btnEdit.Text = "编辑";
btnEdit.Tag = list[index - 1].No;
btnEdit.Click += new EventHandler(btnEdit_Click);
paneln.Controls.Add(label);
paneln.Controls.Add(btnDel);
paneln.Controls.Add(btnEdit);
Form1.modgrid.uipanelMain.Controls.Add(paneln);
}
确定和返回按键
csharp
this.Close();
新增项的按键
在进入的addUIItem函数里面添加的
编辑
csharp
private static void btnEdit_Click(object sender, EventArgs e)
{
UIButton btn = (UIButton)sender;
string no = btn.Tag.ToString();
// new AddModule("edit", no, uipanelMain).Show();
AddModule frm = new AddModule("edit", no, Form1.modgrid.uipanelMain);
frm.Show();
Form1.modgrid.Hide();//如果是关闭 那么下次是无法show的
}
删除
csharp
private static void btnDel_Click(object sender, EventArgs e)
{
UIButton btn = (UIButton)sender;
string no = btn.Tag.ToString();
delUI();
delGridItem(no);
//this.Invalidate();
//this.Refresh();
}
public static void delUI()
{
int index = 0;
for (int i = list.Count() - 1; i >= 0; i--)
{
index = (i + 1);
Form1.modgrid.uipanelMain.Controls.RemoveAt(index);
}
}
private static void delGridItem(string no)
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlElement root = doc.DocumentElement;
XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
foreach (XmlNode xmlNode in xmlNodeList)
{
xmlNode.ParentNode.RemoveChild(xmlNode);
}
doc.Save(path);
DisplayData();
}
新增一个
csharp
private void uiPanel3_Click(object sender, EventArgs e)
{
OpenAddModule();
}
private void pictureBox2_Click(object sender, EventArgs e)
{
OpenAddModule();
}
private void uiLabel3_Click(object sender, EventArgs e)
{
OpenAddModule();
}
public static void OpenAddModule()
{
AddModule frm = new AddModule("add", "", Form1.modgrid.uipanelMain);
frm.Show();
Form1.modgrid.Hide();//如果是关闭 那么下次是无法show的
}
页面传递讲解
csharp
public static void OpenAddModule()
{
AddModule frm = new AddModule("add", "", Form1.modgrid.uipanelMain);
frm.Show();
Form1.modgrid.Hide();//如果是关闭 那么下次是无法show的
}
要打开的界面 给他一个带参数的构造函数就可以了
csharp
string no;
UIPanel uipanel;
string type;
public static string path = Directory.GetCurrentDirectory() + "\\ParameterSet\\grid.xml";
public AddModule(string type, string no, UIPanel uipanel)//这三个参数都是自己新加的 不然是没有参数的 用于上一页面传入参数进来
{
InitializeComponent();
this.no = no;
this.type = type;
this.uipanel = uipanel;
if (type.Equals("add"))
{
labelTItle.Text = "新增配置表";
}
else if (type.Equals("edit"))
{
try
{
labelTItle.Text = "编辑配置表";
//赋值
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
XmlNode node = xmlNodeList[0];
tmodelName.Text = node.SelectSingleNode("modeName").InnerText;
clientTextBox.Text = node.SelectSingleNode("client").InnerText;
hardwareTextBox.Text = node.SelectSingleNode("hardware").InnerText;
softwareTextBox.Text = node.SelectSingleNode("software").InnerText;
tongshuTextBox.Text = node.SelectSingleNode("tongshu").InnerText;
kongshuTextBox.Text = node.SelectSingleNode("kongshu").InnerText;
TMCuiTextBox.Text = node.SelectSingleNode("tmc").InnerText;
typeuiTextBox.Text = node.SelectSingleNode("type").InnerText;
order1TextBox.Text = node.SelectSingleNode("order1").InnerText;
order2TextBox.Text = node.SelectSingleNode("order2").InnerText;
order3TextBox.Text = node.SelectSingleNode("order3").InnerText;
order4TextBox.Text = node.SelectSingleNode("order4").InnerText;
order5TextBox.Text = node.SelectSingleNode("order5").InnerText;
order6TextBox.Text = node.SelectSingleNode("order6").InnerText;
order7TextBox.Text = node.SelectSingleNode("order7").InnerText;
order8TextBox.Text = node.SelectSingleNode("order8").InnerText;
order9TextBox.Text = node.SelectSingleNode("order9").InnerText;
order10TextBox.Text = node.SelectSingleNode("order10").InnerText;
order11TextBox.Text = node.SelectSingleNode("order11").InnerText;
order12TextBox.Text = node.SelectSingleNode("order12").InnerText;
order13TextBox.Text = node.SelectSingleNode("order13").InnerText;
}
catch (Exception ex)
{
log.SaveLog(ex.ToString());
throw;
}
}
}
新增页面
csharp
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using Sunny.UI;
构造函数
可以进行参数的传递
csharp
string no;
UIPanel uipanel;
string type;
public static string path = Directory.GetCurrentDirectory() + "\\ParameterSet\\grid.xml";
public AddModule(string type, string no, UIPanel uipanel)//这三个参数都是自己新加的 不然是没有参数的 用于上一页面传入参数进来
{
InitializeComponent();
this.no = no;
this.type = type;
this.uipanel = uipanel;
if (type.Equals("add"))
{
labelTItle.Text = "新增配置表";
}
else if (type.Equals("edit"))
{
try
{
labelTItle.Text = "编辑配置表";
//赋值
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
XmlNode node = xmlNodeList[0];
tmodelName.Text = node.SelectSingleNode("modeName").InnerText;
clientTextBox.Text = node.SelectSingleNode("client").InnerText;
hardwareTextBox.Text = node.SelectSingleNode("hardware").InnerText;
softwareTextBox.Text = node.SelectSingleNode("software").InnerText;
tongshuTextBox.Text = node.SelectSingleNode("tongshu").InnerText;
kongshuTextBox.Text = node.SelectSingleNode("kongshu").InnerText;
TMCuiTextBox.Text = node.SelectSingleNode("tmc").InnerText;
typeuiTextBox.Text = node.SelectSingleNode("type").InnerText;
order1TextBox.Text = node.SelectSingleNode("order1").InnerText;
order2TextBox.Text = node.SelectSingleNode("order2").InnerText;
order3TextBox.Text = node.SelectSingleNode("order3").InnerText;
order4TextBox.Text = node.SelectSingleNode("order4").InnerText;
order5TextBox.Text = node.SelectSingleNode("order5").InnerText;
order6TextBox.Text = node.SelectSingleNode("order6").InnerText;
order7TextBox.Text = node.SelectSingleNode("order7").InnerText;
order8TextBox.Text = node.SelectSingleNode("order8").InnerText;
order9TextBox.Text = node.SelectSingleNode("order9").InnerText;
order10TextBox.Text = node.SelectSingleNode("order10").InnerText;
order11TextBox.Text = node.SelectSingleNode("order11").InnerText;
order12TextBox.Text = node.SelectSingleNode("order12").InnerText;
order13TextBox.Text = node.SelectSingleNode("order13").InnerText;
}
catch (Exception ex)
{
log.SaveLog(ex.ToString());
throw;
}
}
}
load函数
进行一次自动的指令到指令名称的转换。如果该指令不等于0的话就进行一次转换
csharp
private void AddModule_Load(object sender, EventArgs e)
{
try
{
if (order1TextBox.Text != "0")
{
order1uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*'))));
//log.SaveLog("指令转换1字符串:" + order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')));
//for (int i = 0; i < 5; i++)
//{
// log.SaveLog("转字节{i}:" + Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')))[i]);
//}
}
if (order2TextBox.Text != "0")
{
order2uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order2TextBox.Text.Substring(0, order2TextBox.Text.IndexOf('*'))));
}
if (order3TextBox.Text != "0")
{
order3uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order3TextBox.Text.Substring(0, order3TextBox.Text.IndexOf('*'))));
}
if (order4TextBox.Text != "0")
{
order4uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order4TextBox.Text.Substring(0, order4TextBox.Text.IndexOf('*'))));
}
if (order5TextBox.Text != "0")
{
order5uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order5TextBox.Text.Substring(0, order5TextBox.Text.IndexOf('*'))));
}
if (order6TextBox.Text != "0")
{
order6uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order6TextBox.Text.Substring(0, order6TextBox.Text.IndexOf('*'))));
}
if (order7TextBox.Text != "0")
{
order7uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order7TextBox.Text.Substring(0, order7TextBox.Text.IndexOf('*'))));
}
if (order8TextBox.Text != "0")
{
order8uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order8TextBox.Text.Substring(0, order8TextBox.Text.IndexOf('*'))));
}
if (order9TextBox.Text != "0")
{
order9uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order9TextBox.Text.Substring(0, order9TextBox.Text.IndexOf('*'))));
}
if (order10TextBox.Text != "0")
{
order10uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order10TextBox.Text.Substring(0, order10TextBox.Text.IndexOf('*'))));
}
if (order11TextBox.Text != "0")
{
order11uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order11TextBox.Text.Substring(0, order11TextBox.Text.IndexOf('*'))));
}
if (order12TextBox.Text != "0")
{
order12uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order12TextBox.Text.Substring(0, order12TextBox.Text.IndexOf('*'))));
}
if (order13TextBox.Text != "0")
{
order13uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order13TextBox.Text.Substring(0, order13TextBox.Text.IndexOf('*'))));
}
}
catch (Exception ex)
{
log.SaveLog("配置表转换报错:" + ex.Message);
}
}
字符串转字节
csharp
public static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");//去掉空格
if ((hexString.Length % 2) != 0)
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / 2];//字符串两个就是一个十六进制数
for (int i = 0; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
return returnBytes;
}
根据第二个字节进行对应指令的查找
csharp
public static string judgeFun(byte[] a)
{
string orderName = "0";
if (a[2] == 1){orderName = "恢复出厂设置";}
else if (a[2] == 2) { orderName = "设置本机地址"; }
else if (a[2] == 3) { orderName = "读取本机地址"; }
else if (a[2] == 4) { orderName = "设置波特率"; }
else if (a[2] == 5) { orderName = "复位"; }
else if (a[2] == 6) { orderName = "切换通道"; }
else if (a[2] == 7) { orderName = "读当前通道"; }
else if (a[2] == 8) { orderName = "读版本"; }
else if (a[2] == 9) { orderName = "设置CRC校验"; }
else if (a[2] == 0xA) { orderName = "查询最大通道"; }
else if (a[2] == 0xB) { orderName = "设置最大通道"; }
else if (a[2] == 0xC) { orderName = "查正向补偿"; }
else if (a[2] == 0xE) { orderName = "查反向补偿"; }
else if (a[2] == 10) { orderName = "查通讯方式"; }
else if (a[2] == 11) { orderName = "设置通讯方式";}
else if (a[2] == 12) {orderName = "查电机最小速度";}
else if (a[2] == 13) {orderName = "设置电机最小速度";}
else if (a[2] == 14) {orderName = "查电机最大速度";}
else if (a[2] == 15) {orderName = "设置电机最大速度";}
else if (a[2] == 16) {orderName = "查丢步报错阈值";}
else if (a[2] == 17) {orderName = "设置丢步报错阈值";}
else if (a[2] == 80) {orderName = "常规报错";}
else if (a[2] == 81) {orderName = "电机正向失步";}
else if (a[2] == 82) {orderName = "电机反向失步";}
else if (a[2] == 83) {orderName = "异常断电未归零";}
else if (a[2] == 18) {orderName = "查磁场强度";}
else if (a[2] == 19) {orderName = "磁编校准";}
return orderName;
}
确定按钮
csharp
private void uiButton1_Click(object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
if (type.Equals("add"))
{
log.SaveLog(@"新增模板");
DateTime dt = new DateTime();
dt = System.DateTime.Now;
//此处的大小写必须完全按照如下才能输出长日期长时间,时间为24小时制式,hh:mm:ss格式输出12小时制式时间
string no = dt.ToString("yyyyMMddHHmmss");
if (!File.Exists(path))
{
//新建一个xml文档
//1、实例化一个XmlDocument
XmlDeclaration xnode = doc.CreateXmlDeclaration("1.0", "UTF-8", "");
doc.AppendChild(xnode);
XmlElement root = doc.CreateElement("person");
doc.AppendChild(root);
XmlElement newElement = doc.CreateElement("list");
newElement.SetAttribute("no", no);//添加属性
root.AppendChild(newElement);
XmlElement modeName = doc.CreateElement("modeName");
modeName.InnerText = tmodelName.Text;
newElement.AppendChild(modeName);
XmlElement client = doc.CreateElement("client");
client.InnerText = clientTextBox.Text;
newElement.AppendChild(client);
XmlElement hardware = doc.CreateElement("hardware");
hardware.InnerText = hardwareTextBox.Text;
newElement.AppendChild(hardware);
XmlElement software = doc.CreateElement("software");
software.InnerText = softwareTextBox.Text;
newElement.AppendChild(software);
XmlElement tongshu = doc.CreateElement("tongshu");
tongshu.InnerText = tongshuTextBox.Text;
newElement.AppendChild(tongshu);
XmlElement kongshu = doc.CreateElement("kongshu");
kongshu.InnerText = kongshuTextBox.Text;
newElement.AppendChild(kongshu);
XmlElement TMC = doc.CreateElement("tmc");
TMC.InnerText = tongshuTextBox.Text;
newElement.AppendChild(TMC);
XmlElement type = doc.CreateElement("type");
type.InnerText = kongshuTextBox.Text;
newElement.AppendChild(type);
XmlElement order1 = doc.CreateElement("order1");
order1.InnerText = order1TextBox.Text;
newElement.AppendChild(order1);
XmlElement order2 = doc.CreateElement("order2");
order2.InnerText = order2TextBox.Text;
newElement.AppendChild(order2);
XmlElement order3 = doc.CreateElement("order3");
order3.InnerText = order3TextBox.Text;
newElement.AppendChild(order3);
XmlElement order4 = doc.CreateElement("order4");
order4.InnerText = order4TextBox.Text;
newElement.AppendChild(order4);
XmlElement order5 = doc.CreateElement("order5");
order5.InnerText = order5TextBox.Text;
newElement.AppendChild(order5);
XmlElement order6= doc.CreateElement("order6");
order6.InnerText = order6TextBox.Text;
newElement.AppendChild(order6);
XmlElement order7 = doc.CreateElement("order7");
order7.InnerText = order7TextBox.Text;
newElement.AppendChild(order7);
XmlElement order8 = doc.CreateElement("order8");
order8.InnerText = order8TextBox.Text;
newElement.AppendChild(order8);
XmlElement order9 = doc.CreateElement("order9");
order9.InnerText = order9TextBox.Text;
newElement.AppendChild(order9);
XmlElement order10 = doc.CreateElement("order10");
order10.InnerText = order10TextBox.Text;
newElement.AppendChild(order10);
XmlElement order11 = doc.CreateElement("order11");
order11.InnerText = order11TextBox.Text;
newElement.AppendChild(order11);
XmlElement order12 = doc.CreateElement("order12");
order12.InnerText = order12TextBox.Text;
newElement.AppendChild(order12);
XmlElement order13 = doc.CreateElement("order13");
order13.InnerText = order13TextBox.Text;
newElement.AppendChild(order13);
root.AppendChild(newElement);
doc.Save(path);//注意这个的save路径是需要加上 .xml的
this.Close();
Form1.modgrid.Show();
}
else
{
doc.Load(path);
XmlElement root = doc.DocumentElement;
XmlElement newElement = doc.CreateElement("list");
newElement.SetAttribute("no", no);//添加属性
root.AppendChild(newElement);
XmlElement modeName = doc.CreateElement("modeName");
modeName.InnerText = tmodelName.Text;
newElement.AppendChild(modeName);
XmlElement client = doc.CreateElement("client");
client.InnerText = clientTextBox.Text;
newElement.AppendChild(client);
XmlElement hardware = doc.CreateElement("hardware");
hardware.InnerText = hardwareTextBox.Text;
newElement.AppendChild(hardware);
XmlElement software = doc.CreateElement("software");
software.InnerText = softwareTextBox.Text;
newElement.AppendChild(software);
XmlElement tongshu = doc.CreateElement("tongshu");
tongshu.InnerText = tongshuTextBox.Text;
newElement.AppendChild(tongshu);
XmlElement kongshu = doc.CreateElement("kongshu");
kongshu.InnerText = kongshuTextBox.Text;
newElement.AppendChild(kongshu);
XmlElement TMC = doc.CreateElement("tmc");
TMC.InnerText = tongshuTextBox.Text;
newElement.AppendChild(TMC);
XmlElement type = doc.CreateElement("type");
type.InnerText = kongshuTextBox.Text;
newElement.AppendChild(type);
XmlElement order1 = doc.CreateElement("order1");
order1.InnerText = order1TextBox.Text;
newElement.AppendChild(order1);
XmlElement order2 = doc.CreateElement("order2");
order2.InnerText = order2TextBox.Text;
newElement.AppendChild(order2);
XmlElement order3 = doc.CreateElement("order3");
order3.InnerText = order3TextBox.Text;
newElement.AppendChild(order3);
XmlElement order4 = doc.CreateElement("order4");
order4.InnerText = order4TextBox.Text;
newElement.AppendChild(order4);
XmlElement order5 = doc.CreateElement("order5");
order5.InnerText = order5TextBox.Text;
newElement.AppendChild(order5);
XmlElement order6 = doc.CreateElement("order6");
order6.InnerText = order6TextBox.Text;
newElement.AppendChild(order6);
XmlElement order7 = doc.CreateElement("order7");
order7.InnerText = order7TextBox.Text;
newElement.AppendChild(order7);
XmlElement order8 = doc.CreateElement("order8");
order8.InnerText = order8TextBox.Text;
newElement.AppendChild(order8);
XmlElement order9 = doc.CreateElement("order9");
order9.InnerText = order9TextBox.Text;
newElement.AppendChild(order9);
XmlElement order10 = doc.CreateElement("order10");
order10.InnerText = order10TextBox.Text;
newElement.AppendChild(order10);
XmlElement order11 = doc.CreateElement("order11");
order11.InnerText = order11TextBox.Text;
newElement.AppendChild(order11);
XmlElement order12 = doc.CreateElement("order12");
order12.InnerText = order12TextBox.Text;
newElement.AppendChild(order12);
XmlElement order13 = doc.CreateElement("order13");
order13.InnerText = order13TextBox.Text;
newElement.AppendChild(order13);
root.AppendChild(newElement);
this.Close();
Form1.modgrid.Show();
}
}
else if (type.Equals("edit"))
{
log.SaveLog(@"编辑模板");
doc.Load(path);
XmlNodeList xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
xmlNodeList[0].SelectSingleNode("modeName").InnerText = tmodelName.Text;
xmlNodeList[0].SelectSingleNode("client").InnerText = clientTextBox.Text;
xmlNodeList[0].SelectSingleNode("hardware").InnerText = hardwareTextBox.Text;
xmlNodeList[0].SelectSingleNode("software").InnerText = softwareTextBox.Text;
xmlNodeList[0].SelectSingleNode("tongshu").InnerText = tongshuTextBox.Text;
xmlNodeList[0].SelectSingleNode("kongshu").InnerText = kongshuTextBox.Text;
xmlNodeList[0].SelectSingleNode("tmc").InnerText = TMCuiTextBox.Text;
xmlNodeList[0].SelectSingleNode("type").InnerText = typeuiTextBox.Text;
xmlNodeList[0].SelectSingleNode("order1").InnerText = order1TextBox.Text;
xmlNodeList[0].SelectSingleNode("order2").InnerText = order2TextBox.Text;
xmlNodeList[0].SelectSingleNode("order3").InnerText = order3TextBox.Text;
xmlNodeList[0].SelectSingleNode("order4").InnerText = order4TextBox.Text;
xmlNodeList[0].SelectSingleNode("order5").InnerText = order5TextBox.Text;
xmlNodeList[0].SelectSingleNode("order6").InnerText = order6TextBox.Text;
xmlNodeList[0].SelectSingleNode("order7").InnerText = order7TextBox.Text;
xmlNodeList[0].SelectSingleNode("order8").InnerText = order8TextBox.Text;
xmlNodeList[0].SelectSingleNode("order9").InnerText = order9TextBox.Text;
xmlNodeList[0].SelectSingleNode("order10").InnerText = order10TextBox.Text;
xmlNodeList[0].SelectSingleNode("order11").InnerText = order11TextBox.Text;
xmlNodeList[0].SelectSingleNode("order12").InnerText = order12TextBox.Text;
xmlNodeList[0].SelectSingleNode("order13").InnerText = order13TextBox.Text;
}
doc.Save(path);
ModuleGrid.delUI();
ModuleGrid.DisplayData();
this.Close();
Form1.modgrid.Show();
}
返回
csharp
private void uiButton2_Click(object sender, EventArgs e)
{
this.Close();
Form1.modgrid.Show();
}
转换
csharp
private void uiButton3_Click(object sender, EventArgs e)
{
try
{
if (order1TextBox.Text!="0")
{
order1uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*'))));
//log.SaveLog("指令转换1字符串:" + order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')));
//for (int i = 0; i < 5; i++)
//{
// log.SaveLog("转字节{i}:" + Form1.strToToHexByte(order1TextBox.Text.Substring(0, order1TextBox.Text.IndexOf('*')))[i]);
//}
}
if (order2TextBox.Text != "0")
{
order2uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order2TextBox.Text.Substring(0, order2TextBox.Text.IndexOf('*'))));
}
if (order3TextBox.Text != "0")
{
order3uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order3TextBox.Text.Substring(0, order3TextBox.Text.IndexOf('*'))));
}
if (order4TextBox.Text != "0")
{
order4uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order4TextBox.Text.Substring(0, order4TextBox.Text.IndexOf('*'))));
}
if (order5TextBox.Text != "0")
{
order5uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order5TextBox.Text.Substring(0, order5TextBox.Text.IndexOf('*'))));
}
if (order6TextBox.Text != "0")
{
order6uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order6TextBox.Text.Substring(0, order6TextBox.Text.IndexOf('*'))));
}
if (order7TextBox.Text != "0")
{
order7uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order7TextBox.Text.Substring(0, order7TextBox.Text.IndexOf('*'))));
}
if (order8TextBox.Text != "0")
{
order8uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order8TextBox.Text.Substring(0, order8TextBox.Text.IndexOf('*'))));
}
if (order9TextBox.Text != "0")
{
order9uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order9TextBox.Text.Substring(0, order9TextBox.Text.IndexOf('*'))));
}
if (order10TextBox.Text != "0")
{
order10uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order10TextBox.Text.Substring(0, order10TextBox.Text.IndexOf('*'))));
}
if (order11TextBox.Text != "0")
{
order11uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order11TextBox.Text.Substring(0, order11TextBox.Text.IndexOf('*'))));
}
if (order12TextBox.Text != "0")
{
order12uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order12TextBox.Text.Substring(0, order12TextBox.Text.IndexOf('*'))));
}
if (order13TextBox.Text != "0")
{
order13uiLabel.Text = Form1.judgeFun(Form1.strToToHexByte(order13TextBox.Text.Substring(0, order13TextBox.Text.IndexOf('*'))));
}
}
catch (Exception ex)
{
log.SaveLog("配置表转换报错:" + ex.Message);
}
}
使用界面
读配置表
csharp
private void uiButton6_Click(object sender, EventArgs e)
{
try
{
string str = uiComboBox1.Text.Trim();
index = 0;
if (str == String.Empty)
{
MessageBox.Show("请先选择配置表");
return;
}
else
{
//发送指令
string no = "0";
XmlDocument doc = new XmlDocument();
doc.Load(AddModule.path);
XmlNodeList nodeList = doc.SelectNodes("/person/list");//xPath相关手册,找节点person的list
foreach (XmlNode node1 in nodeList)
{
string modeName = node1.SelectSingleNode("modeName").InnerText;
if (modeName == uiComboBox1.Text)
{
no = node1.Attributes["no"].Value;
break;
}
else
{
continue;
}
}
if (no == "0")
{
return;
MessageBox.Show("未读取到配置表");
}
xmlNodeList = doc.SelectNodes("/person/list[@no='" + no + "']");
node = xmlNodeList[0];
label2.Text= "客户:"+node.SelectSingleNode("client").InnerText;
label3.Text = "TMC/磁编:" + node.SelectSingleNode("tmc").InnerText;
label4.Text = "型号:" + node.SelectSingleNode("type").InnerText;
label5.Text = "通数:" + node.SelectSingleNode("tongshu").InnerText;
uiButton4.Enabled = true;
uiButton8.Enabled = true;
tableFlag = true;
}
}
catch (Exception ex)
{
throw;
}
}
选择配置按钮点击
更新一下有哪些配置表
csharp
private void uiComboBox1_ButtonClick(object sender, EventArgs e)
{
UpdateCfgTable();
}
csharp
public static string path = Directory.GetCurrentDirectory()+ "\\ParameterSet\\grid.xml";
public void UpdateCfgTable()
{
XmlDocument doc = new XmlDocument();
doc.Load(ModuleGrid.path);
XmlNodeList nodeList = doc.SelectNodes("/person/list");//xPath相关手册,找节点person的list
uiComboBox1.Items.Clear();
foreach (XmlNode node in nodeList)
{
string modeName = node.SelectSingleNode("modeName").InnerText;
uiComboBox1.Items.Add(modeName);
uiComboBox1.Text = modeName;
}
}