原创
PC端程序初始化参数的处理。
2008-9-8 12:37
3158
9
9
分类:
工业电子
PC端的许多初始化参数需要保存,我对PC机的编程是很怵的。
还是在编WM6.0下的通讯软件。使用VS2005下的C#开发。
初始化参数我见到的有这么几种。
1、使用ini文件:好像说是.net不推荐使用,就没有深入学习了。
2、使用注册表。这是MS推荐使用的,但俺怕麻烦。觉得还是绿色软件好一些。
3、使用XML。.net对XML文件的支持力度很强。俺决心就用它了。
我的XML文件是这样的。
<?xml version="1.0" encoding="utf-8"?>
<Modbus Version="1.00.00">
<CommPort>COM1</CommPort>
<MassUnit>T</MassUnit>
</Modbus>
编程思路是首先读取ModbusIni.xml,如果文件不存在则创建这个文件,如果文件存在则读取文件中的参数,最后在程序关闭时保存设置好的参数到ModbusIni.xml。
首先定义两个变量,mDocument代表XML文件,mCurrentNode表示选择好的节点。
private XmlDocument mDocument;
private XmlNode mCurrentNode;
public Form1()
{
InitializeComponent();
foreach (string s in SerialPort.GetPortNames())
{
comboBox1.Items.Add(s); //通讯端口的选择
}
bool bSave = false;
mDocument = new XmlDocument();
try
{
mDocument.Load(@"ModbusIni.xml");//判断文件Load正确否
}
catch
{
// 走到这里就失败了,文件不存在或其它错误
bSave = true;
CreatXmlDocument();//创建文件
}
if (!bSave)
{
ReadXmlDocument();
}
}
private void CreatXmlDocument() //建立新的文件
{
//定义XML文档头文件
XmlDeclaration xmlDeclaration = mDocument.CreateXmlDeclaration("1.0", "utf-8", null);
//增加XML文档头
mDocument.AppendChild(xmlDeclaration);
//定义XML的根
XmlElement xmlRoot = mDocument.CreateElement("Modbus");
//添加XML的根
mDocument.AppendChild(xmlRoot);
//添加根的属性
xmlRoot.SetAttribute("Version", "1.00.00");
XmlElement newCommPort = mDocument.CreateElement("CommPort");
XmlElement newMassUnit = mDocument.CreateElement("MassUnit");
XmlText CommPort = mDocument.CreateTextNode("COM1");
XmlText MassUnit = mDocument.CreateTextNode("T");
newCommPort.AppendChild(CommPort);
newMassUnit.AppendChild(MassUnit);
//添加XML根的节点
xmlRoot.AppendChild(newCommPort);
xmlRoot.AppendChild(newMassUnit);
// Save the document to a file.
mDocument.Save("ModbusIni.xml");
}
private void ReadXmlDocument() //读取Xml文件
{
XmlElement xmlRoot = mDocument.DocumentElement;
//使用SelectSingleNode查找到想要的参数
mCurrentNode = xmlRoot.SelectSingleNode("CommPort");
comboBox1.Text = mCurrentNode.InnerText;
}
private void SaveXmlDocument() //保存Xml文件
{
XmlElement xmlRoot = mDocument.DocumentElement;
//使用SelectSingleNode查找到想要的参数,
mCurrentNode = xmlRoot.SelectSingleNode("CommPort");
mCurrentNode.InnerText = comboBox1.Text ;
mDocument.Save("ModbusIni.xml");
}
//程序退出时保存XML文件
private void Form1_Closed(object sender, EventArgs e)
{
SaveXmlDocument();
}
以上程序在VS2005下编译成功,在多普达P660上运行成功。
文章评论(0条评论)
登录后参与讨论