Ejemplo n.º 1
0
        private void btnLeerChip_Click(object sender, EventArgs e)
        {
            try
            {
                LogCategorias.Clear();
                LogCategorias.Agregar("Ibutton");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Cara", Cara.ToString());
                POSstation.Fabrica.LogIt.Loguear("Se solicita la lectura del ibutton", LogPropiedades, LogCategorias);


                Helper OHelper = new Helper();

                if (ColDispositivosLSIB4.ContainsKey(Cara.ToString()))
                {
                    InformacionVehiculo OPlaca = new InformacionVehiculo();
                    OPlaca = EsperarDatosChipLectorDtiImpresionTicket(Cara.ToString());



                    if (!String.IsNullOrEmpty(OPlaca.Rom))
                    {
                        txtRom.Text = OPlaca.Rom;
                        ColDispositivosLSIB4.Remove(Cara.ToString());
                    }
                    else
                    {
                        Popup.ContentText = "No se pudo leer el Chip, intente nuevamente";
                        Popup.Popup();
                    }
                }
                else
                {
                    Popup.ContentText = "No se ha detectado un lector Chip Conectado, por favor verifique";
                    Popup.Popup();
                }
            }
            catch (System.Data.DataException EXBD)
            {
                LogFallas.ReportarError(EXBD, "oEventos_SolicitudDatosIbutton", "Cara: " + Cara.ToString(), " Puerto: Ibutton");
                // ImpresoraTurno.ImprimirExcepcion(EXBD.Message, ImpresoraEstacion.CrearImpresora(cara))
            }
            catch (System.Data.SqlClient.SqlException EXSQL)
            {
                LogFallas.ReportarError(EXSQL, "oEventos_SolicitudDatosIbutton", "Cara: " + Cara.ToString(), " Puerto: Ibutton");
            }
            catch (System.Exception ex)
            {
                LogFallas.ReportarError(ex, "oEventos_SolicitudDatosIbutton", "Cara: " + Cara.ToString(), " Puerto: Ibutton");
            }
        }
Ejemplo n.º 2
0
        private InformacionVehiculo EsperarDatosChipLectorDtiImpresionTicket(string ocara, bool EsLecturaObligatoria = true)
        {
            Helper oDatos              = new Helper();
            int    intentos            = Convert.ToInt32(oDatos.RecuperarParametro("LecturaChipReintentos"));
            Int32  Delay               = Convert.ToInt32(oDatos.RecuperarParametro("LecturaChipDelay"));
            InformacionVehiculo OPlaca = new InformacionVehiculo();

            POSstation.EncriptacionDti.EncriptacionDti oNorma = new POSstation.EncriptacionDti.EncriptacionDti();
            int i = 0;

            try
            {
                while (i <= intentos)
                {
                    if (LecturasLSIB4.ContainsKey(ocara))
                    {
                        //OPlaca = oNorma.ExtraerInformacionPaginasImpresiones(LecturasLSIB4(ocara).ArregloBytes)
                        OPlaca = DesencriptarBytesDti(EsLecturaObligatoria, Convert.ToByte(ocara), LecturasLSIB4[ocara].ArregloBytes);
                        LecturasLSIB4.Remove(ocara);

                        if (OPlaca == null)
                        {
                            throw new System.Exception("Retire y coloque nuevamente el chip en el lector");
                        }

                        break; // TODO: might not be correct. Was : Exit While
                    }
                    else
                    {
                        System.Threading.Thread.Sleep(Convert.ToInt32(Delay / 3));
                    }

                    if (i >= intentos)
                    {
                        throw new System.Exception("No hay un chip conectado");
                    }
                }
                return(OPlaca);
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 3
0
        public InformacionVehiculo ExtraerInformacionPaginas(byte[] Paginas, string ROM, bool SolicitarLectura)
        {
            LogCategorias.Clear();
            LogCategorias.Agregar("SeguimientoCodigoDTI");
            LogPropiedades.Clear();
            LogPropiedades.Agregar("Mensaje", "Se procede a iniciar la desencriptacion de  las paginas enviadas por la dti");
            LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
            LogPropiedades.Agregar("Numero Bytes Recibidos", Paginas.Length.ToString());
            POSstation.Fabrica.LogIt.Loguear("Logueando  el inicio de desencriptacion de  las paginas enviadas por la DTI", LogPropiedades, LogCategorias);

            string[] oCampos;

            InformacionVehiculo oInformacion = new InformacionVehiculo();
            String strSalida = "";

            try
            {
                byte[] tmp = new byte[Paginas.Length];
                Array.Copy(Paginas, tmp, Paginas.Length);

                //int i = 0;

                //tmp[i] = 0;
                //for (byte b in Paginas) tmp[++i] = b;


                for (int b = 127; b >= 0; b--)
                {
                    if (b == 0)
                    {
                        tmp[b] = 0;
                    }
                    else
                    {
                        tmp[b] = tmp[b - 1];
                    }
                }

                if (SolicitarLectura)
                {
                    POSstation.NormaColombiana.Metodos oEncripcion = new NormaColombiana.Metodos();
                    strSalida = oEncripcion.Desencriptar2Fish(ref tmp);
                    strSalida = LimpiarCadena(strSalida);
                    oCampos   = strSalida.Split(Convert.ToChar(";"));
                }
                else
                {
                    strSalida = string.Empty;
                    oCampos   = strSalida.Split(Convert.ToChar(";"));
                }



                LogCategorias.Clear();
                LogCategorias.Agregar("SeguimientoCodigoDTI");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Mensaje", "Depues de realizar  la desencriptacion de  las paginas enviadas por la dti");
                LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                LogPropiedades.Agregar("Descriptacion", strSalida);
                POSstation.Fabrica.LogIt.Loguear("Logueando  del final de la desencriptacion de  las paginas enviadas por la DTI", LogPropiedades, LogCategorias);



                //if ((string.IsNullOrEmpty(strSalida) && SolicitarLectura == true))
                if ((string.IsNullOrEmpty(strSalida) && SolicitarLectura == true && string.IsNullOrEmpty(ROM)))
                {
                    LogCategorias.Clear();
                    LogCategorias.Agregar("SeguimientoCodigoDTI");
                    LogPropiedades.Clear();
                    LogPropiedades.Agregar("Mensaje", "Cadena vacia despues de la desecriptacion del TwoFish, Mala Lectura del chip se solicita una nueva lectura");
                    LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                    LogPropiedades.Agregar("Descriptacion", strSalida);
                    POSstation.Fabrica.LogIt.Loguear("Logueando  del final de la desencriptacion de  las paginas enviadas por la DTI", LogPropiedades, LogCategorias);
                    throw new Exception("Lectura de chip incorrecta desconecte y conecte el chip nuevamente");
                }

                //ESTO ES CUANDO SE TIENE INFORMACION DEL ROOM Y DEMAS DATOS DEL CHIP LO CUAL ME INDICA QUE ES UN CHIP DE GAS SUIC
                //if (!string.IsNullOrEmpty(strSalida) && SolicitarLectura == true)
                if (!string.IsNullOrEmpty(strSalida) && SolicitarLectura == true && strSalida.Length > 5)
                {
                    oInformacion.FechaConversion           = Convert.ToDateTime(oCampos[4].Substring(6, 2) + "/" + oCampos[4].Substring(4, 2) + "/" + oCampos[4].Substring(0, 4));
                    oInformacion.FechaProximoMantenimiento = Convert.ToDateTime(oCampos[6].Substring(6, 2) + "/" + oCampos[6].Substring(4, 2) + "/" + oCampos[6].Substring(0, 4));
                    oInformacion.Fecha    = Convert.ToDateTime(oCampos[6].Substring(6, 2) + "/" + oCampos[6].Substring(4, 2) + "/" + oCampos[6].Substring(0, 4)).ToString();
                    oInformacion.Placa    = oCampos[0];
                    oInformacion.Contrato = oCampos[1];
                    oInformacion.Numero   = 123456;
                    oInformacion.Rom      = ROM;
                    oInformacion.Serie    = "GS";

                    LogCategorias.Clear();
                    LogCategorias.Agregar("SeguimientoCodigoDTI");
                    LogPropiedades.Clear();
                    LogPropiedades.Agregar("Contrato", oCampos[1]);
                    LogPropiedades.Agregar("RomLeido", ROM);
                    LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                    LogPropiedades.Agregar("Serie", oInformacion.Serie);
                    LogPropiedades.Agregar("Placa", oInformacion.Placa);
                    LogPropiedades.Agregar("FechaConversion", oInformacion.FechaConversion.ToString());
                    LogPropiedades.Agregar("FechaProximoMantenimiento", oInformacion.FechaProximoMantenimiento.ToString());
                    POSstation.Fabrica.LogIt.Loguear("Datos Recuperados de la lectura del Chip de Gas", LogPropiedades, LogCategorias);
                }
                else
                {
                    //ESTO ES CUANDO SOLO SE TIENE INFORMACION DEL ROOM LO CUAL ME INDICA QUE ES UN CHIP DE GASOLINA
                    oInformacion.FechaConversion           = System.DateTime.Now;
                    oInformacion.FechaProximoMantenimiento = System.DateTime.Now;
                    oInformacion.Fecha = System.DateTime.Now.ToString();
                    oInformacion.Placa = string.Empty;// Vacia cuando solo es chip de gasolina
                    oInformacion.Rom   = ROM;
                    oInformacion.Serie = "GS";
                    LogCategorias.Clear();
                    LogCategorias.Agregar("SeguimientoCodigoDTI");
                    LogPropiedades.Clear();
                    LogPropiedades.Agregar("Contrato", oInformacion.Contrato);
                    LogPropiedades.Agregar("RomLeido", ROM);
                    LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                    LogPropiedades.Agregar("Serie", oInformacion.Serie);
                    LogPropiedades.Agregar("Placa", oInformacion.Placa);
                    LogPropiedades.Agregar("FechaConversion", oInformacion.FechaConversion.ToString());
                    LogPropiedades.Agregar("FechaProximoMantenimiento", oInformacion.FechaProximoMantenimiento.ToString());
                    POSstation.Fabrica.LogIt.Loguear("Datos Recuperados de la lectura del Chip Gasolina", LogPropiedades, LogCategorias);
                }
            }
            catch (Exception ex)
            {
                LogCategorias.Clear();
                LogCategorias.Agregar("SeguimientoCodigoDTI");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Mensaje", ex.Message);
                POSstation.Fabrica.LogIt.Loguear("Error recuperando ROM chip ExtraerInformacionPaginas", LogPropiedades, LogCategorias);
                throw ex;
            }
            return(oInformacion);
        }
Ejemplo n.º 4
0
        public InformacionVehiculo ExtraerInformacionPaginasImpresiones(byte[] Paginas)
        {
            LogCategorias.Clear();
            LogCategorias.Agregar("SeguimientoCodigoDTI");
            LogPropiedades.Clear();
            LogPropiedades.Agregar("Mensaje", "Se procede a iniciar la desencriptacion de  las paginas enviadas por la dti");
            LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
            LogPropiedades.Agregar("Numero Bytes Recibidos", Paginas.Length.ToString());
            POSstation.Fabrica.LogIt.Loguear("Logueando  el inicio de desencriptacion de  las paginas enviadas por la DTI", LogPropiedades, LogCategorias);

            string[] oCampos;
            string   ROM = string.Empty;

            byte[] BytesGasolina = new byte[128];

            InformacionVehiculo oInformacion = new InformacionVehiculo();
            String strSalida = "";
            int    j         = 0;

            try
            {
                j = 0;
                for (int i = 19; i < Paginas.Length; i++)
                {
                    BytesGasolina[j] = Paginas[i];//El arreglo Paginas me almacena la informacion de las paginas
                    j++;
                    if (i >= 140)
                    {
                        strSalida = "";
                    }
                }


                for (int b = 127; b >= 0; b--)
                {
                    if (b == 0)
                    {
                        BytesGasolina[b] = 0;
                    }
                    else
                    {
                        BytesGasolina[b] = BytesGasolina[b - 1];
                    }
                }
                POSstation.NormaColombiana.Metodos oEncripcion = new NormaColombiana.Metodos();
                strSalida = oEncripcion.Desencriptar2Fish(ref BytesGasolina);
                strSalida = LimpiarCadena(strSalida);
                oCampos   = strSalida.Split(Convert.ToChar(";"));



                LogCategorias.Clear();
                LogCategorias.Agregar("SeguimientoCodigoDTI");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Mensaje", "Depues de realizar  la desencriptacion de  las paginas enviadas por la dti");
                LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                LogPropiedades.Agregar("Descriptacion", strSalida);
                POSstation.Fabrica.LogIt.Loguear("Logueando  del final de la desencriptacion de  las paginas enviadas por la DTI", LogPropiedades, LogCategorias);

                //ESTO ES CUANDO SE TIENE INFORMACION DEL ROOM Y DEMAS DATOS DEL CHIP LO CUAL ME INDICA QUE ES UN CHIP DE GAS SUIC
                //if (!string.IsNullOrEmpty(strSalida) )
                if (!string.IsNullOrEmpty(strSalida) && strSalida.Length > 5)
                {
                    oInformacion.FechaConversion           = Convert.ToDateTime(oCampos[4].Substring(6, 2) + "/" + oCampos[4].Substring(4, 2) + "/" + oCampos[4].Substring(0, 4));
                    oInformacion.FechaProximoMantenimiento = Convert.ToDateTime(oCampos[6].Substring(6, 2) + "/" + oCampos[6].Substring(4, 2) + "/" + oCampos[6].Substring(0, 4));
                    oInformacion.Placa    = oCampos[0];
                    oInformacion.Contrato = ROM;
                    oInformacion.Numero   = 123456;
                    oInformacion.Rom      = oCampos[3];
                    oInformacion.Serie    = "GS";

                    LogCategorias.Clear();
                    LogCategorias.Agregar("SeguimientoCodigoDTI");
                    LogPropiedades.Clear();
                    LogPropiedades.Agregar("Contrato", oCampos[1]);
                    LogPropiedades.Agregar("Romleido", ROM);
                    LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                    LogPropiedades.Agregar("Serie", oInformacion.Serie);
                    LogPropiedades.Agregar("Placa", oInformacion.Placa);
                    LogPropiedades.Agregar("FechaConversion", oInformacion.FechaConversion.ToString());
                    LogPropiedades.Agregar("FechaProximoMantenimiento", oInformacion.FechaProximoMantenimiento.ToString());
                    POSstation.Fabrica.LogIt.Loguear("Datos Recuperados de la lectura del Chip de Gas", LogPropiedades, LogCategorias);
                }
                else
                {
                    byte [] Temporal = new byte[19]; //Aqui saco la informacion del Puerto y el ROM que vienen en los primeros 19 Bytes

                    j = 0;
                    for (int i = 0; i < 19; i++)
                    {
                        Temporal[j] = Paginas[i];
                        j++;
                    }

                    System.Text.UTF8Encoding datos = new System.Text.UTF8Encoding();//convierto a string los primeros 19 byets para sacar el rom y el puerto
                    string TempPuerto = datos.GetString(Temporal);

                    if (!string.IsNullOrEmpty(TempPuerto))
                    {
                        string[] Tmp = TempPuerto.Split('.');
                        ROM = Tmp[1];
                    }

                    //ESTO ES CUANDO SOLO SE TIENE INFORMACION DEL ROOM LO CUAL ME INDICA QUE ES UN CHIP DE GASOLINA
                    oInformacion.FechaConversion           = System.DateTime.Now;
                    oInformacion.FechaProximoMantenimiento = System.DateTime.Now;
                    oInformacion.Placa = string.Empty;// Vacia cuando solo es chip de gasolina
                    oInformacion.Rom   = ROM;
                    oInformacion.Serie = "GS";
                    LogCategorias.Clear();
                    LogCategorias.Agregar("SeguimientoCodigoDTI");
                    LogPropiedades.Clear();
                    LogPropiedades.Agregar("Contrato", oInformacion.Contrato);
                    LogPropiedades.Agregar("Romleido", ROM);
                    LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                    LogPropiedades.Agregar("Serie", oInformacion.Serie);
                    LogPropiedades.Agregar("Placa", oInformacion.Placa);
                    LogPropiedades.Agregar("FechaConversion", oInformacion.FechaConversion.ToString());
                    LogPropiedades.Agregar("FechaProximoMantenimiento", oInformacion.FechaProximoMantenimiento.ToString());
                    POSstation.Fabrica.LogIt.Loguear("Datos Recuperados de la lectura del Chip Gasolina", LogPropiedades, LogCategorias);
                }
            }
            catch (Exception ex)
            {
                LogCategorias.Clear();
                LogCategorias.Agregar("SeguimientoCodigoDTI");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Mensaje", ex.Message);
                POSstation.Fabrica.LogIt.Loguear("Error recuperando ROM chip ExtraerInformacionPaginas", LogPropiedades, LogCategorias);
                throw ex;
            }
            return(oInformacion);
        }
Ejemplo n.º 5
0
        public InformacionVehiculo DesencriptarBytesDti(bool EsLecturaChipObligatoria, byte cara, byte[] Paginas)
        {
            InformacionVehiculo oInformacion = new InformacionVehiculo();

            try
            {
                try
                {
                    System.Text.UTF8Encoding convercion = new System.Text.UTF8Encoding();
                    string strSalida     = null;
                    string identificador = "";
                    string PuertoDti     = null;

                    if (Paginas.Length > 0)
                    {
                        try
                        {
                            POSstation.EncriptacionDti.EncriptacionDti oEncripcion = new POSstation.EncriptacionDti.EncriptacionDti();

                            if (EsLecturaChipObligatoria)
                            {
                                byte[] ContenidoChip = new byte[128];
                                int    j             = 0;
                                int    i             = 0;
                                j = 0;
                                for (i = 19; i <= Paginas.Length - 1; i++)
                                {
                                    ContenidoChip[j] = Paginas[i];
                                    j = j + 1;
                                }

                                dynamic Temporal = new byte[19];

                                System.Text.UTF8Encoding datos = new System.Text.UTF8Encoding();

                                i = 0;
                                for (i = 0; i <= 18; i++)
                                {
                                    Temporal[i] = Paginas[i];
                                }

                                //convierto a string los primeros 19 byets para sacar el rom y el puerto
                                strSalida = datos.GetString(Temporal);
                                if (!string.IsNullOrEmpty(strSalida))
                                {
                                    string[] Tmp = strSalida.Split('.');
                                    PuertoDti     = Tmp[0];
                                    identificador = Tmp[1];
                                }

                                LogCategorias.Clear();
                                LogCategorias.Agregar("SeguimientoCodigoDTI");
                                LogPropiedades.Clear();
                                LogPropiedades.Agregar("Mensaje", "Se saca el Rom de la cabacera del LSIB4");
                                LogPropiedades.Agregar("Rom", identificador);
                                POSstation.Fabrica.LogIt.Loguear("DesencriptarDTI", LogPropiedades, LogCategorias);

                                oInformacion = oEncripcion.ExtraerInformacionPaginas(ContenidoChip, identificador, EsLecturaChipObligatoria);
                            }
                            else
                            {
                                dynamic Temporal = new byte[19];
                                System.Text.UTF8Encoding datos = new System.Text.UTF8Encoding();

                                for (int i = 0; i <= 18; i++)
                                {
                                    Temporal[i] = Paginas[i];
                                }

                                //convierto a string los primeros 19 byets para sacar el rom y el puerto
                                strSalida = datos.GetString(Temporal);
                                if (!string.IsNullOrEmpty(strSalida))
                                {
                                    string[] Tmp = strSalida.Split('.');
                                    PuertoDti     = Tmp[0];
                                    identificador = Tmp[1];
                                }
                                oInformacion = oEncripcion.ExtraerInformacionPaginas(Paginas, identificador, EsLecturaChipObligatoria);
                            }
                        }
                        catch (System.Exception ex)
                        {
                            LogCategorias.Clear();
                            LogCategorias.Agregar("SeguimientoCodigoDTI");
                            LogPropiedades.Clear();
                            LogPropiedades.Agregar("Mensaje", ex.Message);
                            POSstation.Fabrica.LogIt.Loguear("Error recuperando ROM chip ExtraerInformacionPaginas", LogPropiedades, LogCategorias);
                            throw ex;
                        }
                    }
                }
                catch (System.Exception ex)
                {
                    throw ex;
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            return(oInformacion);
        }