//Funcion que envia la informacion con la lectura del chip al Autorizador
        void EnviarDatosChip(object Parametro)
        {
            DatosLector obj = (DatosLector)Parametro;

            byte[] DatosLeidos = obj.ArregloBytes;
            try
            {
                if (DatosLeidos.Length == 147)
                {
                    ExtraerInformacionRecibidaDelDispositivoDTI(DatosLeidos);
                }
                else if (DatosLeidos.Length == 5)
                {
                    ExtraerInformacionRecibidaDelDispositivoDTI(DatosLeidos);
                }
                else
                {
                    throw new Exception("La lectura del chip no se hizo correctamente");
                }
            }
            catch (Exception ex)
            {
                LogCategorias.Clear();
                LogCategorias.Agregar("SeguimientoCodigoDTI");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Mensaje", ex.Message);
                POSstation.Fabrica.LogIt.Loguear("Error recuperando ROM chip", LogPropiedades, LogCategorias);
            }
        }
        private void PuertoTerminal_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
                string X2 = "";

                byte[]      ODatosChip;
                DatosLector OChipTemporal = new DatosLector();
                System.Threading.Thread.Sleep(800);
                Longitud   = PuertoTerminal.BytesToRead;
                ODatosChip = new byte[Longitud];
                PuertoTerminal.Read(ODatosChip, 0, Longitud);
                PuertoTerminal.DiscardInBuffer();
                PuertoTerminal.DiscardOutBuffer();
                for (int i = 0; i < ODatosChip.Length; i++)
                {
                    X2 += ODatosChip[i].ToString("X2");
                }

                LogCategorias.Clear();
                LogCategorias.Agregar("SeguimientoPuertoDTI");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Mensaje", "Byte recibidos datos recibidos del puerto " + Puerto + " Numero de Bytes: " + ODatosChip.Length.ToString());
                LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                LogPropiedades.Agregar("Bytes Recibidos", X2);
                POSstation.Fabrica.LogIt.Loguear("Logueado PuertoTerminal_DataReceived DTI", LogPropiedades, LogCategorias);


                if (ODatosChip.Length == 5)
                {
                    LogCategorias.Clear();
                    LogCategorias.Agregar("SeguimientoPuertoDTI");
                    LogPropiedades.Clear();
                    LogPropiedades.Agregar("Mensaje", "Desconexion" + Puerto + " Numero de Bytes: " + ODatosChip.Length.ToString());
                    LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                    LogPropiedades.Agregar("Bytes Recibidos", X2);
                    POSstation.Fabrica.LogIt.Loguear("Logueado PuertoTerminal_DataReceived DTI", LogPropiedades, LogCategorias);


                    //OChipTemporal.ArregloBytes = ODatosChip;
                    //System.Threading.ParameterizedThreadStart Parametro = new ParameterizedThreadStart(EnviarDatosChip);
                    //System.Threading.Thread Hilo = new System.Threading.Thread(Parametro);
                    //Hilo.Start(OChipTemporal);
                    //Hilo.Join();
                }
                else if (ODatosChip.Length == 147)
                {
                    LogCategorias.Clear();
                    LogCategorias.Agregar("SeguimientoPuertoDTI");
                    LogPropiedades.Clear();
                    LogPropiedades.Agregar("Mensaje", "Lectura Correcta" + Puerto + " Numero de Bytes: " + ODatosChip.Length.ToString());
                    LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                    LogPropiedades.Agregar("Bytes Recibidos", X2);
                    POSstation.Fabrica.LogIt.Loguear("Logueado PuertoTerminal_DataReceived DTI", LogPropiedades, LogCategorias);


                    //OChipTemporal.ArregloBytes = ODatosChip;
                    //System.Threading.ParameterizedThreadStart Parametro = new ParameterizedThreadStart(EnviarDatosChip);
                    //System.Threading.Thread Hilo = new System.Threading.Thread(Parametro);
                    //Hilo.Start(OChipTemporal);
                    //Hilo.Join();
                }
                else
                {
                    if (ODatosChip.Length >= 2)
                    {
                        LogCategorias.Clear();
                        LogCategorias.Agregar("SeguimientoPuertoDTI");
                        LogPropiedades.Clear();
                        LogPropiedades.Agregar("Mensaje", "Los bytes de la lectura del chip no esta completos Reintento");
                        LogPropiedades.Agregar("Fecha", System.DateTime.Now.ToString());
                        LogPropiedades.Agregar("Bytes Recibidos", X2);
                        LogPropiedades.Agregar("Bytes Length", ODatosChip.Length.ToString());
                        POSstation.Fabrica.LogIt.Loguear("Logueado PuertoTerminal_DataReceived DTI", LogPropiedades, LogCategorias);
                        Byte[] Lector = new Byte[5] {
                            0x49, 0x3F, ODatosChip[1], 0x15, 0x7E
                        };
                        System.Threading.Thread.Sleep(1000);
                        PuertoTerminal.Write(Lector, 0, Lector.Length);
                        System.Threading.Thread.Sleep(1000);
                    }
                }
            }
            catch (Exception ex)
            {
                LogCategorias.Clear();
                LogCategorias.Agregar("SeguimientoCodigoDTI");
                LogPropiedades.Clear();
                LogPropiedades.Agregar("Mensaje", ex.Message);
                POSstation.Fabrica.LogIt.Loguear("Error recuperando ROM chip PuertoTerminal_DataReceived", LogPropiedades, LogCategorias);
            }
        }