예제 #1
0
        /// <summary>
        /// Aloca e realoca na No objeto de enderecamento do programa atual
        /// uma quantidade especificada do tipo de memoria solicitado
        /// </summary>
        /// <param name="e">Enderecamento do programa</param>
        /// <param name="tp">tipo de memoria a ser realocada</param>
        /// <param name="qtdEnd">Quantidade do tipo desejada</param>
        public int AlocaEnderecamentoMemoria(DispositivoLadder dispositivo, List <EnderecamentoLadder> _lstE, TipoEnderecamentoDispositivo tp, int qtdEnd)
        {
            int _qtdAtual = 1;

            _qtdAtual = _lstE.Count;
            if ((_qtdAtual == 0) || (_qtdAtual < qtdEnd))
            {
                for (int i = _qtdAtual + 1; i <= qtdEnd; i++)
                {
                    _lstE.Add(new EnderecamentoLadder(tp, i, dispositivo));
                }
            }
            else if (_qtdAtual > qtdEnd)
            {
                for (int i = (_qtdAtual - 1); i >= qtdEnd; i--)
                {
                    if (!_lstE[i].EmUso)
                    {
                        _lstE[i] = null;
                        GC.Collect();
                        _lstE.RemoveAt(i);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            return(0);
        }
예제 #2
0
 /// <summary>
 /// Construtor
 /// </summary>
 /// <param name="_tpE">Tipo da endereco</param>
 /// <param name="_indicePosInicial">Indice identificador do endereco no tipo</param>
 public EnderecamentoLadder(TipoEnderecamentoDispositivo _tpE, int _indice, DispositivoLadder dispositivo)
 {
     this.dispositivo = dispositivo;
     indice           = _indice;
     BitsPorta        = dispositivo.QtdBitsPorta;
     TpEnderecamento  = _tpE;
 }
예제 #3
0
        public void AlocaEnderecamentoIO(DispositivoLadder dispositivo)
        {
            /// Atalho para o No de enderecamento
            this.lstIOEntrada.Clear();
            this.lstIOSaida.Clear();
            foreach (EnderecamentoLadder el in dispositivo.lstEndBitPorta)
            {
                el.ApontaDispositivo(dispositivo);
                switch (el.TpEnderecamento)
                {
                case TipoEnderecamentoDispositivo.DIGITAL_ENTRADA:
                    this.lstIOEntrada.Add(el);
                    break;

                case TipoEnderecamentoDispositivo.DIGITAL_SAIDA:
                    this.lstIOSaida.Add(el);
                    break;
                }
            }
        }
예제 #4
0
 public void ApontaDispositivo(DispositivoLadder dispositivo)
 {
     this.dispositivo = dispositivo;
 }
예제 #5
0
        public frmDispositivo(DispositivoLadder dl)
        {
            String _txtPino = "";
            Color  _cor     = corTextoPadrao;

            InitializeComponent();
            lblFabricante.Text   = "Fabricante: " + dl.Fabricante;
            lblSerie.Text        = "Série: " + dl.Serie;
            lblModelo.Text       = "Modelo: " + dl.Modelo;
            lblQtdPortas.Text    = "Qtd portas: " + dl.QtdPortas.ToString();
            lblQtdBitsPorta.Text = "Qtd bits por porta: " + dl.QtdBitsPorta.ToString();

            int i = 1;
            int j = 0;

            foreach (BitPortasDispositivo pd in dl.lstBitPorta)
            {
                //_txtPino = "Pino " + i.ToString().PadLeft(2,'0');
                _txtPino = "(P" + (((i - 1) / dl.QtdBitsPorta) + 1) + "." + ((i - 1) - ((Int16)((i - 1) / dl.QtdBitsPorta) * dl.QtdBitsPorta)) + ")";
                switch (pd.TipoPino)
                {
                case TiposPinosDispositivo.IO_DIGITAL_ENTRADA_OU_SAIDA:
                    if (pd.TipoDefinido == TipoEnderecamentoDispositivo.NENHUM)
                    {
                        _txtPino += "-Não Usado";
                        _cor      = corPinoIndefinida;
                    }
                    else if (pd.TipoDefinido == TipoEnderecamentoDispositivo.DIGITAL_ENTRADA)
                    {
                        _txtPino += "-Entrada";
                        _cor      = corPinoDefinida;
                    }
                    else if (pd.TipoDefinido == TipoEnderecamentoDispositivo.DIGITAL_SAIDA)
                    {
                        _txtPino += "-Saida";
                        _cor      = corPinoDefinida;
                    }
                    break;

                case TiposPinosDispositivo.IO_DIGITAL_ENTRADA:
                    _txtPino += "-Entrada";
                    break;

                case TiposPinosDispositivo.IO_DIGITAL_SAIDA:
                    _txtPino += "-Saida";
                    break;

                default:
                    _txtPino += "-Indisponível";
                    break;
                }
                //if (pd.TipoPino != TiposPinosDispositivo.NENHUM)
                //{
                ArvorePinos.Nodes[0].Nodes.Add(_txtPino);
                ArvorePinos.Nodes[0].Nodes[j].ForeColor = _cor;
                ArvorePinos.Nodes[0].Nodes[j].Tag       = pd.TipoPino;
                lstEndModificado.Add(pd.TipoDefinido);
                _cor = corTextoPadrao;
                j++;
                //}
                i++;
            }
            grpConfiguraPino.Visible = false;
        }