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; }
// 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; }