private void 除ToolStripMenuItem_Click(object sender, EventArgs e) { if (Helper.ShowMessageBox("确认", "确定删除?") == DialogResult.OK) { if (_relayModules != null && _relayModules.Count > 0 && _selectRowIndex != -1) { UserRelayArray _relayModule = _relayModules[_selectRowIndex]; DeleteCommand(_relayModule); } } }
public void DeleteCommand(UserRelayArray _relay) { lock (_lock) { if (_relayModules != null) { _relayModules.Remove(_relay); } RefreshRelayList(); } }
//加载继电器配置文件 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); } }
public void AddCommand(UserRelayArray _relay) { lock (_lock) { if (_relayModules != null) { _relayModules.Add(_relay); } else { Helper.ShowMessageBox("添加失败!", "添加继电器失败"); } RefreshRelayList(); } }
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 dbCommandList_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { _selectRowIndex = e.RowIndex; if (_selectRowIndex < 0) { return; } if (e.Clicks == 1 && e.Button == MouseButtons.Right && e.RowIndex >= 0) { contextMenuStrip.Show(Cursor.Position); } if (_selectRowIndex >= 0 && _currentRelayModule != _relayModules[_selectRowIndex]) { _currentRelayModule = _relayModules[_selectRowIndex]; if (OnCurrentRelayChanged != null) { OnCurrentRelayChanged(this, null); } dbRelayList.Rows[_selectRowIndex].Selected = true; } }
public void RefreshRelayList() { dbRelayList.Rows.Clear(); _currentRelayModule = null; if (_relayModules != null) { foreach (UserRelayArray relay in _relayModules) { dbRelayList.Rows.Add(relay.Name); } } if (dbRelayList.Rows.Count > 0) { dbRelayList.Rows[dbRelayList.Rows.Count - 1].Selected = true; _currentRelayModule = _relayModules[dbRelayList.Rows.Count - 1]; } if (OnCurrentRelayChanged != null) { OnCurrentRelayChanged(this, null); } }
//保存继电器配置文件 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 }