原创 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上运行成功。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条