// 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}");
            }
        }
Exemplo n.º 2
0
        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();
        }