public Task <int> CriarTaskParaIdentificacaoBiometrica(NBioAPI.Type.HFIR template)
        {
            var contextoIdentificacao = new ContextoParaIndentificacaoBiometrica(Id, MecanismoBusca, template);

            CancellationSource = new CancellationTokenSource();
            var token = CancellationSource.Token;

            return(new Task <int>((parametroState) =>
            {
                var contexto = parametroState as ContextoParaIndentificacaoBiometrica;

                if (token.IsCancellationRequested)
                {
                    return 0;
                }

                var cbInfo = new NBioAPI.IndexSearch.CALLBACK_INFO_0();
                NBioAPI.IndexSearch.FP_INFO nitgenBiometria;
                var relogio = new Stopwatch();
                relogio.Start();

                var retorno = contexto.MecanismoBusca.IdentifyData(contexto.TemplateLido, NBioAPI.Type.FIR_SECURITY_LEVEL.HIGH,
                                                                   out nitgenBiometria, cbInfo);

                relogio.Stop();
                Console.WriteLine($"{contexto.Id} - Localizado {nitgenBiometria.ID} em {relogio.Elapsed.TotalSeconds}");

                if (token.IsCancellationRequested)
                {
                    return 0;
                }

                return (int)nitgenBiometria.ID;
            }, contextoIdentificacao, token));
        }
Exemplo n.º 2
0
        public Task <int> CriarTaskParaIdentificacaoBiometrica(byte[] template)
        {
            var contextoIdentificacao = new ContextoParaIndentificacaoBiometrica(Id, MecanismoBusca, template);

            CancellationSource = new CancellationTokenSource();
            var token = CancellationSource.Token;

            return(new Task <int>((parametroState) =>
            {
                var contexto = parametroState as ContextoParaIndentificacaoBiometrica;

                Console.WriteLine($"{contexto.Id} - Iniciando thread..");


                if (token.IsCancellationRequested)
                {
                    return 0;
                }

                var relogio = new Stopwatch();
                relogio.Start();
                contexto.MecanismoBusca.IdentifyUser(contexto.TemplateLido, 7);
                relogio.Stop();

                Console.WriteLine($"{contexto.Id} - Localizado {contexto.MecanismoBusca.UserID} em {relogio.Elapsed.TotalSeconds}");

                if (token.IsCancellationRequested)
                {
                    return 0;
                }

                return contexto.MecanismoBusca.UserID;
            }, contextoIdentificacao, token));
        }
Exemplo n.º 3
0
        public Task <int> CriarTaskParaIdentificacaoBiometrica(byte[] template, IEnumerable <Biometria> biometrias)
        {
            var contextoIdentificacao = new ContextoParaIndentificacaoBiometrica(Id, biometrias, template);

            CancellationSource = new CancellationTokenSource();
            var token = CancellationSource.Token;

            return(new Task <int>((parametroState) =>
            {
                try
                {
                    var contexto = parametroState as ContextoParaIndentificacaoBiometrica;
                    Console.WriteLine($"{DateTime.Now} - {contexto.Id} - Localizando em {contexto.Biometrias.Count()} biometrias...");

                    if (token.IsCancellationRequested)
                    {
                        return 0;
                    }

                    var nitgenMainApi = new NBioBSP();
                    IIndexSearch nitgenSearchApi = nitgenMainApi.IndexSearch;

                    foreach (var biometria in contexto.Biometrias)
                    {
                        nitgenSearchApi.AddFIR(biometria.TemplateFIR, biometria.Id);
                    }

                    Console.WriteLine($"{DateTime.Now} - {contexto.Id} - Iniciando identificação...");

                    var relogio = new Stopwatch();
                    relogio.Start();
                    nitgenSearchApi.IdentifyUser(template, 7);
                    relogio.Stop();

                    Console.WriteLine($"{DateTime.Now} - {contexto.Id} - Localizado {nitgenSearchApi.UserID} em {relogio.Elapsed.TotalSeconds}");
                    return nitgenSearchApi.UserID;

                    //if (nitgenSearchApi.UserID > 0 && nitgenSearchApi.ErrorCode == 0)
                    //{

                    //}

                    //Console.WriteLine($"ERRO NA IDENTIFICAÇÃO: {nitgenSearchApi.ErrorCode} - {nitgenSearchApi.ErrorDescription}");
                    //return 0;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return 0;
                }
            }, contextoIdentificacao, token));
        }
        public Task <int> CriarTaskParaIdentificacaoBiometrica(NBioAPI.Type.HFIR template, IEnumerable <Biometria> biometrias)
        {
            var contextoIdentificacao = new ContextoParaIndentificacaoBiometrica(Id, biometrias, template);

            CancellationSource = new CancellationTokenSource();
            var token = CancellationSource.Token;

            return(new Task <int>((parametroState) =>
            {
                try
                {
                    var contexto = parametroState as ContextoParaIndentificacaoBiometrica;
                    if (token.IsCancellationRequested)
                    {
                        return 0;
                    }

                    var nitgenMainApi = new NBioAPI();
                    var nitgenSearchApi = new NBioAPI.IndexSearch(nitgenMainApi);
                    nitgenSearchApi.InitEngine();
                    foreach (var biometria in contexto.Biometrias)
                    {
                        var biometriaNitgen = new NBioAPI.Type.FIR_TEXTENCODE {
                            TextFIR = biometria.TemplateISOText
                        };
                        NBioAPI.IndexSearch.FP_INFO[] informacaoBiometria;
                        nitgenSearchApi.AddFIR(biometriaNitgen, (uint)biometria.Id, out informacaoBiometria);
                    }

                    var cbInfo = new NBioAPI.IndexSearch.CALLBACK_INFO_0();
                    cbInfo.CallBackFunction = new NBioAPI.IndexSearch.INDEXSEARCH_CALLBACK(Callback);
                    NBioAPI.IndexSearch.FP_INFO nitgenBiometria;
                    var relogio = new Stopwatch();
                    relogio.Start();
                    var retorno = nitgenSearchApi.IdentifyData(contexto.TemplateLido, NBioAPI.Type.FIR_SECURITY_LEVEL.HIGH,
                                                               out nitgenBiometria, cbInfo);
                    relogio.Stop();
                    Console.WriteLine($"{contexto.Id} - Localizado {nitgenBiometria.ID} em {relogio.Elapsed.TotalSeconds}");

                    return (int)nitgenBiometria.ID;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return 0;
                }
            }, contextoIdentificacao, token));
        }
        public Task <int> CriarTaskParaIdentificacaoBiometrica(NBioAPI.Type.HFIR template, NBioAPI.IndexSearch mecanismoConfirmacao)
        {
            var contextoIdentificacao = new ContextoParaIndentificacaoBiometrica(Id, MecanismoBusca, mecanismoConfirmacao, Conversor, template, Biometrias);

            CancellationSource = new CancellationTokenSource();
            var token = CancellationSource.Token;

            return(new Task <int>((parametroState) =>
            {
                var contexto = parametroState as ContextoParaIndentificacaoBiometrica;

                if (token.IsCancellationRequested)
                {
                    return 0;
                }

                var encontrou = false;
                var relogio = new Stopwatch();
                relogio.Start();
                foreach (var biometria in contexto.Biometrias)
                {
                    if (token.IsCancellationRequested)
                    {
                        relogio.Stop();
                        Console.WriteLine($"{contexto.Id} - cancelado pois encontrado em outra thread {relogio.Elapsed.TotalSeconds}");
                        return 0;
                    }


                    var payload = new NBioAPI.Type.FIR_PAYLOAD();

                    NBioAPI.Type.HFIR handler;
                    contexto.Conversor.FDxToNBioBSPEx(biometria.TemplateISO, (uint)biometria.TemplateISO.Length, NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO,
                                                      NBioAPI.Type.FIR_PURPOSE.ENROLL_FOR_IDENTIFICATION_ONLY, out handler);

                    var retorno = contexto.MecanismoBusca.VerifyMatch(contexto.TemplateLido, handler, out encontrou, payload);
                    if (encontrou)
                    {
                        contexto.MecanismoConfirmacao.InitEngine();
                        NBioAPI.IndexSearch.FP_INFO[] informacaoBiometria;
                        var ret = contexto.MecanismoConfirmacao.AddFIR(handler, (uint)biometria.Id, out informacaoBiometria);

                        var cbInfo = new NBioAPI.IndexSearch.CALLBACK_INFO_0();
                        NBioAPI.IndexSearch.FP_INFO nitgenBiometria;
                        retorno = contexto.MecanismoConfirmacao.IdentifyData(contexto.TemplateLido, NBioAPI.Type.FIR_SECURITY_LEVEL.HIGH,
                                                                             out nitgenBiometria, cbInfo);

                        var idEncontrado = nitgenBiometria.ID;
                        contexto.MecanismoConfirmacao.RemoveUser((uint)biometria.Id);
                        if (idEncontrado > 0)
                        {
                            relogio.Stop();
                            Console.WriteLine($"{contexto.Id} - Localizado {biometria.Id} em {relogio.Elapsed.TotalSeconds}");
                            return (int)idEncontrado;
                        }
                    }
                }
                relogio.Stop();
                Console.WriteLine($"{contexto.Id} - Nenhuma biometria encontrada em {relogio.Elapsed.TotalSeconds}");
                return 0;
            }, contextoIdentificacao, token));
        }