private async void BtLeerTarjeta_Click(object sender, EventArgs e)
        {
            LectorTarjetas.MuestraMensajeLCD("Por favor, pase la tarjeta");

            CancellationTokenSource source = new CancellationTokenSource();

            source.CancelAfter(TimeSpan.FromSeconds(10)); // Timeout de 10 segundos
            Task <long> leeTarjeta = Task.Run(() => LectorTarjetas.LecturaTarjeta(source.Token), source.Token);

            btLeerTarjeta.IsEnabled = false;

            long numTarjeta = await leeTarjeta;

            source.Dispose();

            if (AccessHelper.ExisteTarjeta(numTarjeta))
            {
                tblNumTarjeta.Text = "Esta tarjeta ya está vinculada.";
                LectorTarjetas.LimpiaPantallaLCD();
                LectorTarjetas.MuestraMensajeLCD("Esta tarjeta ya está vinculada.");
                LectorTarjetas.TimerLimpiaPantallaLCD();
            }
            else if (numTarjeta != -1)
            {
                tblNumTarjeta.Text = numTarjeta.ToString();
                LectorTarjetas.LimpiaPantallaLCD();
                LectorTarjetas.MuestraMensajeLCD("Num Tarjeta: " + numTarjeta);
                LectorTarjetas.TimerLimpiaPantallaLCD();
            }
            else
            {
                tblNumTarjeta.Text = "No se ha podido leer la tarjeta.";
                LectorTarjetas.LimpiaPantallaLCD();
                LectorTarjetas.MuestraMensajeLCD("No se ha podido leer la tarjeta.");
                LectorTarjetas.TimerLimpiaPantallaLCD();
            }

            btLeerTarjeta.IsEnabled = true;
        }
예제 #2
0
        // Lee la tarjeta e introduce el tipo de registro correspondiente en la BD,
        // con la hora y el ID del personal.
        #region LecturaTarjetaRegistroHistorial
        private async void LecturaTarjetaRegistroHistorial(TipoRegistro tipoRegistro)
        {
            LectorTarjetas.MuestraMensajeLCD("Por favor, pase la tarjeta");

            CancellationTokenSource source = new CancellationTokenSource();

            source.CancelAfter(TimeSpan.FromSeconds(10)); // Timeout de 10 segundos
            Task <long> leeTarjeta = Task.Run(() => LectorTarjetas.LecturaTarjeta(source.Token), source.Token);

            btEntrada.IsEnabled         = false;
            btSalida.IsEnabled          = false;
            btDescansoEntrada.IsEnabled = false;
            btDescansoSalida.IsEnabled  = false;
            btComidaEntrada.IsEnabled   = false;
            btComidaSalida.IsEnabled    = false;

            long numTarjeta = await leeTarjeta;

            source.Dispose();

            // Inserta los datos del registro en la BD
            if (numTarjeta != -1)
            {
                AccessHelper.InsertaNuevoRegistroHistorial(numTarjeta, tipoRegistro);
#if DEBUG
                GlobalData.PrintDebug("SistemaFichaje.cs", "[" + DateTime.Now + "] Se ha leído la tarjeta con número:" + numTarjeta + ".\n");
#endif

                string nombre = AccessHelper.NombreDePersonalConIDTarjeta(numTarjeta), msg = "";

                if (nombre == "null")
                {
                    msg = String.Format("[{0:hh:mm:ss}] No se reconoce ID.", DateTime.Now);
                }
                else
                {
                    if (tipoRegistro == TipoRegistro.Entrada)
                    {
                        msg = String.Format("[{0:hh:mm:ss}] Entrada [{1}]", DateTime.Now, nombre);
                    }
                    else if (tipoRegistro == TipoRegistro.Salida)
                    {
                        msg = String.Format("[{0:hh:mm:ss}] Salida [{1}]", DateTime.Now, nombre);
                    }
                    else if (tipoRegistro == TipoRegistro.DescansoSalida)
                    {
                        msg = String.Format("[{0:hh:mm:ss}] Salida Descanso [{1}]", DateTime.Now, nombre);
                    }
                    else if (tipoRegistro == TipoRegistro.DescansoEntrada)
                    {
                        msg = String.Format("[{0:hh:mm:ss}] Entrada Descanso [{1}]", DateTime.Now, nombre);
                    }
                }
#if DEBUG
                GlobalData.PrintDebug("SistemaFichaje.cs", msg + "\n");
#endif
                LectorTarjetas.LimpiaPantallaLCD();
                LectorTarjetas.MuestraMensajeLCD(msg);
                LectorTarjetas.TimerLimpiaPantallaLCD();
            }
            else
            {
#if DEBUG
                GlobalData.PrintDebug("SistemaFichaje.cs", "[" + DateTime.Now + "] No se ha recibido ninguna tarjeta o el formato no es válido.");
#endif
                LectorTarjetas.LimpiaPantallaLCD();
                LectorTarjetas.MuestraMensajeLCD("No se reconoce ID");
                LectorTarjetas.TimerLimpiaPantallaLCD();
            }

            btEntrada.IsEnabled         = true;
            btSalida.IsEnabled          = true;
            btDescansoEntrada.IsEnabled = true;
            btDescansoSalida.IsEnabled  = true;
            btComidaEntrada.IsEnabled   = true;
            btComidaSalida.IsEnabled    = true;
        }