Ejemplo n.º 1
0
 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);
         }
     }
 }
Ejemplo n.º 2
0
 public void DeleteCommand(UserRelayArray _relay)
 {
     lock (_lock)
     {
         if (_relayModules != null)
         {
             _relayModules.Remove(_relay);
         }
         RefreshRelayList();
     }
 }
Ejemplo n.º 3
0
        //加载继电器配置文件
        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);
            }
        }
Ejemplo n.º 4
0
 public void AddCommand(UserRelayArray _relay)
 {
     lock (_lock)
     {
         if (_relayModules != null)
         {
             _relayModules.Add(_relay);
         }
         else
         {
             Helper.ShowMessageBox("添加失败!", "添加继电器失败");
         }
         RefreshRelayList();
     }
 }
Ejemplo n.º 5
0
        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();
                }
            }
        }
Ejemplo n.º 6
0
        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;
            }
        }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
        //保存继电器配置文件
        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
        }