Beispiel #1
0
        /// <summary>
        /// 生成串口对象
        /// </summary>
        /// <returns></returns>
        public SerialPort CreateSerialPortObject(string devTag)
        {
            // 从配置文件读取串口信息
            string filePath = Application.StartupPath + "\\XML\\MySettings.xml";

            try
            {
                // 打开XML文件
                XmlSerializeHelper <SCommItem, SCommXml> .OpenXmlFile(filePath);

                // 读取XML文件
                SCommXml xml = XmlSerializeHelper <SCommItem, SCommXml> .ReadXML();

                // 获得指定名称的串口信息
                SCommItem item = (SCommItem)xml[devTag];

                // 校验位转换
                Parity parity = ConvertToParity(item.Parity);
                // 停止位
                StopBits stopBits = ConvertToStopBits(item.StopBits);

                // 生成串口
                return(new SerialPort(item.Name, item.Baud, parity, item.DataBits, stopBits));
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        private void FormDVSerialPortConfig_Load(object sender, EventArgs e)
        {
            SCommXml xml = null;

            try
            {
                // 加载系统串口信息
                LoadSerialPortItems();

                // 读XML文件
                xml = OpenSCommXml();
            }
            catch (Exception ex)
            {
                MessageUtil.ShowWarning(ex.Message);

                return;
            }

            SCommItem item = (SCommItem)xml["主控串口"];

            if (item == null)
            {
                MessageUtil.ShowTips("无法从配置文件中找到串口信息,使用默认串口COM1");

                lblComm.Text = "COM1";
            }
            else
            {
                lblComm.Text = item.Name;
            }

            // 更新界面显示
            UpdateUISerialPortInfo(item);
        }
        /// <summary>
        /// 确定
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOk_Click(object sender, EventArgs e)
        {
            if (cbxSerialPortNo.Text == "")
            {
                MessageUtil.ShowTips("请先选择串口号!");
                return;
            }

            // 打开系统配置文件,写入串口配置信息
            try
            {
                // 读XML文件
                SCommXml xml = OpenSCommXml();
                // 读取当前串口配置
                SCommItem item = (SCommItem)xml["主控串口"];

                // 更新XML中的串口信息
                UpdateXmlSerialPortInfo(item);
                XmlSerializeHelper <SCommItem, SCommXml> .WriteXML(xml);

                // 更新属性类中的串口信息
                UpdatePropertySerialPortInfo(item);

                if (MessageUtil.ShowTips("串口设置成功!") == DialogResult.OK)
                {
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageUtil.ShowWarning(ex.Message);
            }
        }
 /// <summary>
 /// 串口信息更新到XML文件
 /// </summary>
 /// <param name="item"></param>
 private void UpdateXmlSerialPortInfo(SCommItem item)
 {
     // 界面显示
     item.Name     = cbxSerialPortNo.Text;
     item.Baud     = Convert.ToInt32(cbxBaud.Text);
     item.DataBits = Convert.ToInt32(cbxDataBits.Text);
     item.StopBits = cbxStopBits.Text;
     item.Parity   = cbxParity.Text;
 }
 /// <summary>
 /// 更新界面串口参数显示
 /// </summary>
 /// <param name="item"></param>
 private void UpdateUISerialPortInfo(SCommItem item)
 {
     // 界面显示
     cbxSerialPortNo.Text = item.Name;
     cbxBaud.Text         = item.Baud.ToString();
     cbxDataBits.Text     = item.DataBits.ToString();
     cbxStopBits.Text     = item.StopBits.ToString();
     cbxParity.Text       = item.Parity;
 }
 /// <summary>
 /// 更新属性类串口信息
 /// </summary>
 /// <param name="item"></param>
 private void UpdatePropertySerialPortInfo(SCommItem item)
 {
     // 属性类
     PropertyHelper.SCommInfo.Tag      = item.Tag;
     PropertyHelper.SCommInfo.Name     = item.Name;
     PropertyHelper.SCommInfo.Baud     = item.Baud;
     PropertyHelper.SCommInfo.DataBits = item.DataBits;
     PropertyHelper.SCommInfo.StopBits = item.StopBits;
     PropertyHelper.SCommInfo.Parity   = item.Parity;
 }