/// <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); }
/// <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; }
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; } } }
public void ApontaDispositivo(DispositivoLadder dispositivo) { this.dispositivo = dispositivo; }
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; }