コード例 #1
0
 private void IndicaEnderecoEmUso(ProgramaBasico _pl, TipoEnderecamentoDispositivo _te)
 {
     _pl.endereco.LimpaIndicacaoEmUso();
     foreach (LinhaCompleta _lc in _pl.linhas)
     {
         _lc.simbolos.AddRange(_lc.saida);
         foreach (SimboloBasico _sb in _lc.simbolos)
         {
             switch (_sb.getCI())
             {
             /// pporque disso aqui
             case CodigosInterpretaveis.CONTATO_NA:
             case CodigosInterpretaveis.CONTATO_NF:
             case CodigosInterpretaveis.BOBINA_SAIDA:
             case CodigosInterpretaveis.TEMPORIZADOR:
             case CodigosInterpretaveis.CONTADOR:
             case CodigosInterpretaveis.RESET:
                 if (_sb.getOperandos(0) != null)
                 {
                     EnderecamentoLadder _el = (EnderecamentoLadder)_sb.getOperandos(0);
                     if (_el.TpEnderecamento == _te)
                     {
                         _el.EmUso = true;
                     }
                 }
                 break;
             }
         }
         _lc.simbolos.RemoveRange(_lc.simbolos.Count - _lc.saida.Count, _lc.saida.Count);
     }
 }
コード例 #2
0
 public void InsereEnderecoNoSimbolo(ControleLivre _cL, EnderecamentoLadder _end)
 {
     if (!_cL.IsDisposed)
     {
         _cL.setOperando(0, _end);
         _cL.Refresh();
     }
 }
コード例 #3
0
        public void Add(SimboloBasico _sb)
        {
            Add(_sb.getCI());

            switch (_sb.getCI())
            {
            case CodigosInterpretaveis.CONTADOR:
                if (_sb.iNumOperandos > 0)
                {
                    if (_sb.getOperandos(0) != null)
                    {
                        if (_sb.getOperandos(0).GetType().Name == EnderecamentoLadder.ClassName())
                        {
                            Add(((EnderecamentoLadder)_sb.getOperandos(0)).Indice);
                            Add(((EnderecamentoLadder)_sb.getOperandos(0)).Contador.Tipo);
                            Add(((EnderecamentoLadder)_sb.getOperandos(0)).Contador.Preset);
                        }
                    }
                }
                break;

            case CodigosInterpretaveis.TEMPORIZADOR:
                if (_sb.iNumOperandos > 0)
                {
                    if (_sb.getOperandos(0) != null)
                    {
                        if (_sb.getOperandos(0).GetType().Name == EnderecamentoLadder.ClassName())
                        {
                            Add(((EnderecamentoLadder)_sb.getOperandos(0)).Indice);
                            Add(((EnderecamentoLadder)_sb.getOperandos(0)).Temporizador.Tipo);
                            Add(((EnderecamentoLadder)_sb.getOperandos(0)).Temporizador.BaseTempo);
                            Add(((EnderecamentoLadder)_sb.getOperandos(0)).Temporizador.Preset);
                        }
                    }
                }
                break;

            default:
                if (_sb.iNumOperandos > 0)
                {
                    for (int i = 0; i < _sb.iNumOperandos; i++)
                    {
                        if (_sb.getOperandos(i) != null)
                        {
                            if (_sb.getOperandos(i).GetType().Name == EnderecamentoLadder.ClassName())
                            {
                                Add((EnderecamentoLadder)_sb.getOperandos(i));
                            }
                        }
                    }
                }
                break;
            }
        }
コード例 #4
0
        void Endereco_MudouComentario(EnderecamentoLadder sender)
        {
            TreeNode _NoEnderecamento = ArvoreProjeto.Nodes["NoProjeto"].Nodes["NoEnderecamento"];
            int      _pos             = 0;

            switch (sender.TpEnderecamento)
            {
            case TipoEnderecamentoDispositivo.DIGITAL_ENTRADA:
                _pos = _NoEnderecamento.Nodes["NoEntradas"].Nodes.IndexOfKey(sender.Nome);

                if (_pos >= 0)
                {
                    _NoEnderecamento.Nodes["NoEntradas"].Nodes[_pos].Text = sender.Nome + (sender.Apelido == "" ? "" : " - " + sender.Apelido);
                }
                break;

            case TipoEnderecamentoDispositivo.DIGITAL_SAIDA:
                _pos = _NoEnderecamento.Nodes["NoSaidas"].Nodes.IndexOfKey(sender.Nome);

                if (_pos >= 0)
                {
                    _NoEnderecamento.Nodes["NoSaidas"].Nodes[_pos].Text = sender.Nome + (sender.Apelido == "" ? "" : " - " + sender.Apelido);
                }
                break;

            case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA:
                _pos = _NoEnderecamento.Nodes["NoMemoria"].Nodes.IndexOfKey(sender.Nome);

                if (_pos >= 0)
                {
                    _NoEnderecamento.Nodes["NoMemoria"].Nodes[_pos].Text = sender.Nome + (sender.Apelido == "" ? "" : " - " + sender.Apelido);
                }
                break;

            case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_CONTADOR:
                _pos = _NoEnderecamento.Nodes["NoContadores"].Nodes.IndexOfKey(sender.Nome);

                if (_pos >= 0)
                {
                    _NoEnderecamento.Nodes["NoContadores"].Nodes[_pos].Text = sender.Nome + (sender.Apelido == "" ? "" : " - " + sender.Apelido);
                }
                break;

            case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_TEMPORIZADOR:
                _pos = _NoEnderecamento.Nodes["NoTemporizadores"].Nodes.IndexOfKey(sender.Nome);

                if (_pos >= 0)
                {
                    _NoEnderecamento.Nodes["NoTemporizadores"].Nodes[_pos].Text = sender.Nome + (sender.Apelido == "" ? "" : " - " + sender.Apelido);
                }
                break;
            }
        }
コード例 #5
0
 private void Add(EnderecamentoLadder _end)
 {
     Add((int)_end.TpEnderecamento);
     Add((int)_end.Indice);
 }
コード例 #6
0
 /// <summary>
 /// Procura o endereco de parametro nas listas do objeto
 /// da classe EnderecamentoPrograma
 /// </summary>
 /// <param name="_end">Endereco a ser buscado na lista de enderecos da classe</param>
 /// <returns>Caso encontre o endereco em uma das listas retorna o
 /// endereco das listas encontrado. caso contrario retorna null</returns>
 public EnderecamentoLadder Find(EnderecamentoLadder _end)
 {
     return(Find(_end.TpEnderecamento, _end.Indice));
 }
コード例 #7
0
ファイル: SimboloBasico.cs プロジェクト: q306023680/LadderApp
        /// <summary>
        /// Valida o operando de acordo com o codigo interpretavel
        /// </summary>
        /// <param name="_novoOperando">Caso operando ainda nao atribuido verifica antes</param>
        /// <returns></returns>
        private bool ValidaEndereco(int _indice, Object _novoOperando)
        {
            EnderecamentoLadder _end           = null;
            EnderecamentoLadder _atualOperando = null;
            bool _bValido   = true;
            bool _bEndereco = false;

            if (_novoOperando != null)
            {
                if (_novoOperando.GetType().Name == "EnderecamentoLadder")
                {
                    if (_novoOperando == null)
                    {
                        _end = (EnderecamentoLadder)getOperandos(0);
                    }
                    else
                    {
                        _end = (EnderecamentoLadder)_novoOperando;
                    }
                }
                else if (_novoOperando.GetType().Name == "Int32")
                {
                }
            }

            switch (getCI())
            {
            case CodigosInterpretaveis.NENHUM:
            case CodigosInterpretaveis.FIM_DA_LINHA:
                _bValido = false;
                break;

            case CodigosInterpretaveis.INICIO_DA_LINHA:
                if (_novoOperando != null)
                {
                    if (_novoOperando.GetType().ToString() != "System.Int32")
                    {
                        _bValido = false;
                    }
                }
                break;

            case CodigosInterpretaveis.CONTATO_NA:
            case CodigosInterpretaveis.CONTATO_NF:
                _bEndereco = true;
                if (_end != null)
                {
                    switch (_end.TpEnderecamento)
                    {
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA:
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_CONTADOR:
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_TEMPORIZADOR:
                    case TipoEnderecamentoDispositivo.DIGITAL_ENTRADA:
                    case TipoEnderecamentoDispositivo.DIGITAL_SAIDA:
                        _bValido = true;
                        break;

                    default:
                        _bValido = false;
                        break;
                    }
                }
                else
                {
                    _bValido = false;
                }
                break;

            case CodigosInterpretaveis.BOBINA_SAIDA:
                _bEndereco = true;
                if (_end != null)
                {
                    switch (_end.TpEnderecamento)
                    {
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA:
                    case TipoEnderecamentoDispositivo.DIGITAL_SAIDA:
                        _bValido = true;
                        break;

                    default:
                        _bValido = false;
                        break;
                    }
                }
                else
                {
                    _bValido = false;
                }
                break;

            case CodigosInterpretaveis.TEMPORIZADOR:
                if (_end != null && _indice == 0)
                {
                    _bEndereco = true;
                    switch (_end.TpEnderecamento)
                    {
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_TEMPORIZADOR:
                        _bValido = true;
                        break;

                    default:
                        _bValido = false;
                        break;
                    }
                }
                else if (_indice > 0)
                {
                    switch (_indice)
                    {
                    case 1:
                        break;

                    case 2:
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    _bValido = false;
                }
                break;

            case CodigosInterpretaveis.CONTADOR:
                if (_end != null && _indice == 0)
                {
                    _bEndereco = true;
                    switch (_end.TpEnderecamento)
                    {
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_CONTADOR:
                        _bValido = true;
                        break;

                    default:
                        _bValido = false;
                        break;
                    }
                }
                else if (_indice > 0)
                {
                    switch (_indice)
                    {
                    case 1:
                        break;

                    case 2:
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    _bValido = false;
                }
                break;

            case CodigosInterpretaveis.PARALELO_INICIAL:
            case CodigosInterpretaveis.PARALELO_FINAL:
            case CodigosInterpretaveis.PARALELO_PROXIMO:
                _bValido = false;
                break;

            case CodigosInterpretaveis.RESET:
                _bEndereco = true;
                if (_end != null)
                {
                    switch (_end.TpEnderecamento)
                    {
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_CONTADOR:
                    case TipoEnderecamentoDispositivo.DIGITAL_MEMORIA_TEMPORIZADOR:
                        _bValido = true;
                        break;

                    default:
                        _bValido = false;
                        break;
                    }
                }
                else
                {
                    _bValido = false;
                }
                break;

            default:
                _bValido = false;
                break;
            }

            if (_bEndereco)
            {
                if (getOperandos(0) != null)
                {
                    _atualOperando = (EnderecamentoLadder)getOperandos(0);
                }

                if (_bValido)
                {
                    if (_atualOperando != null)
                    {
                        _atualOperando.MudouOperando -= new MudouOperandoEventHandler(Ocorreu_MudouOperando);
                    }

                    _end.MudouOperando += new MudouOperandoEventHandler(Ocorreu_MudouOperando);
                }
                else
                if (_novoOperando == null)
                {
                    if (_atualOperando != null)
                    {
                        _atualOperando.MudouOperando -= new MudouOperandoEventHandler(Ocorreu_MudouOperando);
                        Operandos[0] = null;
                    }
                }
            }

            return(_bValido);
        }
コード例 #8
0
        void Simbolo_Click(object sender, MouseEventArgs e)
        {
            ControleLivre         _cL = (ControleLivre)sender;
            CodigosInterpretaveis _cI = _cL.getCI();

            ProjetoLadder _frmPL;

            _frmPL = frmDiag.linkProjeto;

            if (e.Button == MouseButtons.Right)
            {
                if (_cI != CodigosInterpretaveis.INICIO_DA_LINHA)
                {
                    frmDiag.menuInsereLinha.Enabled = false;

                    frmDiag.menuToggleBit.Enabled = false;
                    if (_cI == CodigosInterpretaveis.PARALELO_INICIAL ||
                        _cI == CodigosInterpretaveis.PARALELO_FINAL ||
                        _cI == CodigosInterpretaveis.PARALELO_PROXIMO)
                    {
                        frmDiag.menuEnderecamento.Enabled = false;
                        frmDiag.menuEnderecamento.Visible = false;

                        /// Extensao de paralelo - acima/abaixo
                        ///    somente sobre simbolos de paralelo
                        frmDiag.menuEstenderParaleloAcima.Enabled  = true;
                        frmDiag.menuEstenderParaleloAcima.Visible  = true;
                        frmDiag.menuEstenderParaleloAbaixo.Enabled = true;
                        frmDiag.menuEstenderParaleloAbaixo.Visible = true;
                    }
                    else
                    {
                        frmDiag.menuEnderecamento.Enabled = true;
                        frmDiag.menuEnderecamento.Visible = true;

                        if (_cL.getOperandos(0) != null)
                        {
                            frmDiag.menuToggleBit.Enabled = true;
                        }
                        else
                        {
                            frmDiag.menuToggleBit.Enabled = false;
                        }

                        TreeNode _NoEnderecamento = _frmPL.ArvoreProjeto.Nodes["NoProjeto"].Nodes["NoEnderecamento"];

                        ToolStripMenuItem _mnu = null;
                        //ToolStripMenuItem _mnuSub = null;

                        foreach (TreeNode _NoEnd in _NoEnderecamento.Nodes)
                        {
                            //_mnu = new ToolStripMenuItem(_end.Nome);
                            switch (_NoEnd.Text)
                            {
                            case "Memoria":
                                _mnu = frmDiag.menuMemoria;
                                break;

                            case "Temporizadores":
                                _mnu = frmDiag.menuTemporizador;
                                break;

                            case "Contadores":
                                _mnu = frmDiag.menuContador;
                                break;

                            case "Entradas":
                                _mnu = frmDiag.menuEntrada;
                                break;

                            case "Saidas":
                                _mnu = frmDiag.menuSaida;
                                break;
                            }

                            EnderecamentoLadder _end = null;
                            if (_cL.getOperandos(0) != null)
                            {
                                Object obj = _cL.getOperandos(0);
                                if (obj.GetType().ToString() == "LadderApp1.EnderecamentoLadder")
                                {
                                    _end = (LadderApp.EnderecamentoLadder)obj;
                                }
                            }

                            _mnu.DropDownItems.Clear();
                            foreach (TreeNode _NoEndSub in _NoEnd.Nodes)
                            {
                                _mnu.DropDownItems.Add(_NoEndSub.Text);

                                if (_end != null)
                                {
                                    if (_end.Nome == _NoEndSub.Text)
                                    {
                                        _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Select();
                                    }
                                }

                                _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Name   = _NoEndSub.Text;
                                _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Tag    = _NoEndSub.Tag;
                                _mnu.DropDownItems[_mnu.DropDownItems.Count - 1].Click += new EventHandler(LinhaCompletaLivre_Click);
                            }
                        }
                    }
                }
                frmDiag.menuControle.Show(_cL.PointToScreen(e.Location));
            }
        }