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