//加载继电器配置文件 public List <UserRelayArray> LoadRelayConfig() { try { XmlDocument relayConfig = new XmlDocument(); relayConfig.Load(_relayConfigFile); XmlNode root = relayConfig.SelectSingleNode("Root"); XmlNodeList relays = root.SelectNodes("Relay"); _relays.Clear(); foreach (XmlNode relay in relays) { string name = relay.SelectSingleNode("Name").InnerText; int _totoalApproachCount = int.Parse(relay.SelectSingleNode("TotoalApproach").InnerText); ComSetting cs = new ComSetting(); XmlNode operationSetting = relay.SelectSingleNode("OperationSetting"); cs.ComNumber = operationSetting.SelectSingleNode("ComNumber").InnerText; cs.BaudRate = int.Parse(operationSetting.SelectSingleNode("BaudRate").InnerText); cs.DataBits = int.Parse(operationSetting.SelectSingleNode("DataBit").InnerText); cs.StopBits = int.Parse(operationSetting.SelectSingleNode("StopBit").InnerText); cs.Parity = (Parity)Enum.Parse(typeof(Parity), operationSetting.SelectSingleNode("Parity").InnerText); UserRelayArray _userRelayModule = new UserRelayArray(name, cs, _totoalApproachCount); XmlNode _relaydata = relay.SelectSingleNode("RelayData"); XmlNodeList _relayapproachs = _relaydata.SelectNodes("Approach"); foreach (XmlNode _relayapproach in _relayapproachs) { int id = int.Parse(_relayapproach.Attributes["Id"].Value); UserRelaySetting _userRelaySetting = new UserRelaySetting(id, _totoalApproachCount); XmlNodeList temps = _relayapproach.SelectNodes("Mode"); RelayOperationDataList _relayOperationList = new RelayOperationDataList(); foreach (XmlNode temp in temps) { string _relayOperationType = temp.Attributes["Name"].Value; string _data = temp.Attributes["Data"].Value; _relayOperationList.SetOperationData((RelayOperationType)Enum.Parse(typeof(RelayOperationType), _relayOperationType), _data); } _userRelaySetting.AddRelayOperationData(_relayOperationList); _userRelayModule.AddRelayData(_userRelaySetting); } _relays.Add(_userRelayModule); } return(_relays); } catch { Helper.ShowMessageBox("提示", "未找到继电器配置文件"); return(null); } }
private void 添加ToolStripMenuItem_Click(object sender, EventArgs e) { RelayModuleSetting relayNameSetting = new RelayModuleSetting(); if (relayNameSetting.ShowDialog() == DialogResult.OK) { if (_relayModules != null) { foreach (UserRelayArray relay in _relayModules) { if (relayNameSetting.Name == relay.Name) { Helper.ShowMessageBox("提示", "已存在相同的名称!"); return; } } UserRelayArray _userelay = new UserRelayArray(relayNameSetting.RelayName, relayNameSetting.RelayCom, relayNameSetting.RelayCount); for (int i = 1; i <= relayNameSetting.RelayCount; i++) { UserRelaySetting _userRelaySetting = new UserRelaySetting(i, relayNameSetting.RelayCount); RelayOperationDataList _relayOperation = new RelayOperationDataList(); _relayOperation.SetOperationData(RelayOperationType.吸合, ""); _relayOperation.SetOperationData(RelayOperationType.断开, ""); _userRelaySetting.AddRelayOperationData(_relayOperation); _userelay.AddRelayData(_userRelaySetting); } AddCommand(_userelay); } else { UserRelayArray _userelay = new UserRelayArray(relayNameSetting.RelayName, relayNameSetting.RelayCom, relayNameSetting.RelayCount); for (int i = 1; i <= relayNameSetting.RelayCount; i++) { UserRelaySetting _userRelaySetting = new UserRelaySetting(i, relayNameSetting.RelayCount); RelayOperationDataList _relayOperation = new RelayOperationDataList(); _relayOperation.SetOperationData(RelayOperationType.吸合, ""); _relayOperation.SetOperationData(RelayOperationType.断开, ""); _userRelaySetting.AddRelayOperationData(_relayOperation); _userelay.AddRelayData(_userRelaySetting); } _relayModules = new List <UserRelayArray>(); _relayModules.Add(_userelay); RefreshRelayList(); } } }
private void 设置ToolStripMenuItem_Click(object sender, EventArgs e) { if (_currentRelayModule != null) { RelayModuleSetting relayNameSetting = new RelayModuleSetting(); relayNameSetting.RelayName = _currentRelayModule.Name; relayNameSetting.RelayCom = _currentRelayModule.RelayCom; relayNameSetting.RelayCount = _currentRelayModule.ApproachCout; if (relayNameSetting.ShowDialog() == DialogResult.OK) { foreach (UserRelayArray relayModules in _relayModules) { if (relayModules.Name == relayNameSetting.RelayName && relayModules.Name != _currentRelayModule.Name) { Helper.ShowMessageBox("提示", "该名称已存在!"); return; } } if (_currentRelayModule.RelayOperationDatas.Count != relayNameSetting.RelayCount) { if (Helper.ShowMessageBox("操作确认", "确定更改?", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.OK) { _currentRelayModule.RelayOperationDatas.Clear(); for (int i = 1; i <= relayNameSetting.RelayCount; i++) { UserRelaySetting _userRelaySetting = new UserRelaySetting(i, relayNameSetting.RelayCount); RelayOperationDataList _relayOperation = new RelayOperationDataList(); _relayOperation.SetOperationData(RelayOperationType.吸合, ""); _relayOperation.SetOperationData(RelayOperationType.断开, ""); _userRelaySetting.AddRelayOperationData(_relayOperation); _currentRelayModule.AddRelayData(_userRelaySetting); } } } _currentRelayModule.Name = relayNameSetting.RelayName; _currentRelayModule.RelayCom = relayNameSetting.RelayCom; _currentRelayModule.ApproachCout = relayNameSetting.RelayCount; RefreshRelayList(); } } }
public void RefreshRelayStateList() { lock (_lock) { dbRelayStateList.Rows.Clear(); _currentRelayOpDataList = null; if (_relayOperationDataList != null) { foreach (RelayOperationDataList _relayOpData in _relayOperationDataList) { dbRelayStateList.Rows.Add(GetRelayStateType(RelayOperationType.吸合), _relayOpData.GetOperationData(RelayOperationType.吸合)); dbRelayStateList.Rows.Add(GetRelayStateType(RelayOperationType.断开), _relayOpData.GetOperationData(RelayOperationType.断开)); } if (_relayOperationDataList != null && _relayOperationDataList.Count > 0) { dbRelayStateList.Rows[_relayOperationDataList.Count - 1].Selected = true; _currentRelayOpDataList = _relayOperationDataList[_relayOperationDataList.Count - 1]; } } } }
//保存继电器配置文件 public void SaveRelayConfig(List <UserRelayArray> p_relays) { if (p_relays != null && p_relays.Count > 0) { #region RelayConfig try { XmlDocument config = new XmlDocument(); XmlNode root = config.CreateNode(XmlNodeType.Element, "Root", null); config.AppendChild(root); for (int i = 0; i < p_relays.Count; i++) { UserRelayArray _currentRelay = p_relays[i]; XmlNode relayModoule = config.CreateNode(XmlNodeType.Element, "Relay", null); XmlNode relayModouleName = config.CreateNode(XmlNodeType.Element, "Name", null); XmlNode relayCount = config.CreateNode(XmlNodeType.Element, "TotoalApproach", null); relayModouleName.InnerText = _currentRelay.Name; relayCount.InnerText = _currentRelay.ApproachCout.ToString(); relayModoule.AppendChild(relayModouleName); relayModoule.AppendChild(relayCount); XmlNode operationset = config.CreateNode(XmlNodeType.Element, "OperationSetting", null); XmlNode comnumber = config.CreateNode(XmlNodeType.Element, "ComNumber", null); comnumber.InnerText = _currentRelay.RelayCom.ComNumber; XmlNode baudrate = config.CreateNode(XmlNodeType.Element, "BaudRate", null); baudrate.InnerText = _currentRelay.RelayCom.BaudRate.ToString(); XmlNode dataBit = config.CreateNode(XmlNodeType.Element, "DataBit", null); dataBit.InnerText = _currentRelay.RelayCom.DataBits.ToString(); XmlNode stopBit = config.CreateNode(XmlNodeType.Element, "StopBit", null); stopBit.InnerText = _currentRelay.RelayCom.StopBits.ToString(); XmlNode parity = config.CreateNode(XmlNodeType.Element, "Parity", null); parity.InnerText = _currentRelay.RelayCom.Parity.ToString(); operationset.AppendChild(comnumber); operationset.AppendChild(baudrate); operationset.AppendChild(dataBit); operationset.AppendChild(stopBit); operationset.AppendChild(parity); relayModoule.AppendChild(operationset); XmlNode relaydata = config.CreateNode(XmlNodeType.Element, "RelayData", null); for (int relay_count = 0; relay_count < _currentRelay.RelayOperationDatas.Count; relay_count++) { UserRelaySetting _currentRelaySet = _currentRelay.RelayOperationDatas[relay_count]; XmlNode approach = config.CreateNode(XmlNodeType.Element, "Approach", null); XmlAttribute id = config.CreateAttribute("Id"); id.Value = _currentRelaySet.RelayId.ToString(); approach.Attributes.Append(id); for (int _relayOperationData = 0; _relayOperationData < 2; _relayOperationData++) { RelayOperationDataList _currentRelayData = _currentRelaySet.RelayOperationDatas[0]; XmlElement mode = config.CreateElement("Mode"); XmlAttribute _name = config.CreateAttribute("Name"); _name.Value = GetRelayStateType((RelayOperationType)_relayOperationData); XmlAttribute _data = config.CreateAttribute("Data"); _data.Value = _currentRelayData.GetOperationData((RelayOperationType)_relayOperationData); mode.Attributes.Append(_name); mode.Attributes.Append(_data); approach.AppendChild(mode); } relaydata.AppendChild(approach); relayModoule.AppendChild(relaydata); } root.AppendChild(relayModoule); config.Save(_relayConfigFile); } } catch (Exception ex) { Helper.ShowMessageBox("异常", ex.Message); } } #endregion }