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