// Método para cambiar la hora de los captahuellas private static async Task ActualizarHora(AnvizManager av_manager, string ip, int id) { try { // Nos conectamos al dispositivo a través de su IP using (var device = await av_manager.Connect(ip)) { // Tratamos de cambiarle la hora try { // Tiempo actual del Servidor var now = DateTime.Now; // Tiempo actual del captahuellas var deviceTime = await device.GetDateTime(); // Realizamos una comprobación para saber si es necesario actualizar la hora del dispositivo if (Math.Abs((now - deviceTime).TotalSeconds) > 30) { // Actualizamos la hora del dispositivo await device.SetDateTime(now); // Escribimos en un archivo TXT "LogCambioDeHoraAutomatico" EscribirTXT($"Dispositivo {id} IP: {ip} -> La hora ha sido cambiada de manera exitosa."); } else { // Si no es necesario cambiarle la hora lo escribimos en el archivo TXT "LogCambioDeHoraAutomatico" EscribirTXT($"Dispositivo {id} IP: {ip} -> No hubo necesidad de cambiar la hora."); } } catch (Exception e) { // Capturamos la excepción si ocurre // Esto sucede cuando el dispositivo se enciende ya que en ese momento tiene un formato de hora que no es manejable y por ende salta una "Exception", con este código capturamos la excepción y le cambiamos la hora al dispositivo de forma segura. // Actualizamos la hora a pesar de la excepción await device.SetDateTime(DateTime.Now); // Escribimos en el archivo TXT "LogCambioDeHoraAutomatico" EscribirTXT($"Dispositivo {id} IP: {ip} -> Ha ocurrido un error, aún así la hora ha sido actualizada de manera exitosa: {e.Message}"); } } } catch (Exception e) { // Capturamos la excepción en caso de no poder conectarnos al captahuellas EscribirTXT($"Dispositivo {id} IP: {ip} -> Ha ocurrido un error: {e.Message}"); } }
static async Task Main(string[] args) { var manager = new AnvizManager(); #if true //authenticate with device password manager.ConnectionUser = "******"; manager.ConnectionPassword = "******"; manager.AuthenticateConnection = true; #endif #if true //false for client mode manager.Listen(); Console.WriteLine($"Listening on port 5010"); using (var device = await manager.Accept()) #else using (var device = await manager.Connect(DEVICE_HOST)) #endif { device.DevicePing += (s, e) => Console.WriteLine("Device Ping Received"); device.ReceivedPacket += (s, e) => Console.WriteLine("Received packet"); var id = await device.GetDeviceID(); var sn = await device.GetDeviceSN(); var type = await device.GetDeviceTypeCode(); var biotype = await device.GetDeviceBiometricType(); Console.WriteLine($"Connected to device {type} ID {id} SN {sn} BIO {biotype}"); if (id != DEVICE_ID) { await device.SetDeviceID(DEVICE_ID); } var now = DateTime.Now; var deviceTime = await device.GetDateTime(); Console.WriteLine($"Current device time is {deviceTime.ToShortDateString()} {deviceTime.ToShortTimeString()}"); if (Math.Abs((now - deviceTime).TotalSeconds) > 1) { await device.SetDateTime(now); Console.WriteLine("Updated device time according to local time"); } var net = await device.GetTcpParameters(); Console.WriteLine($"Device IP is {net.IP} {net.SubnetMask} {net.DefaultGateway} {net.MacAddress} mode is {net.TcpMode.ToString()}"); #if false //here you can change network parameters net.DefaultGateway = IPAddress.Parse("10.0.0.5"); await device.SetTCPParameters(net); #endif var basic = await device.GetBasicSettings(); Console.WriteLine($"FW {basic.Firmware} AdminPWD {basic.ManagementPassword} Vol {basic.Volume} DateFormat {basic.DateFormat} 24h {basic.Is24HourClock}"); #if false //here you can change basic parameters basic.Volume = Anviz.SDK.Responses.Volume.Off; basic.DateFormat = Anviz.SDK.Responses.DateFormat.DDMMYY; basic.Is24HourClock = true; await device.SetBasicSettings(basic); #endif var advanced = await device.GetAdvancedSettings(); Console.WriteLine($"FPPrecision {advanced.FPPrecision} Delay {advanced.RepeatAttendanceDelay}"); #if false //here you can change advanced parameters advanced.FPPrecision = Anviz.SDK.Responses.FPPrecision.Medium; advanced.RepeatAttendanceDelay = 1; await device.SetAdvancedSettings(advanced); #endif var stats = await device.GetDownloadInformation(); Console.WriteLine($"TotalUsers {stats.UserAmount} TotalRecords {stats.AllRecordAmount}"); var employees = await device.GetEmployeesData(); var dict = new Dictionary <ulong, string>(); foreach (var employee in employees) { dict.Add(employee.Id, employee.Name); Console.WriteLine($"Employee {employee.Id} -> {employee.Name} pwd {employee.Password} card {employee.Card} fp {string.Join(", ", employee.EnrolledFingerprints)}"); foreach (var f in employee.EnrolledFingerprints) { var fp = await device.GetFingerprintTemplate(employee.Id, f); Console.WriteLine($"-> {f} {Convert.ToBase64String(fp)}"); } await device.SetRecords(new Anviz.SDK.Responses.Record(employee.Id)); } if (!dict.ContainsValue("TEST")) { var employee = new Anviz.SDK.Responses.UserInfo(stats.UserAmount + 1, "TEST"); await device.SetEmployeesData(employee); Console.WriteLine("Created test user, begin fp enroll"); var fp = await device.EnrollFingerprint(employee.Id); await device.SetFingerprintTemplate(employee.Id, Anviz.SDK.Utils.Finger.RightIndex, fp); } var records = await device.DownloadRecords(true); //true to get only new records foreach (var rec in records) { Console.WriteLine($"Employee {dict[rec.UserCode]} at {rec.DateTime.ToLongDateString()} {rec.DateTime.ToLongTimeString()}"); } await device.ClearNewRecords(); } Console.ReadLine(); }