private void btnIniciar_Click(object sender, EventArgs e)
        {
            try
            {
                EstructuraRedSurtidor = new Dictionary <byte, RedSurtidor>();


                int Manguera = 1;
                Grado_M = Convert.ToInt16(Manguera_cara.Text);
                Caras   = Convert.ToInt16(NumCaras.Text);


                // if (radioButton1.Checked)
                {
                    //Estadocara.Text = "Manguera " + IdManguera + " en Reposo";


                    for (byte i = 1; i <= Caras; i++) //6
                    {
                        RedSurtidor Red = new RedSurtidor();
                        Red.Cara   = Convert.ToByte(i);
                        Red.CaraBD = Red.Cara;
                        //Red.CaraBD = Convert.ToByte(Red.Cara + 14); //sopa ra utilizar los alias para mas de 16 mangueras
                        if (i % 2 == 0)
                        {
                            Red.IdSurtidor = i / 2;
                            Red.Activa     = true;
                        }
                        else
                        {
                            Red.IdSurtidor = (i + 1) / 2;
                            Red.Activa     = true;
                        }

                        double FactorPV = Convert.ToDouble(FactorPrecioFRM.Text);
                        FactorPV = Math.Pow(10, FactorPV);// factor Precio Venta

                        double FactorVolumen = Convert.ToDouble(FactorVolumenFRM.Text);
                        FactorVolumen = Math.Pow(10, FactorVolumen);// Factor Volumen

                        double FactorImporte = Convert.ToDouble(FactorImporteFRM.Text);
                        FactorImporte = Math.Pow(10, FactorImporte);// Factor Importe

                        double FactorTotalizador = Convert.ToDouble(FactorTotalizadorRM.Text);
                        FactorTotalizador = Math.Pow(10, FactorTotalizador);// Factor Totalizador

                        double FactorPredeterminacionVolumen = Convert.ToDouble(FactorPredeterminacioVol.Text);
                        FactorPredeterminacionVolumen = Math.Pow(10, FactorPredeterminacionVolumen);

                        double FactorPredeterminacionImporte = Convert.ToDouble(FactorPredetImporte.Text);
                        FactorPredeterminacionImporte = Math.Pow(10, FactorPredeterminacionImporte);


                        Red.FactorPrecio                  = Convert.ToInt16(FactorPV);          // 100;//1000; //1 //Develco para peru =1000
                        Red.FactorImporte                 = Convert.ToInt16(FactorImporte);     //1
                        Red.FactorVolumen                 = Convert.ToInt16(FactorVolumen);     // 1000
                        Red.FactorTotalizador             = Convert.ToInt16(FactorTotalizador); // 1000
                        Red.FactorPredeterminacionVolumen = Convert.ToInt16(FactorPredeterminacionVolumen);
                        Red.FactorPredeterminacionImporte = Convert.ToInt16(FactorPredeterminacionImporte);

                        if (rad_Extended.Checked == true)
                        {
                            Red.Gilbarco_Extended = true;
                        }



                        for (int j = 0; j < Grado_M; j++) //// 2 NTERIOR 2 PRODUCTO POR CARA
                        {
                            Grados GradosCara = new Grados();
                            GradosCara.IdProducto = j;
                            GradosCara.MangueraBD = Manguera;
                            Manguera++;
                            GradosCara.NoGrado   = Convert.ToByte(j);
                            GradosCara.Autorizar = true;


                            if (j % 2 != 0)
                            {
                                GradosCara.PrecioNivel1 = Convert.ToDecimal(PV_MangueraG0.Text); //Convert.ToDecimal(1.480);
                                GradosCara.PrecioNivel2 = Convert.ToDecimal(PV_MangueraG0.Text); //Convert.ToDecimal(2.189);
                            }
                            else
                            {
                                GradosCara.PrecioNivel1 = Convert.ToDecimal(PV_MangueraG1.Text); //Convert.ToDecimal(8744);
                                GradosCara.PrecioNivel2 = Convert.ToDecimal(PV_MangueraG1.Text); // Convert.ToDecimal(1.480);
                            }

                            Red.ListaGrados.Add(GradosCara);
                        }
                        EstructuraRedSurtidor.Add(Red.Cara, Red);
                    }
                }



                Protocolo = cmbProtocolo.SelectedIndex;

                bool   EsTCPIP     = true;
                string DireccionIP = IP.Text;
                string Puerto      = Perto_IP.Text;

                switch (cmbProtocolo.SelectedIndex)
                {
                case 1:

                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    //oProtocoloWayne = new Wayne(EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    oProtocoloWayne = new Wayne(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oProtocoloWayne.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloWayne.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloWayne.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloWayne.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloWayne.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloWayne.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloWayne.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloWayne.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;

                case 0:

                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;


                    // oProtocoloTokheim = new Tokheim(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oProtocoloTokheim = new Tokheim(EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    oProtocoloTokheim.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloTokheim.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloTokheim.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloTokheim.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloTokheim.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloTokheim.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloTokheim.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloTokheim.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;


                case 2:
                    oProtocoloGilbarco_Extended = new Gilbarco_Extended(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oProtocoloGilbarco_Extended.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloGilbarco_Extended.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloGilbarco_Extended.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloGilbarco_Extended.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloGilbarco_Extended.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloGilbarco_Extended.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloGilbarco_Extended.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloGilbarco_Extended.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;


                case 3:
                    //oprotocolo_EMR3 = new EMR3(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    //oprotocolo_EMR3.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oprotocolo_EMR3.CaraEnReposo += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    //oprotocolo_EMR3.VentaParcial += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    //oprotocolo_EMR3.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oprotocolo_EMR3.LecturaInicialVenta += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    //oprotocolo_EMR3.LecturaTurnoAbierto += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    //oprotocolo_EMR3.LecturaTurnoCerrado += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    //oprotocolo_EMR3.VentaFinalizada += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;

                case 4:
                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    //oPrptocoloPumpControl = new PumpControl(EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    oPrptocoloPumpControl = new PumpControl(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);

                    oPrptocoloPumpControl.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oPrptocoloPumpControl.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oPrptocoloPumpControl.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oPrptocoloPumpControl.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oPrptocoloPumpControl.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oPrptocoloPumpControl.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oPrptocoloPumpControl.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oPrptocoloPumpControl.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);


                    break;


                case 5:
                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    oProtocoloGilbarco_Extended = new Gilbarco_Extended(EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    oProtocoloGilbarco_Extended.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloGilbarco_Extended.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloGilbarco_Extended.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloGilbarco_Extended.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloGilbarco_Extended.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloGilbarco_Extended.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloGilbarco_Extended.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloGilbarco_Extended.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);


                    break;



                case 6:
                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    oProtocoloDevelco = new Develco(EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    oProtocoloDevelco.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloDevelco.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloDevelco.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloDevelco.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloDevelco.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloDevelco.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloDevelco.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloDevelco.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);


                    break;



                case 7:
                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    //oProtocoloFillPos = new FillPos_IMW (EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    //oProtocoloFillPos.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloFillPos.CaraEnReposo += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    //oProtocoloFillPos.VentaParcial += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    //oProtocoloFillPos.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloFillPos.LecturaInicialVenta += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    //oProtocoloFillPos.LecturaTurnoAbierto += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    //oProtocoloFillPos.LecturaTurnoCerrado += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    //oProtocoloFillPos.VentaFinalizada += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);


                    break;



                case 8:
                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    oProtocoloHongYang = new HongYang(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oProtocoloHongYang.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloHongYang.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloHongYang.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloHongYang.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloHongYang.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloHongYang.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloHongYang.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloHongYang.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);


                    break;

                case 9:
                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    //oProtocoloH2P_Safe = new H2P_Safe(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    //oProtocoloH2P_Safe = new PumpControl(EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    //oProtocoloH2P_Safe.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloH2P_Safe.CaraEnReposo += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    //oProtocoloH2P_Safe.VentaParcial += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    //oProtocoloH2P_Safe.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloH2P_Safe.LecturaInicialVenta += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    //oProtocoloH2P_Safe.LecturaTurnoAbierto += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    //oProtocoloH2P_Safe.LecturaTurnoCerrado += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    //oProtocoloH2P_Safe.VentaFinalizada += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);


                    break;

                case 10:
                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;

                    // oProtocoloFAFNIR = new FAFNIR(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    Dictionary <int, Tanque> tanque = new Dictionary <int, Tanque>();
                    //oProtocoloFAFNIR = new FAFNIR(EsTCPIP, DireccionIP, Puerto, tanque);


                    break;



                case 11:
                    //EsTCPIP = true;
                    //DireccionIP = IP.Text;
                    //Puerto = Perto_IP.Text;

                    //oProtocoloBennett = new Bennett(EsTCPIP, DireccionIP, Puerto, EstructuraRedSurtidor, true);
                    //oProtocoloBennett.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloBennett.CaraEnReposo += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    //oProtocoloBennett.VentaParcial += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    //oProtocoloBennett.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloBennett.LecturaInicialVenta += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    //oProtocoloBennett.LecturaTurnoAbierto += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    //oProtocoloBennett.LecturaTurnoCerrado += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    //oProtocoloBennett.VentaFinalizada += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;

                case 12:

                    EsTCPIP     = true;
                    DireccionIP = IP.Text;
                    Puerto      = Perto_IP.Text;


                    Dictionary <int, Tanque> lista = new Dictionary <int, Tanque>();
                    for (int i = 0; i < 1; i++)
                    {
                        Tanque obj = new Tanque();
                        obj.TankNumber = i;
                        lista.Add(i, obj);
                    }
                    Type t = Type.GetTypeFromProgID("SharedEventsFuelStation.CMensaje");
                    //oEventos = (SharedEventsFuelStation.CMensaje)Activator.CreateInstance(t);
                    //                oProtocoloveeder = new POSstation.Protocolos.VeederRoot.VeederRoot(EsTCPIP,DireccionIP,Puerto, lista);

                    break;



                case 15:

                    //oProtocoloTokhe_Loop = new Tokheim_Loop(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    //oProtocoloTokhe_Loop.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloTokhe_Loop.CaraEnReposo += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    //oProtocoloTokhe_Loop.VentaParcial += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    //oProtocoloTokhe_Loop.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    //oProtocoloTokhe_Loop.LecturaInicialVenta += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    //oProtocoloTokhe_Loop.LecturaTurnoAbierto += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    //oProtocoloTokhe_Loop.LecturaTurnoCerrado += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    //oProtocoloTokhe_Loop.VentaFinalizada += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);
                    break;



                case 14:

                    oprotocolo2A = new Chile_2A(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oprotocolo2A.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oprotocolo2A.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oprotocolo2A.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oprotocolo2A.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oprotocolo2A.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oprotocolo2A.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oprotocolo2A.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oprotocolo2A.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);
                    break;
                }

                grpComandos.Enabled = true;
                btnIniciar.Enabled  = false;
            }
            catch (Exception ex)
            {
                string MensajeExcepcion = "Excepción" + ex;
            }
        }
        private void btnIniciar_Click(object sender, EventArgs e)
        {
            try
            {
                EstructuraRedSurtidor = new Dictionary <byte, RedSurtidor>();


                int Manguera = 1;
                Grado_M = Convert.ToInt16(Manguera_cara.Text);
                Caras   = Convert.ToInt16(NumCaras.Text);


                // if (radioButton1.Checked)
                {
                    //Estadocara.Text = "Manguera " + IdManguera + " en Reposo";


                    for (byte i = 1; i <= Caras; i++) //6
                    {
                        RedSurtidor Red = new RedSurtidor();
                        Red.Cara   = Convert.ToByte(i);
                        Red.CaraBD = Red.Cara;
                        //Red.CaraBD = Convert.ToByte(Red.Cara + 14); //sopa ra utilizar los alias para mas de 16 mangueras
                        if (i % 2 == 0)
                        {
                            Red.IdSurtidor = i / 2;
                            Red.Activa     = true;
                        }
                        else
                        {
                            Red.IdSurtidor = (i + 1) / 2;
                            Red.Activa     = true;
                        }

                        double FactorPV = Convert.ToDouble(FactorPrecioFRM.Text);
                        FactorPV = Math.Pow(10, FactorPV);// factor Precio Venta

                        double FactorVolumen = Convert.ToDouble(FactorVolumenFRM.Text);
                        FactorVolumen = Math.Pow(10, FactorVolumen);// Factor Volumen

                        double FactorImporte = Convert.ToDouble(FactorImporteFRM.Text);
                        FactorImporte = Math.Pow(10, FactorImporte);// Factor Importe

                        double FactorTotalizador = Convert.ToDouble(FactorTotalizadorRM.Text);
                        FactorTotalizador = Math.Pow(10, FactorTotalizador);// Factor Totalizador

                        double FactorPredeterminacionVolumen = Convert.ToDouble(FactorPredeterminacioVol.Text);
                        FactorPredeterminacionVolumen = Math.Pow(10, FactorPredeterminacionVolumen);

                        double FactorPredeterminacionImporte = Convert.ToDouble(FactorPredetImporte.Text);
                        FactorPredeterminacionImporte = Math.Pow(10, FactorPredeterminacionImporte);


                        Red.FactorPrecio                  = Convert.ToInt16(FactorPV);          // 100;//1000; //1 //Develco para peru =1000
                        Red.FactorImporte                 = Convert.ToInt16(FactorImporte);     //1
                        Red.FactorVolumen                 = Convert.ToInt16(FactorVolumen);     // 1000
                        Red.FactorTotalizador             = Convert.ToInt16(FactorTotalizador); // 1000
                        Red.FactorPredeterminacionVolumen = Convert.ToInt16(FactorPredeterminacionVolumen);
                        Red.FactorPredeterminacionImporte = Convert.ToInt16(FactorPredeterminacionImporte);

                        for (int j = 0; j < Grado_M; j++) //// 2 NTERIOR 2 PRODUCTO POR CARA
                        {
                            Grados GradosCara = new Grados();
                            GradosCara.IdProducto = j;
                            GradosCara.MangueraBD = Manguera;
                            Manguera++;
                            GradosCara.NoGrado   = Convert.ToByte(j);
                            GradosCara.Autorizar = true;


                            if (j % 2 != 0)
                            {
                                GradosCara.PrecioNivel1 = Convert.ToDecimal(PV_MangueraG0.Text); //Convert.ToDecimal(1.480);
                                GradosCara.PrecioNivel2 = Convert.ToDecimal(PV_MangueraG0.Text); //Convert.ToDecimal(2.189);
                            }
                            else
                            {
                                GradosCara.PrecioNivel1 = Convert.ToDecimal(PV_MangueraG1.Text); //Convert.ToDecimal(8744);
                                GradosCara.PrecioNivel2 = Convert.ToDecimal(PV_MangueraG1.Text); // Convert.ToDecimal(1.480);
                            }

                            Red.ListaGrados.Add(GradosCara);
                        }
                        EstructuraRedSurtidor.Add(Red.Cara, Red);
                    }
                }



/*
 *              if (radioButton2.Checked)
 *              {
 *
 *                  for (byte i = 1; i <= Caras; i++) //6
 *
 *                  //byte i = Convert.ToByte(SoloCara.Text);
 *                  {
 *                      RedSurtidor Red = new RedSurtidor();
 *                      Red.Cara = Convert.ToByte(i);
 *                      Red.CaraBD = Red.Cara;
 *                      if (i % 2 == 0)
 *                      {
 *                          Red.IdSurtidor = i / 2;
 *                          Red.Activa = true;
 *                      }
 *                      else
 *                      {
 *                          Red.IdSurtidor = (i + 1) / 2;
 *                          Red.Activa = true;
 *                      }
 *
 *                      Red.FactorPrecio = 1;//1000; //1 //Develco para peru =1000
 *                      Red.FactorImporte = 1; //1
 *                      Red.FactorVolumen = 100;// 1000
 *                      Red.FactorTotalizador = 100;// 1000
 *
 *                      for (int j = 0; j < Manguera1; j++) //// 2 NTERIOR 2 PRODUCTO POR CARA
 *                      {
 *                          Grados GradosCara = new Grados();
 *                          GradosCara.IdProducto = j;
 *                          GradosCara.MangueraBD = Manguera;
 *                          Manguera++;
 *                          GradosCara.NoGrado = Convert.ToByte(j);
 *                          GradosCara.Autorizar = true;
 *
 *
 *                          if (j % 2 != 0)
 *                          {
 *                              GradosCara.PrecioNivel1 = Convert.ToDecimal(MangueraPar.Text);//Convert.ToDecimal(1.480);
 *                              GradosCara.PrecioNivel2 = Convert.ToDecimal(MangueraPar.Text); //Convert.ToDecimal(2.189);
 *                          }
 *                          else
 *                          {
 *                              GradosCara.PrecioNivel1 = Convert.ToDecimal(MangImpar.Text); //Convert.ToDecimal(8744);
 *                              GradosCara.PrecioNivel2 = Convert.ToDecimal(MangImpar.Text); // Convert.ToDecimal(1.480);
 *                          }
 *
 *                          Red.ListaGrados.Add(GradosCara);
 *                      }
 *                      EstructuraRedSurtidor.Add(Red.Cara, Red);
 *
 *                  }
 *
 *              }
 *
 *
 */


                Protocolo = cmbProtocolo.SelectedIndex;


                switch (cmbProtocolo.SelectedIndex)
                {
                case 1:
                    oProtocoloWayne = new Wayne(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oProtocoloWayne.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloWayne.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloWayne.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloWayne.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloWayne.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloWayne.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloWayne.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloWayne.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;

                case 0:
                    oProtocoloTokheim = new Tokheim(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oProtocoloTokheim.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloTokheim.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloTokheim.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloTokheim.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloTokheim.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloTokheim.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloTokheim.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloTokheim.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;

                case 2:
                    oProtocoloGilbarco_Extended = new Gilbarco_Extended(cmbNombrePuerto.Text, EstructuraRedSurtidor, true);
                    oProtocoloGilbarco_Extended.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloGilbarco_Extended.CaraEnReposo          += new iProtocolo.CaraEnReposoEventHandler(oEvento_CaraEnReposo);
                    oProtocoloGilbarco_Extended.VentaParcial          += new iProtocolo.VentaParcialEventHandler(oEvento_VentaParcial);
                    oProtocoloGilbarco_Extended.AutorizacionRequerida += new iProtocolo.AutorizacionRequeridaEventHandler(oEvento_RequerirAutorizacion);
                    oProtocoloGilbarco_Extended.LecturaInicialVenta   += new iProtocolo.LecturaInicialVentaEventHandler(oEventos_LecturaInicialVenta);
                    oProtocoloGilbarco_Extended.LecturaTurnoAbierto   += new iProtocolo.LecturaTurnoAbiertoEventHandler(oEventos_LecturaTurnoAbierto);
                    oProtocoloGilbarco_Extended.LecturaTurnoCerrado   += new iProtocolo.LecturaTurnoCerradoEventHandler(oEventos_LecturaTurnoCerrado);
                    oProtocoloGilbarco_Extended.VentaFinalizada       += new iProtocolo.VentaFinalizadaEventHandler(oEventos_VentaFinalizada);

                    break;
                }

                grpComandos.Enabled = true;
                btnIniciar.Enabled  = false;
            }
            catch (Exception ex)
            {
                string MensajeExcepcion = "Excepción" + ex;
            }
        }