Exemplo n.º 1
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);
            }
        }
Exemplo n.º 2
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();
                }
            }
        }
Exemplo n.º 3
0
        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();
                }
            }
        }
Exemplo n.º 4
0
 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];
             }
         }
     }
 }
Exemplo n.º 5
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
        }