예제 #1
0
 public SdkNitgen()
 {
     _api          = new NBioAPI();
     _apiConversor = new NBioAPI.Export(_api);
     _apiBusca     = new NBioAPI.IndexSearch(_api);
     _apiBusca.InitEngine();
 }
        private DigitalTask Create(NBioAPI.Type.HFIR template, IEnumerable <Biometria> biometrias)
        {
            var nitgenMainApi   = new NBioAPI();
            var nitgenSearchApi = new NBioAPI.IndexSearch(nitgenMainApi);

            nitgenSearchApi.InitEngine();
            var nitgenConvertApi      = new NBioAPI.Export(nitgenMainApi);
            var contextoIdentificacao = BiometriaIndentificacaoContexto.Novo(nitgenSearchApi, nitgenConvertApi);

            contextoIdentificacao.TemplateLido = template;
            var cancellationToken = new CancellationTokenSource();
            var token             = cancellationToken.Token;

            foreach (var biometria in biometrias)
            {
                NBioAPI.Type.HFIR             handle;
                NBioAPI.IndexSearch.FP_INFO[] nitgenBiometria;
                nitgenConvertApi.FDxToNBioBSPEx(biometria.TemplateISO, (uint)biometria.TemplateISO.Length,
                                                NBioAPI.Type.MINCONV_DATA_TYPE.MINCONV_TYPE_ISO, NBioAPI.Type.FIR_PURPOSE.ENROLL_FOR_IDENTIFICATION_ONLY,
                                                out handle);

                nitgenSearchApi.AddFIR(handle, (uint)biometria.Id, out nitgenBiometria);
            }

            var task = new Task <int>((parametroState) =>
            {
                var contexto = parametroState as BiometriaIndentificacaoContexto;
                Console.WriteLine($"{contexto.Id} - Iniciado ");

                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }

                // Faz o Index Search
                var cbInfo = new NBioAPI.IndexSearch.CALLBACK_INFO_0();
                NBioAPI.IndexSearch.FP_INFO nitgenBiometria;
                var relogio = new Stopwatch();
                Console.WriteLine($"{contexto.Id} - Localizando biometria...");
                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}");

                if (token.IsCancellationRequested)
                {
                    token.ThrowIfCancellationRequested();
                }

                Console.WriteLine($"{contexto.Id} - Finalizado ");
                return((int)nitgenBiometria.ID);
            }, contextoIdentificacao, token);

            return(new DigitalTask(contextoIdentificacao.Id, task, cancellationToken));
        }
        public IdentificarBiometriaHandler()
        {
            _repositorio     = new DigitaisRepositorio();
            _mecanismosBusca = new List <NitgenBiometriaTask>();
            var nitgenMainApi = new NBioAPI();

            _mecanismoConfirmacao = new NBioAPI.IndexSearch(nitgenMainApi);
            _mecanismoConfirmacao.InitEngine();
            _dataUltimaBusca = DateTime.Now;
        }
 public ContextoParaIndentificacaoBiometrica(Guid id, NBioAPI mecanismoBusca, NBioAPI.IndexSearch mecanismoConfirmacao,
                                             NBioAPI.Export conversor, NBioAPI.Type.HFIR templateLido, IEnumerable <Biometria> biometrias)
 {
     Id                   = id;
     MecanismoBusca       = mecanismoBusca;
     TemplateLido         = templateLido;
     Biometrias           = biometrias;
     MecanismoConfirmacao = mecanismoConfirmacao;
     Conversor            = conversor;
 }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            filldrop();
        }

        m_NBioAPI     = new NBioAPI();
        m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
        //con.Open();
        table_creater();
    }
        private static void CarregarBiometriasParaNitgen(NBioAPI nitgenMainApi, NBioAPI.IndexSearch nitgenSearchApi, IEnumerable <Biometria> biometrias)
        {
            foreach (var biometria in biometrias)
            {
                var biometriaNitgen = new NBioAPI.Type.FIR_TEXTENCODE
                {
                    TextFIR = biometria.TemplateISOText
                };

                NBioAPI.IndexSearch.FP_INFO[] informacaoBiometria;
                nitgenSearchApi.AddFIR(biometriaNitgen, (uint)biometria.Id, out informacaoBiometria);
            }
        }
        public string Identificar(string Digital)
        {
            NBioAPI m_NBioAPI = new NBioAPI();

            NBioAPI.Type.FIR_TEXTENCODE m_textFIR = new NBioAPI.Type.FIR_TEXTENCODE();
            //NBioAPI.Type.HFIR NewFIR;
            NBioAPI.IndexSearch           m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
            NBioAPI.Type.HFIR             hCapturedFIR;
            NBioAPI.IndexSearch.FP_INFO[] fpInfo;


            NBioAPI.Type.WINDOW_OPTION m_WinOption = new NBioAPI.Type.WINDOW_OPTION();
            m_WinOption.WindowStyle = (uint)NBioAPI.Type.WINDOW_STYLE.NO_WELCOME;

            uint ID = 1;

            m_textFIR.TextFIR = Digital;
            m_IndexSearch.AddFIR(m_textFIR, ID, out fpInfo);

            uint dataCount;

            m_IndexSearch.GetDataCount(out dataCount);

            m_NBioAPI.OpenDevice(NBioAPI.Type.DEVICE_ID.AUTO);
            uint ret = m_NBioAPI.Capture(out hCapturedFIR);

            if (ret != NBioAPI.Error.NONE)
            {
                //DisplayErrorMsg(ret);
                m_NBioAPI.CloseDevice(NBioAPI.Type.DEVICE_ID.AUTO);
                m_NBioAPI.GetTextFIRFromHandle(hCapturedFIR, out m_textFIR, true);
            }

            m_NBioAPI.CloseDevice(NBioAPI.Type.DEVICE_ID.AUTO);


            NBioAPI.IndexSearch.FP_INFO         fpInfo2;
            NBioAPI.IndexSearch.CALLBACK_INFO_0 cbInfo0 = new NBioAPI.IndexSearch.CALLBACK_INFO_0();
            cbInfo0.CallBackFunction = new NBioAPI.IndexSearch.INDEXSEARCH_CALLBACK(myCallback);

            // Identify FIR to IndexSearch DB
            ret = m_IndexSearch.IdentifyData(hCapturedFIR, NBioAPI.Type.FIR_SECURITY_LEVEL.NORMAL, out fpInfo2, cbInfo0);
            if (ret != NBioAPI.Error.NONE)
            {
                //DisplayErrorMsg(ret);
                //return fpInfo2.ID.ToString();
                return(m_textFIR.TextFIR);
            }

            return("");
        }
        public static NitgenBiometriaTask Novo(IEnumerable <Biometria> biometrias)
        {
            var nitgenMainApi   = new NBioAPI();
            var nitgenSearchApi = new NBioAPI.IndexSearch(nitgenMainApi);
            var retorno         = nitgenSearchApi.InitEngine();

            if (retorno != NBioAPI.Error.NONE)
            {
                throw new Exception($"Erro inicializando mecanismo de busca. Erro: {retorno} - {NBioAPI.Error.GetErrorDescription(retorno)}");
            }

            CarregarBiometriasParaNitgen(nitgenMainApi, nitgenSearchApi, biometrias);
            return(new NitgenBiometriaTask(Guid.NewGuid(), nitgenSearchApi));
        }
예제 #9
0
        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //

            // Create NBioBSP object
            m_NBioAPI     = new NBioAPI();
            m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
        }
        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 interfaceBiometria()
        {
            //Inicializa leitor e ja pega uma conexão com o banco
            m_NBioAPI = new NBioAPI();
            m_OpenedDeviceID = NBioAPI.Type.DEVICE_ID.NONE;
            m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
            defineDispositivo();

            //Inicia o sistema de busca de digitais cadastradas.
            m_IndexSearch.InitEngine();

            //Inicializa o módulo para captura da Digital
            //Inicializa a variável da opção da janela, e define a janela de captura como invisivel
            m_WinOption = new NBioAPI.Type.WINDOW_OPTION();
            m_WinOption.WindowStyle = NBioAPI.Type.WINDOW_STYLE.INVISIBLE;
        }
        public CadastraDigitalForm()
        {
            InitializeComponent();

            //Inicializa leitor e ja pega uma conexão com o banco
            m_NBioAPI        = new NBioAPI();
            m_OpenedDeviceID = NBioAPI.Type.DEVICE_ID.NONE;
            m_IndexSearch    = new NBioAPI.IndexSearch(m_NBioAPI);
            SqlConnection conn = new ConnectionFactory().getConnection();

            //Inicializa o módulo para captura da Digital
            defineDispositivo();
            fechaDispositivo();
            abreDispositivo();
            cadastraDigital();
        }
        public interfaceBiometria()
        {
            //Inicializa leitor e ja pega uma conexão com o banco
            m_NBioAPI        = new NBioAPI();
            m_OpenedDeviceID = NBioAPI.Type.DEVICE_ID.NONE;
            m_IndexSearch    = new NBioAPI.IndexSearch(m_NBioAPI);
            defineDispositivo();

            //Inicia o sistema de busca de digitais cadastradas.
            m_IndexSearch.InitEngine();

            //Inicializa o módulo para captura da Digital
            //Inicializa a variável da opção da janela, e define a janela de captura como invisivel
            m_WinOption             = new NBioAPI.Type.WINDOW_OPTION();
            m_WinOption.WindowStyle = NBioAPI.Type.WINDOW_STYLE.INVISIBLE;
        }
        public CadastraDigitalForm()
        {
            InitializeComponent();

            //Inicializa leitor e ja pega uma conexão com o banco
            m_NBioAPI = new NBioAPI();
            m_OpenedDeviceID = NBioAPI.Type.DEVICE_ID.NONE;
            m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
            SqlConnection conn = new ConnectionFactory().getConnection();

            //Inicializa o módulo para captura da Digital
            defineDispositivo();
            fechaDispositivo();
            abreDispositivo();
            cadastraDigital();
        }
        public Byte[] Capturar(int id)
        {
            NBioAPI m_NBioAPI = new NBioAPI();

            NBioAPI.Type.INIT_INFO_0 initInfo0;
            uint ret = m_NBioAPI.GetInitInfo(out initInfo0);

            Console.WriteLine("passeiaqui");
            if (ret == NBioAPI.Error.NONE)
            {
                initInfo0.EnrollImageQuality = Convert.ToUInt32(50);
                initInfo0.VerifyImageQuality = Convert.ToUInt32(30);
                initInfo0.DefaultTimeout     = Convert.ToUInt32(10000);
                initInfo0.SecurityLevel      = (int)NBioAPI.Type.FIR_SECURITY_LEVEL.NORMAL - 1;
            }

            NBioAPI.IndexSearch         m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
            NBioAPI.Type.HFIR           hCapturedFIR;
            NBioAPI.Type.HFIR           AuditData = new NBioAPI.Type.HFIR();
            NBioAPI.Type.FIR_TEXTENCODE texto;
            // Get FIR data
            m_NBioAPI.OpenDevice(NBioAPI.Type.DEVICE_ID.AUTO);
            m_NBioAPI.Capture(NBioAPI.Type.FIR_PURPOSE.DENTIFY, out hCapturedFIR, -1, AuditData, null);
            //Console.WriteLine(Encoding.Default.GetString(getfingerImage(AuditData)));

            try
            {
                if (hCapturedFIR != null)
                {
                    return(getfingerImage(AuditData));
                }
                return(null);
            }
            catch (Exception ex)
            {
                throw new Exception("ERRO:... " + ex.Message);
            }
        }
        public string Enroll(int id)
        {
            NBioAPI m_NBioAPI = new NBioAPI();

            NBioAPI.Type.FIR_TEXTENCODE m_textFIR;
            NBioAPI.Type.HFIR           NewFIR;
            NBioAPI.IndexSearch         m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);


            NBioAPI.Type.WINDOW_OPTION m_WinOption = new NBioAPI.Type.WINDOW_OPTION();
            m_WinOption.WindowStyle = (uint)NBioAPI.Type.WINDOW_STYLE.NO_WELCOME;

            string Retorno = "";

            m_NBioAPI.OpenDevice(NBioAPI.Type.DEVICE_ID.AUTO);
            uint ret = m_NBioAPI.Enroll(out NewFIR, null);

            //uint ret = m_NBioAPI.Enroll(null, out NewFIR, null, NBioAPI.Type.TIMEOUT.DEFAULT, null, m_WinOption);


            if (ret != NBioAPI.Error.NONE)
            {
                m_NBioAPI.CloseDevice(NBioAPI.Type.DEVICE_ID.AUTO);
            }

            if (NewFIR != null)
            {
                m_NBioAPI.GetTextFIRFromHandle(NewFIR, out m_textFIR, true);


                if (m_textFIR.TextFIR != null)
                {
                    m_NBioAPI.CloseDevice(NBioAPI.Type.DEVICE_ID.AUTO);
                    Retorno = m_textFIR.TextFIR.ToString();
                }
            }
            return(Retorno);
        }
        public string Capturar(int id)
        {
            NBioAPI m_NBioAPI = new NBioAPI();

            NBioAPI.Type.INIT_INFO_0 initInfo0;
            uint ret = m_NBioAPI.GetInitInfo(out initInfo0);

            if (ret == NBioAPI.Error.NONE)
            {
                initInfo0.EnrollImageQuality = Convert.ToUInt32(50);
                initInfo0.VerifyImageQuality = Convert.ToUInt32(30);
                initInfo0.DefaultTimeout     = Convert.ToUInt32(10000);
                initInfo0.SecurityLevel      = (int)NBioAPI.Type.FIR_SECURITY_LEVEL.NORMAL - 1;
            }

            NBioAPI.IndexSearch         m_IndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
            NBioAPI.Type.HFIR           hCapturedFIR;
            NBioAPI.Type.FIR_TEXTENCODE texto;
            // Get FIR data
            m_NBioAPI.OpenDevice(NBioAPI.Type.DEVICE_ID.AUTO);
            m_NBioAPI.Capture(out hCapturedFIR);

            try
            {
                if (hCapturedFIR != null)
                {
                    m_NBioAPI.GetTextFIRFromHandle(hCapturedFIR, out texto, true);
                    return(texto.TextFIR);
                }
                return(null);
            }
            catch (Exception ex)
            {
                throw new Exception("ERRO:... " + ex.Message);
            }
        }
        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));
        }
예제 #19
0
        private void FrmPrincipal_Load(object sender, EventArgs e)
        {
            Tipo = ACESSO.PONTOCONTROLE.Classes.Registro.Tipo();
            if (Tipo == null)
            {
                FrmConfigura oFrm = new FrmConfigura();
                oFrm.ShowDialog();
            }
            else
            {
                if (MessageBox.Show("Deseja configurar a estação? ", ProductName, MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                {
                    FrmConfigura oFrm = new FrmConfigura();
                    oFrm.ShowDialog();
                }
            }
            try
            {
                PortaSirene = ACESSO.PONTOCONTROLE.Classes.Registro.PortaSirene();
                PortaSerial = ACESSO.PONTOCONTROLE.Classes.Registro.PortaSerial();
            }
            catch (Exception ex)
            {
                FrmConfigura oFrm = new FrmConfigura();
                oFrm.ShowDialog();
                PortaTranca = ACESSO.PONTOCONTROLE.Classes.Registro.PortaTranca();
                PortaSirene = ACESSO.PONTOCONTROLE.Classes.Registro.PortaSirene();
                PortaSerial = ACESSO.PONTOCONTROLE.Classes.Registro.PortaSerial();
            }

            CodigoPonto = ACESSO.PONTOCONTROLE.Classes.Registro.CodigoPonto();
            Tipo        = ACESSO.PONTOCONTROLE.Classes.Registro.Tipo();
            CPonto.CPontoClient oProxy = new CPonto.CPontoClient();
            oPonto = oProxy.SelecionaPKPontoControle(CodigoPonto, Tipo);
            if (Tipo == "E")
            {
                oListaEquipamentoPonto = oProxy.ListaEquipamentoPonto(CodigoPonto);
            }

            if (oListaEquipamentoPonto == null)
            {
                GbxEquipamento.Visible = false;
            }
            else
            {
                if (oListaEquipamentoPonto.Count() == 0)
                {
                    GbxEquipamento.Visible = false;
                }
                else
                {
                    int contador;


                    //PERCORRE OS EQUIPAMENTOS, VERIFICANDO SE TEM OBRIGATÓRIOS E RANDÔMICOS.
                    for (contador = 0; contador < oListaEquipamentoPonto.Count(); contador++)
                    {
                        if (oListaEquipamentoPonto[contador].EPObrigatorio != null)
                        {
                            if ((bool)oListaEquipamentoPonto[contador].EPObrigatorio)
                            {
                                ChkEquipObrigatorio.Checked = true;
                            }
                        }
                        if (oPonto.PoQtdVerificaEquip != null)
                        {
                            if (oPonto.PoQtdVerificaEquip > 0)
                            {
                                if ((bool)oListaEquipamentoPonto[contador].EPObrigatorio == null)
                                {
                                    ChkEquipRandomico.Checked = true;
                                }
                                else
                                {
                                    if ((bool)oListaEquipamentoPonto[contador].EPObrigatorio == false)
                                    {
                                        ChkEquipRandomico.Checked = true;
                                    }
                                }
                            }
                        }
                    }
                    //FIM DA VERIFICAÇÃO SE O PONTO DE CONTROLE POSSUI EQUIPAMENTOS ASSOCIADOS

                    if (ChkEquipRandomico.Checked)
                    {
                        OrdemVerificaRandomico = ListaRandomizada((int)oPonto.PoQtdMediaPessoas, (int)oPonto.PoQtdVerificaEquip);
                    }
                }
            }

            ChkPoBiometria.Checked  = oPonto.PoBiometria;
            ChkPoCartaoRFID.Checked = oPonto.PoCartaoRFID;
            ChkPoSenha.Checked      = oPonto.PoSenha;
            LblIdentificacao.Text   = oPonto.PoNome;
            if (oPonto.PoDisparaAlarme)
            {
                LimiteTentativaAcesso = (int)oPonto.PoTentativaIndevidaDisparaAlarme;
            }
            BtnLiberacaoForcada.Enabled = oPonto.PoPermiteLiberacaoForcada;

            SerialCartao.PortName = PortaSerial;

            if (ChkPoCartaoRFID.Checked)
            {
                //Abre a porta serial para receber o código do Cartão.
                SerialCartao.PortName = PortaSerial;
                SerialCartao.Close();
                try
                {
                    SerialCartao.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Confirgure a porta serial do leitor de cartão (" + ex.Message + ").");
                    FrmConfigura oFrm = new FrmConfigura();
                    oFrm.ShowDialog();

                    PortaSerial           = ACESSO.PONTOCONTROLE.Classes.Registro.PortaSerial();
                    SerialCartao.PortName = PortaSerial;
                    SerialCartao.Open();
                }
                SerialCartao.DiscardOutBuffer();
                SerialCartao.DiscardInBuffer();
                TimeCartao.Enabled = true;
            }
            else
            {
                m_NBioAPI = new NBioAPI();
                uint ret;
                oIndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
                ret          = oIndexSearch.InitEngine();
                if (ret != NBioAPI.Error.NONE)
                {
                    MsgErro(ret);
                }
                oIndexSearch.ClearDB();
                CPonto.HASHDIGITAL[] Lista = oProxy.ListaHash();
                foreach (CPonto.HASHDIGITAL oHash in Lista)
                {
                    NBioAPI.Type.FIR_TEXTENCODE oFir = new NBioAPI.Type.FIR_TEXTENCODE();
                    oFir.TextFIR = oHash.HaCredencialBiometricaTextual;
                    NBioAPI.IndexSearch.FP_INFO[] oInfo;
                    oIndexSearch.AddFIR(oFir, uint.Parse(oHash.HaCodigoUsuario.ToString()), out oInfo);
                }
                TimeSemCartao.Enabled = true;
            }
            oProxy.Close();
        }
 public static BiometriaIndentificacaoContexto Novo(NBioAPI.IndexSearch mecanismoBusca, NBioAPI.Export conversor)
 => new BiometriaIndentificacaoContexto(Guid.NewGuid(), mecanismoBusca, conversor);
 public BiometriaIndentificacaoContexto(Guid id, NBioAPI.IndexSearch mecanismoBusca, NBioAPI.Export conversor)
 {
     Id             = id;
     MecanismoBusca = mecanismoBusca;
     Conversor      = conversor;
 }
예제 #22
0
        private void TimeCartao_Tick(object sender, EventArgs e)
        {
            string MsgAdicional = "";

            if (SerialCartao.IsOpen == false)
            {
                SerialCartao.Open();
            }

            LblMsg.Text = "Passe o cartão de identificação CId_S no leitor";
            this.Refresh();

            if (SerialCartao.BytesToRead > 0)
            {
                TimeCartao.Enabled = false;
                string NumeroCartao = SerialCartao.ReadExisting().ToString().Substring(3, 5);
                SerialCartao.Close(); //Fecha a porta para não receber mais nada.
                CPonto.CPontoClient  oProxy = new CPonto.CPontoClient();
                CPonto.CARTAO        oCartao;
                CPonto.USUARIO       oUsuario = null;
                CPonto.CARTAOUSUARIO oCartaoUsuario;
                int CodigoUsuario;
                oCartao = oProxy.SelecionaCartao(out oCartaoUsuario, NumeroCartao);
                bool PossuiAcesso = false;
                if (oCartao == null)
                {
                    nTentativas += 1;
                    if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso)
                    {
                        AcionaSirene();
                    }
                    LblMsg.Text = "Cartão de identificação CId_S inválido ou não cadastrado no sistema. Entrar em contato com o departamento de Segurança Patrimonial.";
                }
                else
                {
                    if ((bool)oCartao.CrBloqueado)
                    {
                        if (MatTentou != oCartaoUsuario.CSCodigoUsuario)
                        {
                            nTentativas = 1;
                        }
                        else
                        {
                            nTentativas += 1;
                        }
                        if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso)
                        {
                            AcionaSirene();
                        }
                        CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario);
                        LblMsg.Text = "O cartão de identificação do usuário foi bloqueado pelo motivo: " + oCartao.CrMotivoBloqueio + ".";
                    }
                    else
                    {
                        try
                        {
                            PossuiAcesso = oProxy.PossuiPermissaoPonto(oCartaoUsuario.CSCodigoUsuario, CodigoPonto);
                        }
                        catch (Exception ex)
                        {
                            PossuiAcesso = false;
                            MsgAdicional = ex.Message;
                        }

                        if (PossuiAcesso)
                        {
                            if (oPonto.PoBiometria)
                            {
                                LblMsg.Text = "Coloque o dedo cadastrado no leitor biométrico da impressão digital.";
                                this.Refresh();
                                //Implementar o acesso biométrico
                                CPonto.HASHDIGITAL[] oListaHash = oProxy.SelecionaHashUsuario(oCartaoUsuario.CSCodigoUsuario);
                                m_NBioAPI = new NBioAPI();
                                uint ret;
                                oIndexSearch = new NBioAPI.IndexSearch(m_NBioAPI);
                                ret          = oIndexSearch.InitEngine();
                                if (ret != NBioAPI.Error.NONE)
                                {
                                    MsgErro(ret);
                                }
                                oIndexSearch.ClearDB();
                                foreach (CPonto.HASHDIGITAL oHash in oListaHash)
                                {
                                    NBioAPI.Type.FIR_TEXTENCODE oFir = new NBioAPI.Type.FIR_TEXTENCODE();
                                    oFir.TextFIR = oHash.HaCredencialBiometricaTextual;
                                    NBioAPI.IndexSearch.FP_INFO[] oInfo;
                                    oIndexSearch.AddFIR(oFir, uint.Parse(oHash.HaCodigo.ToString()), out oInfo);
                                }

                                if (AcessoBiometrico(out CodigoUsuario, oProxy, false))
                                {
                                    PossuiAcesso = true;
                                }
                                else
                                {
                                    PossuiAcesso = false;
                                }
                            }
                            if (oPonto.PoSenha)
                            {
                                //Acesso via senha de rede.

                                FrmAutenticaRede oFrm = new FrmAutenticaRede();
                                oFrm.ShowDialog();
                                if (oFrm.Autenticado)
                                {
                                    oUsuario = oFrm.Usuario;
                                    if (oUsuario.USCODIGO != oCartaoUsuario.CSCodigoUsuario)
                                    {
                                        PossuiAcesso = false;
                                        RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oUsuario.USCODIGO, DateTime.Parse(LblDataHora.Text), true);
                                        if (MatTentou != oUsuario.USCODIGO)
                                        {
                                            nTentativas = 1;
                                        }
                                        else
                                        {
                                            nTentativas += 1;
                                        }
                                        if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso)
                                        {
                                            AcionaSirene();
                                        }
                                        MatTentou = oUsuario.USCODIGO;
                                        CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario);
                                        LblMsg.Text = "O usuário que se autenticou é diferente do usuário a qual pertence o crachá.";
                                    }
                                }
                                else
                                {
                                    PossuiAcesso = false;
                                }
                            }

                            if (oUsuario == null)
                            {
                                oUsuario = oProxy.SelecionaUsuario(oCartaoUsuario.CSCodigoUsuario);
                            }

                            NumeroDia += 1;
                            if (VerificaEquipamentos(oProxy, oUsuario) == false)
                            {
                                CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario);
                                RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Now, true);
                                if (MatTentou != oCartaoUsuario.CSCodigoUsuario)
                                {
                                    nTentativas = 1;
                                }
                                else
                                {
                                    nTentativas += 1;
                                }
                                if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso)
                                {
                                    AcionaSirene();
                                }
                                MatTentou      = oCartaoUsuario.CSCodigoUsuario;
                                timer1.Enabled = true;
                                return;
                            }
                            else
                            {
                                PossuiAcesso = true;
                            }

                            if (PossuiAcesso)
                            {
                                //Registrar que o acesso foi autorizado e acionar a porta elétrica para liberação
                                LblDataHora.Text    = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                                PctSemSinal.Visible = false;
                                PctVerde.Visible    = true;
                                RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Parse(LblDataHora.Text), false);
                                CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario);
                                AcionaTranca();
                            }
                            else
                            {
                                CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario);
                                RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Parse(LblDataHora.Text), true);
                                if (MatTentou != oCartaoUsuario.CSCodigoUsuario)
                                {
                                    nTentativas = 1;
                                }
                                else
                                {
                                    nTentativas += 1;
                                }
                                if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso)
                                {
                                    AcionaSirene();
                                }
                                MatTentou   = oCartaoUsuario.CSCodigoUsuario;
                                LblMsg.Text = "O Acesso não foi autorizado.";
                            }
                        }
                        else
                        {
                            CarregaDadosUsuario(oCartaoUsuario.CSCodigoUsuario, oProxy, out oUsuario);
                            RegistrarAcesso(oProxy, oCartaoUsuario.CSCODIGO, oCartaoUsuario.CSCodigoUsuario, DateTime.Now, true);
                            if (MatTentou != oCartaoUsuario.CSCodigoUsuario)
                            {
                                nTentativas = 1;
                            }
                            else
                            {
                                nTentativas += 1;
                            }

                            if (LimiteTentativaAcesso > 0 && nTentativas > LimiteTentativaAcesso)
                            {
                                AcionaSirene();
                            }
                            MatTentou   = oCartaoUsuario.CSCodigoUsuario;
                            LblMsg.Text = "O Usuário não possui acesso ao ponto de controle PCAP_S. Entrar em contato com a segurança patrimonial." + MsgAdicional + ".";
                        }
                    }
                }
                oProxy.Close();

                //Libera o timer que limpa os dados e habilita novamente a leitura ou entaõ, libera o timer do cartao;
                timer1.Enabled = true;
                if (PossuiAcesso)
                {
                    PctVerde.Visible    = true;
                    PctVermelho.Visible = false;
                    PctAmarelo.Visible  = false;
                    PctSemSinal.Visible = false;
                }
                else
                {
                    PctVerde.Visible    = false;
                    PctVermelho.Visible = true;
                    PctAmarelo.Visible  = false;
                    PctSemSinal.Visible = false;
                }
            }
        }
 public ContextoParaIndentificacaoBiometrica(Guid id, NBioAPI.IndexSearch mecanismoBusca, NBioAPI.Type.HFIR templateLido)
 {
     Id             = id;
     MecanismoBusca = mecanismoBusca;
     TemplateLido   = templateLido;
 }
예제 #24
0
 public IdentificarBiometriaHandler()
 {
     _nitgenMainApi   = new NBioAPI();
     _nitgenSearchApi = new NBioAPI.IndexSearch(_nitgenMainApi);
     _nitgenSearchApi.InitEngine();
 }
 internal NitgenBiometriaTask(Guid id, NBioAPI.IndexSearch mecanismoBusca)
 {
     Id             = id;
     MecanismoBusca = mecanismoBusca;
 }