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> /// <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); } }
/// <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); } }