jueves, 27 de agosto de 2009

Utilizar lector de huellas en nuestras aplicaciones .net - Segunda parte

En esta entrada le mostraré la forma en la que pueden implementar el lector de huellas digitales (o dactilares) en nuestras aplicaciones .net.


El ejemplo esta hecho en C# con VS 2010, MySQL y la librería de Griaulle (fingerpint SDK 2009); si no recuerdan de donde obtener la librería, pueden consultarlo aquí. Se utilizó, también, el connector/net para enlazar a MySQL con C#.





Lo primero que debemos hacer es instalar el Griaulle Fingerprint SDK 2009, este ejemplo está hecho con la versión 2009 del SDK. Es importante recordar la ruta de la instalación.

Como segundo paso debemos configurar nuestra base de datos, ya que la información se almacenará en dicha base de datos, en el ejemplo realizado tenemos una base de datos llamada “finger” y una tabla llamada “data”, la tabla tiene 5 campos:
Id (int)
texto_asociado (text): en este campo almacenaremos un texto de referencia para identificar el registro
template (mediumblob): aquí almacenaremos el template extraído de la huella.
Imagen (mediumblob): este campo no se utiliza en este ejemplo
Calidad_template (int): sirve para almacenar la calidad del template extraido y almacenado en el campo “template”.


Una vez creado el proyecto en VS, el primer paso es agregar la referencia de la librería de Griaulle a nuestro proyecto, eso lo hacemos con un clic con el botón derecho en el explorador de soluciones (Solution Explorer), en la sección de referencias (references), del menú emergente seleccionamos: Agregar referencia (Add reference), posteriormente seleccionamos la pestaña Examinar (Browse) y tenemos que elegir el directorio de instalación del SDK (en este caso: C:\Program Files\Griaule\Fingerprint SDK 2009\bin\GriauleFingerprintLibrary.dll); realizamos los mismo pasos para el connector/net que nos servirá para la Base de Datos (la dirección en este caso es: C:\Program Files\MySQL\MySQL Connector Net 6.0.4\Assemblies\MySql.Data.dll). Ya que hemos agregado las referencias, podemos iniciar con nuestro proyecto.

En el ejemplo mostrado, hemos diseñado un formulario con 2 opciones:
Registrar: Inserta la información de la huella recién adquirida en la base de datos, junto con el texto asociado.

Identificar: Identifica la huella, comparando la huella recién extraida contra cada una de las huellas almacenadas en la base de datos.

Hace falta una opción importante: Verificar, pero es muy fácil de implementar.
Si no recuerdan lo que significa Identificar, Verificar o algún otro concepto, este es el momento perfecto para consultarlo en este articulo.


Al momento de utilizar el fingerprint SDK, lo que debemos hacer es declarar e inicializar un objeto del tipo FingerprintCore:
GriauleFingerprintLibrary.FingerprintCore core = New GriauleFingerprintLibrary.FingerprintCore();

Después, declaramos los manejadores de los eventos onStatus (se dispara cada vez que un lector de huellas es conectado o desconectado) y onImage (se dispara cada vez que una imagen es adquirida por algún lector):

core.onStatus += new GriauleFingerprintLibrary.StatusEventHandler(core_onStatus);
core.onImage += new GriauleFingerprintLibrary.ImageEventHandler(core_onImage);

Uno de los requisitos para poder utilizar la libreria es “inicializarla”, es decir, indicar que vamos a iniciar el uso de la librería:

core.Initialize();

Hecho esto, podemos indicar al lector que vamos a hacer uso de la captura de huellas:

core.CaptureInitialize();

--------------------------------
Texto agregado el 18/12/2009: Personalmente he optado por declarar los eventos y realizar las inicializaciones correspondientes en el evento load del formulario.
--------------------------------

Hasta este punto hemos iniciado la captura de huellas con nuestro lector y hemos definido la función que se ejecutará cada vez que una huella se adquiere del lector (con el evento onImage) y la función que se ejecuta cuando un lector es conectado o desconectado en nuestro equipo (con el evento onStatus).

En la función que se ejecuta cuando el lector es conectado al equipo, debemos indicarle a la librería que debe iniciar la captura de huellas con ese lector, esto lo hacemos de la siguiente manera:


void core_onStatus(object source, GriauleFingerprintLibrary.Events.StatusEventArgs se)
{
if (se.StatusEventType == GriauleFingerprintLibrary.Events.StatusEventType.SENSOR_PLUG)
{
core.StartCapture(source);
}
}

/*--------Añadido el 09 de Marzo del 2010------------*/

La función onImage que utilizamos en el ejemplo hace una comprobación de la calidad de la imagen obtenida del lector, si es de mala calidad se debe volver a capturar una huella, si es de calidad media se pregunta al usuario si desea continuar y si es de buena calidad se continúa sin ningún problem:

        void core_onImage(object source, GriauleFingerprintLibrary.Events.ImageEventArgs ie)
        {
            buttonOK.Enabled = groupBox1.Enabled = false;

            try
            {
                imagenHuella = ie.RawImage;
                core.Extract(imagenHuella, ref templateHuella); //  extraemos la informacion de la huella y almacenamos esa informacion en templateHuella (se tiene que pasar como referencia a la funcion)
               
                switch(templateHuella.Quality)
                {
                    case 0:     // en caso de que la huella sea de mala calidad, se tiene que volver a extraer la huella
                        labelCalidad.Text = "La huella es de mala calidad, vuelva a intentar";
                        return;
                   
                    case 1:     // si la huella es de calidad media, preguntamos si desean volver a extraerla
                        labelCalidad.Text = "Calidad media";
                        if (MessageBox.Show("la huella es de una calidad media, desea continuar?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
                            break;
                        return;                    

                    case 2:     // si la huella es de buena calidá, se procede con el programa
                        labelCalidad.Text = "Huella con buena calidad";
                        break;
                }

                buttonOK.Enabled = groupBox1.Enabled = true;
               
            }
            catch (System.Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
        }

/*-----------------Aquí termina lo añadido el 09 de Marzo del 2010----------------*/




La condición if() es para verificar que se ha conectado un lector (recuerden que también se ejecuta el evento onStatus cuando se desconecta un lector)

La instrucción core.StartCapture(source); inicia la captura con el lector recién conectado mediante el objeto source, que contiene los identificadores del lector conectado.

En este momento, si colocamos una huella en el lector, se disparará también el evento onImage, para poder manejar la huella, debemos extraer el template y almacenarlo en memoria para poder insertarlo en la base de datos, eso lo hacemos con la función Extract(…)

GriauleFingerprintLibrary.DataTypes.FingerprintRawImage imagenHuella;
imagenHuella = ie.RawImage;
core.Extract(imagenHuella, ref templateHuella);

en la función Extract(…), el parámetro imagenHuella es la imagen original de la huella adquirida y el parámetro templateHuella es el objeto donde se almacenará el template que se extraiga a partir de imagenHuella.

Ya que tenemos el template, estamos listos para insertar el registro en la base de datos, es importante que sea mediante parámetros, en el ejemplo hemos usado nuestra propia librería, por lo que la instrucción que usamos es la siguiente:

bd.InsertarRegistroParametrizado("INSERT INTO data (texto_asociado,template,calidad_template,imagen) VALUES('"
+ txtBxRegistrar.Text + "',@template," + templateHuella.Quality.ToString() + ",'')",
"@template", (object)templateHuella.Buffer);


Como requirimiento minimo se debe insertar el template de la huella y la calidad que tiene dicho template (se obtiene con la propiedad templateHuella.Quality

En el código disponible se puede observar cómo insertar registros con parámetros.

Hasta este momento tenemos tenemos al menos un registro en la base de datos, ahora podemos iniciar el proceso de identificación.

Para llevar a cabo el proceso de identificación es necesario recuperar cada uno de los registros existentes en nuestra base de datos para poder compararlos uno por uno. Para poder ir almacenando temporalmente los registros de la base de datos, debemos crear un objeto donde almacenemos el template

string consulta;
byte[] dataTemp; //nos permitirá almacenar temporalmente el template de la B.D.
GriauleFingerprintLibrary.DataTypes.FingerprintTemplate templateTemp;
int precision,calidad;

consulta = "select texto_asociado, template, calidad_template from data where 1=1";
MySql.Data.MySqlClient.MySqlDataReader rdr = bd.EjecutarConsulta(consulta);
//debemos preparar la libreria para la identificacion de huellas
core.IdentifyPrepare(templateHuella);

while (rdr.Read())
{
dataTemp = (byte[])rdr["template"]; //extraemos el template desde la B.D.
calidad = (int)rdr["calidad_template"]; //extraemos la calidad de ese template

/* Creamos un nuevo objeto del tipo temporal "FingerprintTemplate" y asignamos las propiedades del template que acabamos de extraer de la B.D.*/
templateTemp = new GriauleFingerprintLibrary.DataTypes.FingerprintTemplate();
templateTemp.Buffer = dataTemp;
templateTemp.Size = dataTemp.Length;
templateTemp.Quality = calidad;
if ((core.Identify(templateTemp, out precision))==1) //si el template cumple con los requisitos de presición
{
MessageBox.Show(rdr["texto_asociado"].ToString());
break;
}
}

En el código anterior, con el ciclo while(rdr.Read()){…} se va obteniendo cada uno de los registros de la base de datos uno por uno, dentro del ciclo asignamos la información del template en un arreglo de bytes, con la condición if(…) determinamos si el template de la base de datos coincide con el template recién extraido.

Cualquier duda, comentario o sugerencia (en especial sugerencias) sobre el código, no duden en dejar su comentario.
Tal ves les interese cómo detectar rostros en sus aplicaciones

151 comentarios:

  1. Gracias por la explicacion, me parece muy util, aunque hay lugares donde no se dice donde va el codigo (o al menos yo en lo particular no me ubico tal vez)

    El enlace de la descarga del codigo fuente que has explicado no funciona.

    Si pudieras subirlo a otro lugar de descargas se agradece.

    Saludos.

    ResponderEliminar
  2. hola sas que llegue a tu blog porque buscaba info para poder programar con un fingerprint y veo que tu tienes un codigo namas que el link para descargar el codigo ejemplo no jala, lo podrias subir de nuevo please?? xD

    ResponderEliminar
  3. Este último enlace si funcionó correctamente, pero con el fin de ayudar a todos a la vez, decidi quitar el enlace al código fuente, por lo que si tienen alguna duda pueden dejarla como comentario y con gusto les ayudaré, con esto todod podrán ver los avances.

    ResponderEliminar
    Respuestas
    1. ei disculpame...
      en mi aplicacion me genera es te error en esta linea de codigo

      core.Initialize();


      error -----------> GrFinger couldn't read the license file.(error -3)


      No tengo idea que se, si se supone que la licencia es de 30 dias, GRACIAS U,U

      Eliminar
  4. los manejadores de los eventos en donde van, he empleado otra libreria y solo he llegado a insertar la template en la BD pero ahora no se como sacarla para comparla, encontre este blog y aunque es diferente la libreria me gustaria implementarla, pero me he topado con que no salen estos manejadores, si pudieran ayudarme seria les agradeceria muchisimo

    ResponderEliminar
  5. Maribel:

    Los eventos personalmente los he declarado en el evento load del formulario.

    El evento onStatus se dispara cuando conectamos o desconectamos un lector
    y el evento onImage es cuando se adquiere una imagen

    ResponderEliminar
  6. Por favor necesito tu ayuda al momento de colocar los eventos en el load del formulario me da un error en: core.onStatus += new GriauleFingerprintLibrary.StatusEventHandler(core_onStatus); porque no estoy declaranado el core_onStatus, mi pregunta como es que tu le declaraste o a que estas haciendo referencia?... gracias

    ResponderEliminar
  7. anonimo:

    Te explico la que significa esto:
    core.onStatus += new GriauleFingerprintLibrary.StatusEventHandler(core_onStatus);

    "core" es el nombre de un objeto de tipo FingerprintCore, para hacer eso tienes que agregar la referencia de la libreria de Griaule a tu proyecto.
    "core.onStatus" indica que vamos a manejar el evento onStatus del objeto core y que la funcion que va a manejar ese evento es "core_onStatus", si estas desarrollando con Visual Studio puedes hacer ese codigo de forma automatica.

    tu funcion core_onStatus debe ser de tipo vacia y debe de aceptar un parametro de tipo "object" y otro de tipo "StatusEventArgs"

    void core_onStatus(object source, GriauleFingerprintLibrary.Events.StatusEventArgs se)
    {
    }

    ResponderEliminar
  8. Que ta amigo, oie , la line esta :

    bd.InsertarRegistroParametrizado("INSERT INTO data (texto_asociado,template,calidad_template,imagen) VALUES('"
    + txtBxRegistrar.Text + "',@template," + templateHuella.Quality.ToString() + ",'')",
    "@template", (object)templateHuella.Buffer);


    tendras el codigo de InsertarRegistroParametrizado ? tengo problemas al intertar ya el registro, solo me agrega System.Byte[].


    saludos atte Edgar V.

    ResponderEliminar
  9. anonimo:

    de casualidad encontre el codigo de la funcion:

    public int InsertarRegistroParametrizado(string sql,string nombreParametro, object parametro)
    {
    MySqlCommand comando = new MySqlCommand(sql, this.conexion);
    comando.Parameters.Add(new MySqlParameter(nombreParametro, parametro));
    int id = comando.ExecuteNonQuery();

    return id;
    }


    necesitas tener una conexion abierta con el servidor.

    ResponderEliminar
  10. Gracias... Muy bueno el tutorial...
    justo en necesitamos en mi empresa implementar el manejo de huella..

    Lo unico que no encuentro el link para bajar el codigo...

    cual es la url?

    ResponderEliminar
  11. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
  12. gmemo:

    Ademas de que perdi el dominio donde mantenia el codigo fuente, la idea es que las dudas que tengas las puedas comentar por este medio.

    Probablemente alguien mas tenga las mismas dudas.

    ;-)

    ResponderEliminar
  13. Hola

    Estoy desarrollando un sistema de huella digital para mi recidencia profesional pero en el momento en que corro el programa me sale un error en la libreria griauleFringerprintLibrery dice que es invalida.....quiciera saber si me podria ayudar o si tienes esta libreria que me la pueda pasar....


    de ante mano te lo agradesco mucho...:D.....

    ResponderEliminar
  14. Hola
    esta muy padre tu explicacion yo anteriormente habia descargado tu proyecto y esop me ayudado mucho para desarrollar mi proyecto de recidencia, pero tengo un error, no se si podrias ayudarme dice que la licencia del graulefingerprintLibrery no es valida no se si pudieras ayudarme o pasarme esa libreria.....

    de ante mano te lo agradesco mucho....:d

    ResponderEliminar
    Respuestas
    1. Hola Anonimo podras pasarme el proyecto que descargastes, yo estoy realizando un Control de Acceso de Entradas y Salidas de los Profesores. Pero me falta conectar el Lector. Por eso es que requiero de tu ayuda. Espero tu respuesta Gracias. Mi correo: ismael.leyva2@gmail.com

      Eliminar
    2. Hola Anonimo, Estoy realizando un Control de Acceso De Entrada y Salida del Personal Mediante Huella Digital, Podras pasar el proyecto que descargastes, yo quieria descargarlo pero pues quito el Linkc de Descarga. Me seria de gran ayuda el proyecto descargado. Mi correro: ismael.leyva2@gmail.com Gracias espero contar con tu apoyo.

      Eliminar
  15. Anonimo:

    La licencia es la de prueba que ofrece Griaulle en su página, si pudieras poner un poco mas de información sobre el error sería más fácil ayudarte.

    ResponderEliminar
  16. El error que me sale es el siguiente:

    No se puede cargar el archivo o ensamblado 'GrialueFingerprintLibrary', Version = 1.1.0.2,Culture=neutral,PublicKeyToken=0cd8a94f71f97144' ni una de sus dependencias. El sistema no puede hallar el archivo especificado.


    Ya descargue de la pag de Graule la version de prueba y renombre esa libreria pero no me la acepto...

    Agradesco tu ayuda.....y espero tu respuesta

    ResponderEliminar
  17. en mi blog: http://nomejodasporfavor.blogspot.com/ tengo un ejemplo con lector de huellas un poco parecido, pero con la versión 2007, tal vez puedan solucionar algunas de sus dudas.

    ResponderEliminar
  18. De antemano le doy gracias por el tiempo y por la disposición suya para enseñar, pero tengo una inquietud así usted ya lo halla aclarado en un comentario anterior pero no me quedo claro core_Onimage ya que no me deja avanzar

    ResponderEliminar
  19. analisis de objetos:

    conla libreria y con el lector de huellas microsoft puedes "controlar" el evento que se dispara al colocar un dedo y el lector obtiene una imagen (a ese evento se le llama onImage), lo declaras asi:

    GriauleFingerprintLibrary.ImageEventHandler(core_onImage);

    y cada vez que el lector obtenga una huella se va a ejecutar la funcion core_onImage, la cual contiene el código necesario. He actualizado la entrada y agregué esa función.

    ResponderEliminar
  20. Pueden poner el codigo completo, la verdad no me valida las huellas, algunas cosas esta muy ambiguas.

    gracias.

    ResponderEliminar
  21. SE VE QUE ESTA BIEN EL CODIGO , YO ESTOY IMPLEMENTANDO UN APLICATIVO DE LECTOR DE HUELLA, HE IMPLEMENTE EL CODIGO EN C# PERO LO QUE NO COMPRENDO EL PORQUE NO ENTRA A LOS EVENTOS CUANDO CONECTO EL LECTOR.. PORFA ALGUIEN ME PUEDE AYUDAR DE ANTEMANO SE LO AGRADESCO ...
    -----------DE JOSE

    ResponderEliminar
  22. hola oie soy cris yo tambien tengo que hacer el lector de huellas y tengo algunas dudas me puedes ayudar a entenderle?

    ResponderEliminar
  23. Anthony:
    Prueba los ejemplos que incluye el sdk, si los ejemplos funcionan bien entonces copia todas las librerias .dll del ejemplo en tu carpeta "bin/debug" o "bin/release".

    Cris:
    Con gusto podemos ayudarte, te recomiendo que leas la primera y la segunda parte del articulo, despues nos dices cuales son tus dudas y con gusto te ayudamos.

    ResponderEliminar
  24. Hola!!,estoy comenzando con esto y necesitaria hacer una aplicacion, para el control de ingreso de los empleados de varias sucursales, y lo que no me queda claro, es si la aplicacion tiene que estar instalada en cada sucursal(en la PC donde esta el lector) o puedo hacer una aplicacion centralizada para la captura de la informacion, no se que tipo de dato deja el lector, como veran estoy un poco perdida.

    Desde ya muchas gracias por la ayuda que me puedan brindar.
    Saludos,
    Noemi.

    ResponderEliminar
  25. Hola buen día.

    Primeramente un agradecimiento por el gran aporte que haces con este tutorial.

    Al igual que el compañero de arriba me aparece este error:

    No se puede cargar el archivo o ensamblado 'GriauleFingerprintLibrary, Version=1.1.0.2, Culture=neutral, PublicKeyToken=0cd8a94f71f97144' ni una de sus dependencias. Se ha intentado cargar un programa con un formato incorrecto.

    Ya busque muchas maneras de solucionarlo y no encuentro el porqué. Hasta he llegado a suponer que tal vez la libreria sea para x86 y estoy programando bajo un SO de x64, pero en verdad lo dudo. Espero que nos puedas ayudar.

    Nuevamente muchas gracias!

    ResponderEliminar
  26. Hace un momento publiqué una entrada en el blog acerca de un error común del otro compañero. (No se puede cargar el archivo o ensamblado 'GriauleFingerprintLibrary, Version=1.1.0.2, Culture=neutral, PublicKeyToken=0cd8a94f71f97144' ni una de sus dependencias. Se ha intentado cargar un programa con un formato incorrecto.)

    Como lo supuse, el problema era la plataforma de desarrollo que toma por defecto Visual Studio; Como la librería de Griaule está diseñada específicamente para x86, Visual Studio no puede generar proyectos para ambas plataformas, por tal motivo, uno debe indicarle al compilador que la aplicación será únicamente para x86. Explico:

    Nos vamos a las propiedades del proyecto, y en la ficha Generar (Build), en el apartado Destino de la plataforma (Platform target) seleccionamos x86.

    Con ésto, podemos utilizar la librería de Griaule.

    Espero que sirva. Muchas gracias!

    ResponderEliminar
  27. fernalx:

    -Muchas gracias por el aporte, muchos lo aprovecharán.

    Noemi:
    -Tal como lo veo puedes hacerlo de las dos formas, tener una aplicacion en la que captures la informacion de forma centralizada o aplicaciones cliente que te permitan registrar nuevos usuarios y sus respectivos datos, lo que tendrias que hacer en el último caso es mandar la informacion de las huellas que obtiene la libreria a tu servidor de base de datos (lo que obtienes es un arreglo de bytes, por eso se debe almacenar como dato binario en nuestra base de datos).

    Pd. Cualquier duda que tengas, no dudes en preguntar.

    ResponderEliminar
  28. hola. oie las funciones void core_onStatus(
    core_onimage(

    en que parte del formulario las colocaste? me marca error en VOID.

    de hecho ya las puse afuera, adentro..y no mas no. jaja..

    gracias°

    ResponderEliminar
  29. -Cris:

    Si pudieras poner el error seria mas facil, sin embargo en el evento load (doble click en el formulario) tienes que agregar las siguientes lineas:

    core.onStatus += new GriauleFingerprintLibrary.StatusEventHandler(core_onStatus);
    core.onImage += new GriauleFingerprintLibrary.ImageEventHandler(core_onImage);

    Pon atencion a que los nombres de las funciones son: core_onStatus y core_onImage. Si presionas la tecla tab el Visual Studio te va generando automaticamente el codigo, incluida la declaracion de la fucion.

    ResponderEliminar
  30. Alfonso muchas gracias por tu respuesta.
    Una pregunta mas: cuando una persona pasa el dedo por el lector, como se ejecuta la aplicacion para que el mismo vaya a buscar a la base de dato, hay que hacer una aplicacion residente para que lea esta informacion,y se ejecutan los eventos que mencionas en la explicacion??

    Muchas gracias por tu valiosa ayuda
    Noemi.

    ResponderEliminar
  31. -Noemi:

    No entiendo mucho tu pregunta, pero supongo que:

    Cuando pasas el dedo sobre el lector se ejecutan los eventos y las respectivas funciones, ya que obtienes el template (en dichas funciones) esa misma funcion puede leer la informacion desde la base de datos y comparar la informacion obtenida, no es necesaria otra aplicacion, a la misma aplicacion le puedes agregar la funcionalidad necesaria.

    Espero que te refieras a eso :D

    ResponderEliminar
  32. Gracias por la aportación, esá muy bien la explicacion para saber por donde tirar.

    Estoy echando un vistazo al manual de la SDK y me ha surgido una duda, no se si tú me puedes ayudar a aclararla: la SDK usa el FingerCap Driver USB q sustituye a los drivers de los propios dispositivos, y q es compatible con ciertos dispositivos. La duda es en los dispositivos soportados por la SKD hay algunos que sin embargo no son compatibles con el FingerCap USB, entonces no funcionarán las aplicaciones ocn esos dispositivos, o se puede implementar de la misma forma y usará los drivers del fabricante??

    un saludo y gracias!

    ResponderEliminar
  33. Miriam:

    Realmente los unicos lectores que he usado son los Microsoft, pero supongo que en ese caso se utilizan los drivers del propio fabricante. Si lo averiguas nos dices, jeje.

    ResponderEliminar
  34. Buenas tardes Alfonso, Baje el sdk de prueba y otro que disque esta listo para usarce, ya tengo todo el codigo, pero creo que la libreria no esta trabajando como dice, Ya que tengo entendido que el Procedimientos onStatus se genera cada vez que el Lector cambia de status, sea conectado o desconectado y el onImage cuando pones el dedo para ser escaneado.

    Ninguno de los eventos me los dispara, y ya tengo los procedimientos depurados, no me marca errores excepto cuando quiero inicializar el Lector, me dice que No Valid License Found. te comento donde puse cada uno de los codigos.

    la dclaracion del objeto core, la hice de forma general en el proyecto.

    declare las funciones de core_onStatus y core_onImage.

    los core.onStatus y core.onImage los declare en el load de la forma

    el core.CaptureInitialize() lo declare dentro de un boton

    el core.Initialize() en el boton2

    que me estara fallando? espero me puedas ayudar, necesito ayuda por fa.

    ResponderEliminar
  35. Hola que tal, la verdad esta explicacion me parece bastante bien y te quiero agradecer por tu aporte, tengo una pregunta yo tengo un lector de huella digital microsoft es ocmpatible con la libreria o que lectores son compatibles con esta libreria de grauilee.

    Muchas gracias.

    ResponderEliminar
  36. Francisco:

    no has intentado hacer la prueba de agregar la referencia a las librerias que se instalan con los ejemplos? tampoco has intentado ejecutar los ejemplos?.

    Yo tuve el mismo problema pero con la version anterior de la libreria, lo solucione hasta que consegui una licencia. Estas usando la version mas reciente?

    Under:
    si, el lector microsoft es compatible con esa libreria, tiene soporte para un gran numero de lectores. Puedes encontrar la lista de lectores compatibles en la pagina web (son muchos, no los conozcon todos, jeje)

    ResponderEliminar
  37. hola tengo un error en la siguiente linea estoy perdido y quisiera ver si puedes ayudarme gracias

    core.Extract(imagenHuella, ref Convert.templateHuella); // extraemos la informacion de la huella y almacenamos esa informacion en templateHuella (se tiene que pasar como referencia a la funcion)

    switch (templateHuella.Quality)

    ResponderEliminar
  38. ¿Los tipos de datos de MySQL mediumblob en MS SQL Server cuál sería?

    ResponderEliminar
  39. ALFREDO:
    con esas lineas extraemos la informacion que realmente nos interesa de la huella que obtuvimos, despues (con el switch) intentamos determinar si la calidad de la huella es buena, regular o mala. Si no pones un poco mas de informacion sobre tu error seria mas facil ayudarte.


    fernalx:
    me parece que es binary.

    ResponderEliminar
  40. core.Extract(imagenHuella, ref templateHuella);

    mi problema es qu eme sale un error en templateHuella me lo subraya con rojo y el error dice lo siguiente:

    "the name templateHuella does not exist in the current context"

    y a causa de este error me marca errores en todas las lineas en donde aparece templateHuella gracias por responder

    ResponderEliminar
  41. ALFREDO:

    El error se puede traducir como "el nombre templateHuella no existe en este contexto" y es que Visual Studio no sabe de donde sacaste esa palabra, lo mas comun es que no este declarado el objeto o que este declarado con otro nombre.

    intenta declararlo, si ya esta declarado, comprueba que el nombre de ambos objetos es el mismo, me parece que lo debes declarar como FingerprintTemplate.

    ResponderEliminar
  42. alfonso me pareces una persona muy capacitada y es por eso que acudo a ti para ver si me puedes ayudar,
    esque en la universidad necesito realizar un software que mediante un lector de huellas digitales reconozca y almacene estas y es por eso que te pido que si te es facil brindarme algunos tutoriales o algo de ayuda te estaria sumanete agradecido

    ResponderEliminar
  43. vagos:

    Claro que podemos ayudarte, en este mismo blog tengo dos publicaciones que hablan de eso, la duda que tengas, pregunta y con gusto te respondemos.

    ResponderEliminar
    Respuestas
    1. viejo necesito toda la ayuda posible del tema.
      por ejemplo q tipo de dato es imagenHuella ?
      templateHuella ? me podrias explicar?? porfavor
      mi correo es jhoicas@gmail.com

      Eliminar
  44. hola mi nombre es Manuel Velasco, he intentado probar este codigo en visual 2005, agregue las referencias, ya hice mi tabla en mysql, pero no me corre nada y en la funcion core_onStatus siempre me marca conectado el lector de huellas, aunque este desconectado, ayudame porfa quiza este haciendo algo mal

    ResponderEliminar
  45. hola soy manuel otra vez, ya me funciono, ya he podido insertar huellas en la base de datos, lo malo es que revisando la informacion en image todas son iguales y no se si esta bien pero todas son de 13 bytes, porfa echame la mano con esto

    ResponderEliminar
  46. manuel:

    perdon por contestar hasta ahorita, te comento:

    a mi me paso algo parecido, pero mi error era que no estaba insertando en la base de datos el arreglo de bytes que tiene la informacion de la huella, si no el objeto al que pertenecia ese arreglo, es decir:

    la proiedad Buffer de nuestro objeto templateHuella mantiene el arreglo de bytes y yo insertaba en la base de datos el objeto templateHuella, tienes que insertar de la siguiente forma:
    (object)templateHuella.Buffer y tiene que ser con parametros.

    Si no se soluciona, podrias ponernos el texto que se inserta? los 13 caracteres.

    ResponderEliminar
  47. BUEN DIA ALFONSO, OYE NO ENTIENDO QUE QUIERES DECIR CON ESO DE PARAMETROS, EXPLICAME PORFAS

    ResponderEliminar
  48. hola,estuve debugueando la aplicacion y ps encontre que lo que me esta insertando en la base es esto:

    Insert into huella (descripcion, imagen, calidadtemplate) values ('','System.Byte[]','1'), por eso eso es que son 13 bytes

    esto es lo que mando en mi codigo:

    query = "Insert into huella " +
    "(descripcion, imagen, calidadtemplate) values (" +
    "'" + textBox1.Text + "','" + (object)templateHuella.Buffer + "'," +
    "'" + templateHuella.Quality.ToString() + "')";

    porfas algo se me esta escapando, echame una mano

    ResponderEliminar
  49. Que tal,tambien ando con la aplicacion de huellas, pero cosa rara primera vez que veo que mandan a llamar esa libreria, puesto que en los ejemplo el que se agrega es el ActiveX GrFingerX.dll, de echo con este me ha dado algunos problemas, lo deja de reconocer el VS, o corre en mi maquina pero cuando lo instalo en una maquina para probar no extrae el template de la huella, otro problema es que se queda colgado el programa cuando se incia la libreria y salta el logo de trial de griaule.
    Crees que solo sea problema del ActiveX???
    mientras tanto probare con tu ejemplo...gracias :D

    ResponderEliminar
  50. Hola, tu aplicacion me es muy interesante, sin embargo aun no logro que corra debidamente. Quizas puedas enviarme el codigo fuente completo a mi correo, si no fuera mucha molestia, te agradeceria bastante.
    franja173@hotmail.com
    (Francisco Perez)

    ResponderEliminar
  51. manuel: tienes que utilizar 'parametros' puedes consultar la documentacion de mysql para usar 'comandos con parametros'

    kabra: no intentaste ejecutar los ejemplos?? ademas del activeX hay otra libreria que puedes utilizar, pero funciona un poco distinto.

    ResponderEliminar
  52. Hola, estoy realizando una aplicacion de control de huellas

    talves puedas ayudarme enviandome el codigo de tu sistema ,
    ya tengo el SDK FingerPrint 2009 de Griaule, mi vida depende d ello,POR FEVOR S.O.S S.O.S
    necesito guardar y verificar datos de huellas digitales
    ESTOY DESESPERADO Y NO SE QUE HACER
    TU BLOG ES UN OASIS EN EL DESIERTO,
    BUENO GRACIAS
    Y ESPERO TU RESPUESTA

    mi correo es: amigo.unico@hotmail.com

    ResponderEliminar
  53. HOLA ESCRIBO PARA AGRADECERTE LA AYUDA PRESTADA ME SIRVIO MUCHO, YA LOGRE QUE FUNCIONE, LO HICE CON PARAMETROS, AUNQUE SERIA BUENO AGREGAR EL CODIGO PARA RESOLVER TODAS LAS DUDAS, MUCHAS GRACIAS

    ResponderEliminar
  54. buenas, si en lugar del lector de huella digital de microsoft utilizo el U. are U. 4000b, podra ser reconocido por el Griaule? Gracias de antemano

    ResponderEliminar
  55. Oye disculpa no tendras el codigo de EjecutarConsulta, y si pudieras colocar el codigo completo de como te quedo, gracias por compartir tus conocimientos.

    ResponderEliminar
  56. Que tal, estoy utilizando un lector de huellas zk6000 y el sdk de griule. Mi problemas es que a la hora de crear el objeto

    GriauleFinger.FingerprintCore core = new GriauleFinger.printLibrary()

    Me marca un error, de que se esperaba una declarion.

    Solicito tu ayuda, gracias..

    ResponderEliminar
  57. necesito ayuda para crear el objeto de
    GriauleFingerprintLibrary.FingerprintCore objcore = New GriauleFingerprintLibrary.FingerprintCore()

    me marca un error de que se esperaba una declaracion

    ResponderEliminar
  58. Disculpa soy nuevo en esto de los biometricos y no le ntiendeo muy bien, podrias enviarme el proyecto para poder revisarlo? trabajo con un lector ZK6000. Gracias de antemano si accedes te dejo mi correo.

    jesus.santos.c@gmail.com

    ResponderEliminar
  59. Hola que tal alfonso tengo escasos dos dias para entregar un proyecto de logeo por huella digital espero nos podamos poner en contacto para que me puedas apoyar...
    mi correo hromeroes25@gmail.com
    De antemano Gracias!!!

    ResponderEliminar
  60. Oye solo una duda general como puedo publicar la imagen de templateHuella que es byte[] en un picturebox?

    ResponderEliminar
  61. mira queria rogarte de favor y me puedas mandar el ejemplito de la aplicacion den visual basic .net pork ya llevo tiempo intentando conectar el lector de huellas y no lo e conseguidoo te lo agradeceria bastante.. mi correo es: picxel0@gmail.com

    gracias de antemano

    ResponderEliminar
  62. hola una pregunta como declaro el nombre core me muestra como error que no se a declarado el nombre 'core'... gracias de antemano

    ResponderEliminar
  63. que funcionalidad tiene el object en
    public int InsertarRegistroParametrizado(string sql,string nombreParametro, object parametro)
    {
    MySqlCommand comando = new MySqlCommand(sql, this.conexion);
    comando.Parameters.Add(new MySqlParameter(nombreParametro, parametro));
    int id = comando.ExecuteNonQuery();

    return id;
    }

    ResponderEliminar
  64. Hola Gracias a este Blog me Funciono tenia que realizar una aplicacion para el control de entrada/salida de empleados y gracias a este post lo realice!!!
    cualquier pregunta
    juandavidosoriolegarda@gmail.com

    ResponderEliminar
  65. Hola, gracias por la explicación, la verdad muy útil, pero pudieras ayudarme a desarrollar un activex de reconocimiento es que necesito que vaya dentro de otra aplicación que no es visual basic aunque el desarrollo si es en visual basic 6. Por favor, ayudame. mi correo es gloria_tifany@hotmail.com, de antemano muchas gracias.

    ResponderEliminar
  66. Alfonso, tengo un problema aquí:
    core.Extract(imagenHuella, ref templateHuella);
    me dice que ref no se ha declarado, qué debo hacer?

    ResponderEliminar
  67. Hola ALfonso, tengo problemas en la siguiente parte:

    core.Extract(imagenHuella, ref templateHuella)
    sale un emnsaje que dice que ref no ha sido declarado, me peudes explicar qué hace ref?
    muchas gracias por tu ayuda

    ResponderEliminar
  68. Buenas, amigo, pueden publicar el link del codigo fuente o me lo pueden enviar por correo por favor contrerg@gmail.com

    ResponderEliminar
  69. Hola como estas, podrias colocar la url para bajarme el demo.. porfavor, gracias

    ResponderEliminar
  70. olle me podrias mandar el programa completo porfavor mi correo el alejandro.ce.aguilar@gmail.com

    ResponderEliminar
  71. podrias mandarme el programa completo

    ResponderEliminar
  72. Buen Dia Alfonso Jesus Flores Alvarado soy Jonathan Montaña de Bogota, Colombia y estoy realizando un programa para acoplarlo a un lector de huella, y me urge de tu ayuda, por que mi problema es que no tengo C# y no se como cambiar el codigo a .NET. Agradezco tu ayuda me urge de verdad....

    ResponderEliminar
  73. Ah! mi mail es jonathanyankee@hotmail.com.... gracias amigo!

    ResponderEliminar
  74. Man porfa tengo una confusion super grande me podrias ayudar que tipos de objetos son los que manejas en templateHuella y el de imagenHuella le mando con un picturebox pero me manda error en el caso de templateHuella y en el caso e imaenHuella le mando GriauleFingerprintLibrary.DataTypes.FingerprintRawImage como tipo de variable para mantener la imagen extraida ahora el problema es que estos tipos no cojen y me esta dando errores porfa pon un poco de detalles de los objeto que usas man gracias

    ResponderEliminar
  75. Hola Alfonso, si no es mucho pedir me podrias mandar el programa completo, stoy realizando un proyecto de la escuela utilizando huella, pero se tiene que implementar en un cluster, xfis mi correo es zulcar1001@gmail.com
    Gracias

    ResponderEliminar
  76. Saludos a todos,

    Como veran la fecha de este post es del 2009, ya no se donde deje el código, hay detalles que ya no recuerdo y con gusto podre responder lo que pueda.

    Les recomiendo ver el resto de los comentarios, hay varias preguntas respondidas.

    Gracias.

    ResponderEliminar
  77. Mil gracias Alfonso, con ayuda del codigo q subiste y el de mi catedraticos hicimos hasta donde se pudo, de todos modos mil gracias...

    ResponderEliminar
    Respuestas
    1. Tambien puedes checar los ejemplos que vienen en la web del fabricante, en esos ejemplos me basé para escribir este post.

      Eliminar
  78. la funciòn InsertarRegistroParametrizado me marca un error de An object reference is required for the non-static field, methos or property.

    que significa o què puedo hacer?

    Juan Jimènez

    ResponderEliminar
    Respuestas
    1. Te marca el objeto que tiene el error? me suena a que no estas inicializando el valor del objeto, es como que si lo tuvieras declarado pero nunca le asignas valor y tiene un valor NULL. Es como si tuvieras esto:

      string algo;
      MessageBox.Show(algo);

      en ese ejemplo la variable algo no tiene almacenado nada.

      Eliminar
  79. por favor podrias decirme que es templateHuella?? un picturebox?? un label?? o si es una clase me ayudas con el codigo? este es mi mail j.tenelema@hotmail.com es de suma urgencia, ayudame por favor

    ResponderEliminar
    Respuestas
    1. para lo de templateHuella te recomiendo leer todo el post (incluida la primera parte). PictureBox en un control que permite mostrar imágenes en formularios windows, Label es un control que permite mostrar texto en formularios windows.

      Creo que si le das un repaso a temas básicos de winforms lo entenderas un poco mas.

      Eliminar
    2. Creo que mas bien se refiere a que tipo de dato es no!?

      Eliminar
    3. Oye Alfonso realmente tu publicación y lo digo enserio me parece muy buena solo que tengo una infinidad de dudas mmm... Soy estudiante de la Carrera de Ing.Sistemas del Tecnológico de Nuevo Laredo. Yo estoy implementando la Biometrica en un proyecto en el cual tambien estoy aplicando WPF( Windows Presentation Fondation) y paginas web quisiera un poco mas de Informacion y abusando de tu amabilidad te dejo mi correo para ver si nos podemos poner en contacto, de antemano gracias!

      Regards!

      Christian Garcia

      Correo: cristian31o@hotmail.com ( la o es de oso no de 010)

      Eliminar
  80. hola me podrias pasar tu proyecto de esta conexión es que lo estoy haciendo con visual studio 2010 y con una conexión a postgresql, y ya hice todo tal cual y me manda muchos errores te dejo mi correo para ver si me lo puedes enviar joglezrlive.com.mx y gracias de antemano

    ResponderEliminar
    Respuestas
    1. Realmente ese código ya tiene bastante tiempo y lo he perdido, pero podemos ayudarte con los errores.

      Saludos!!!

      Eliminar
  81. oye me podrias pasar tu proyecto de esta conexion, es que estoy intentando hacerlo pero no me sale, estoy haciendo la conexion con prosgresql y el codigo de la sacer las huellas digitales no marca erroes y no logro corregirlos por favor no ... te dejo mi correo

    joglezr@live.com.mx

    y gracias de antemano

    ResponderEliminar
  82. Necesito un ejemplo pero en visual basic de como implementas esta parte porque no puedo pasar de ahi por favor gracias core.onStatus += new GriauleFingerprintLibrary.StatusEventHandler(core_onStatus);

    ResponderEliminar
    Respuestas
    1. Hola,

      la sintáxis en Visual Basic el manejo de eventos es un poco distinta.
      En este ejemplo se está diciendo que al momento de activarse el evento "onStatus" del objeto "core" se va a ejecutar el evento "core_onStatus".

      Eliminar
    2. Muchas gracias, ya solucione mi problema, en vb2010 con sql server 2008, ME costo pero lo consegui es un poco mas sencillo que tu codigo gracias

      Eliminar
  83. hola buenos dias oye no me podrias mandar todo el codigo de ejemplo esque me resulta un poco confuso... mi correo es antonio.pereda@grupored.com.mx de antemano muchas gracias que tengas buen dia..

    ResponderEliminar
    Respuestas
    1. saludos antonio,

      la verdad es que ya no tengo el código y creo que si tienen razón, no supe ordenar el código, sin embargo ya no tengo ese código y con gusto responderemos tus dudas.

      Eliminar
  84. que tal, estoy trabajando con algo similar, pero mi aplicacion necesita estar oculta para no interrumpiar al usuario en sus tareas diarias, explicando mejor, mi aplicacion la coloco en el system try y no he logrado que me detecte cuando colocan la huella en el lector, estoy trabajando con los sdk de digital persona y el lector es el Urea 4000B, agradecere me puedas ayudar mi correo es jcabs_3000@hotmail.com, he buscado por todos lados y no logro encontrar ninguna ayuda, gracias de antemano

    ResponderEliminar
    Respuestas
    1. Ya tienes los eventos adecuados (colocar un dedo, obtener huella, etc).

      primero intenta con una aplicación normal y posteriormente la pasas a segundo plano, para ir viendo los errores especificos para cuando la aplicación se encuentra en el System tray.

      Eliminar
  85. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  86. alguien me podria decir si se podria hacer en asp.net es que necesito una aplicacion web que contenga huellas digitales

    ResponderEliminar
    Respuestas
    1. La libreria viene con un activeX pero yo nunca lo intenté, en caso de que ese ActiveX funcione tu aplicación únicamente funcionaria con IE

      Eliminar
  87. hola disculpa tengo un problemon. en el trabajo me estan pidiendo que emplee el digital persona lector de huella digital y no tengo ni idea y lei tu codigo y esta bueno pero me marca errores, podrias pasarme por favor tu programa para ver si me funciona y poderlo adaptar a mi necesidad,,,, me sacarias d eun gran problemaaa soy nuevo apenas con .net... saludos y muchas gracias

    mi correo es oscardaniel_44_1@hotmail.com y operaza@diossa.com.mx

    agradeceria mucho tu ayuda....

    ResponderEliminar
    Respuestas
    1. disculpa pero perdí ese código. Espero encontrarlo pronto, cuando lo haga subiré las partes que han generado mas dudas para que todos puedan obtener provecho.

      Eliminar
  88. La libreria viene con un activeX pero yo nunca lo intenté, en caso de que ese ActiveX funcione tu aplicación únicamente funcionaria con IE

    ResponderEliminar
  89. ola Alfonso, Mi nombre es Hernan y soy estudiante de Ing de Sistemas, tengo un par de problemas en el código, te explico:

    //en void core_onImage(...)

    GriauleFingerprintLibrary.DataTypes.FingerprintTemplate templatehuella;
    GriauleFingerprintLibrary.DataTypes.FingerprintRawImage imagenHuella;
    imagenHuella= ie.RawImage;

    core.Extract(imagenHuella, ref templatehuella);

    //especificamente en core.extract... en templatehuella, se remarca de rojo y el error que da es el siguiente: Uso de la variable local no asignada 'templatehuella'

    supongo que este error es porque no se inicializa la variable templatehuella, asi como imagenHuella que se inicializa con ie.RawImage... el detalle es que no se con que valor inicializar templatehuella.

    el segundo error es en el Load del Formulario... en el siguiente codigo:

    core.Initialize();

    el error que me da es el siguiente: No valid license found.(error-4), supongo que tiene que ver con templatehuella y el error que te mencione anteriormente, espero tener prontas respuestas... gracias de antemano

    ResponderEliminar
  90. Saludos cordiales Alfonso gracias por compartir tu conocimiento, tengo el siguiente escenario.
    ¿Que pasaría si tengo dos lectores en un PC?
    ¿Es posible saber en que lector se produjo la lectura?
    Si la calidad de una imagen es mala ¿es posible hacer que el dipositivo haga un sonido?

    ResponderEliminar
  91. necesito toda la ayuda posible mi correo es jhoicas@gmail.com
    cualquier libro, doc, pdf, codigo guia mejor explicado es bienvenido. gracias

    ResponderEliminar
  92. Tenes algun ejemplo funcional del cual pueda guiarme?? no se donde mostrar la imagen y tengo la libreria agregada pero no me reconoce algunas cosas, tendre que agregar otras??

    ResponderEliminar
  93. esta libreria funciona para dispositivos digitalpersona?

    slds

    Orlando

    ResponderEliminar
  94. Buenas tardes amigo, mi pregunta es la siguiente.
    Es posible trabajar con esa librería en Visual Basic?

    ResponderEliminar
  95. olle tendras en codigo fuente? estoy haciendo una sistema en la escuela y me piden huellas y la verdad no se como hacer eso te dejo mi email skull_412 en h o t m a i l gracias

    ResponderEliminar
  96. Me podria colaborar pasandome el aplicativo, se lo agradeceria enormemente, y se seria de mucha ayuda, muchas gracias... mi correo es: bryan_12-d@hotmail.com

    ResponderEliminar
  97. ayudaaa...

    Compañero me podría pasar el aplicativo que muestra en el ejemplo? seria de mucha ayuda llevo un mes intentar hacer que funcione y me salen errores como este:

    core.Initialize();

    error ----> GrFinger couldn't read the license file.(error -3)


    gracias de antemando, si usted quiere estoy dispuesto a cancelar alguna cuota :(, pero necesito enlasar el aplicativo para implementarlo en mi empresa... muchas gracias

    ResponderEliminar
  98. Hola a todos porfa me podrian pasar el sdk de digital persona lo necesito para un trabajo de la u mi correo es fredy1432@hotmail.com

    ResponderEliminar
  99. Por favor me pueden enviar el proyecto a mi correo josfreisa@gmail.com

    Muchas gracias

    ResponderEliminar
  100. buena queria pedirte el favor si me puedes rotar el codigo o si pudieras hacer un videotutorial donde expliques todo paso a paso estaria muy agradecido mi correo es fgallego159@gmail.com

    ResponderEliminar
  101. Hola agradeceria que me pasaran el proyecto para poder estudiarlo mejor; no soy muy experto en VS y me salen muchos errores mi correo es jcamilo20@hotmail.com muchas gracias... ayuda!!

    ResponderEliminar
  102. Hola buen dia realize los pasos correctos lamenablemente tengo un problema con la libreria GrFinger.dll; realize la instalacion correctamente y sin problemas al correr la apliccion me salta el error sobre la libreria no la tengo registrada en las referencias COM y lamentablemente truena, estoy trabajando con windows 7 64.
    Alguien ya tuvo este problema y como lo solucionaron, seria de gran utilidad elpoder el enlaze de tu codigo de ejemplo gracias

    ResponderEliminar
    Respuestas
    1. Dejé de utilizar la libreria hace un par de años y en ese entonces no había soporte para 64 bits, lamentablemente la solución que implementé fue formatear e instalar windows para 32 bits en un procesador de 64 bits.
      Actualmente desconozco si ya hay soporte para 32 bits con esa versión o con alguna nueva versión de la libreria.

      Eliminar
  103. hola buenas noches alguien me podia pasar el proyecto ya que me salen muchos errores gracias

    jsirramejia@gmail.com

    ResponderEliminar
  104. Buenas Tardes... por favor me pueden pasar el proyecto, estoy implementando un control de acceso pero me salen muchos errores en el momento de la compilación, alguien me puede colaborar. Muchas gracias, mi correo es luisflbe987@hotmail.com

    ResponderEliminar
  105. hola que tal buenas tardes muy bueno tu blog. una pregunta sera posible correr esta aplicación con las librerias del lector DigitalPersona. yo tengo un proyecto ya listo que lee y extrae la huella el problema es que al momento de extraerla y compararla lo hace cuatro veces como la primera vez. este ejemplo le encontre enn un blog tambien y aun no he logrado hacer que la lectura sea un vez. seria genial si me puedieras decir si funciona con el DigitalPersona saludos

    ResponderEliminar
    Respuestas
    1. Yo hice las pruebas con un DigitalPersona. Ya intentaste correr el código paso a paso? tal vez el lector lanza el evento 4 veces.

      Eliminar
  106. Disculpa pero podrias subir el ejemplo a algun server o algo, para tenerlo, trate de compilarlo y me salieron miles de errores, igual modo te dejo mi mail: marquezbravo@gmail.com.

    de antemano gracias.

    y otra consulta sirve para los lectores de huellas Hamster IV y Plus?

    ResponderEliminar
    Respuestas
    1. Disculpa pero creo que lo perdí, ya no lo encuentro por ninguna parte

      Eliminar
  107. hola que tal Alfonso soy may me parece muy interesante tu blog, estoy tratando de hacer un sistema de huellas biometrico como proyecto escolar, no se si me podrias pasar tu proyecto.

    ResponderEliminar
    Respuestas
    1. Hola Maiiy, una disculpa, pero creo que lo perdí ya que no lo encuentro por ninguna parte.
      Saludos

      Eliminar
  108. Me podrían proporcionar el código que trae: bd.EjecutarConsulta(consulta); ya que me da el error -8

    ResponderEliminar
  109. Alguien podria darme un ejemplo para SQL la verdad no conozco mucho y ya me captura la imagen, pero no tengo idea de como guardarla y como consultarla

    ResponderEliminar
  110. Estoy implementando este codigo en WPF pero me genera errores con algunos metodos, en el metodo enviar imagen, el Bitmap no existe en WPF con seria la forma de enviar la imagen ?
    Bitmap bmp = new Bitmap(img, pictureBox1.Width, pictureBox1.Height);
    pictureBox1.Image = bmp;

    Tambien me genera inconveniente en el metodo DisplayImagen
    EnviarImagen(Bitmap.FromHbitmap(imag));

    ResponderEliminar
  111. hola estoy asiendo un proyecto escolar. mi pregunta es como hacer que se inicialice la libreria o mas bien quetengo que hacer. mi caso es este
    tengo un login en el cual el usuario tiene que logearse a traves de su huella para asi poder acceder al menu enn el menu estan las opciones altas, bajas y modificaciones. Pero cuando el usuario se logea y al momento de selesccionar altas, o cualquier otra opcion me dice "Initialization failed" ayudame porfa... te lo agradecere mucho....

    ResponderEliminar
  112. Como puedo hacer un proyecto leer DPI (documento de identificación guatemala) tengo la dll para hacer la conexion pero no se como leer los. Datos necesito ayuda porfavor

    ResponderEliminar
  113. Cuál es el serial del Fingerprint_SDK_2009_Installer ?
    Gracias
    Bendiciones

    ResponderEliminar
  114. Hola! Si te paso el correo serias tan amable de pasarme todo el código con las librerías ahí logro entenderlo? Muchísimas gracias. Bendiciones

    ResponderEliminar
  115. Hola! Si te paso el correo serias tan amable de pasarme todo el código con las librerías ahí logro entenderlo? Muchísimas gracias. Bendiciones

    ResponderEliminar
  116. Hola, mira, tengo un proyecto en mente para desarrollar aqui en Colombia.

    Quiero saber si tengo dos lectores de huellas, como identifico cada uno, es decir como se sabe de que lector se obtuvo la huella.

    Gracias y quedo en espera de alguna respuesta.

    www.relajatesoluciones.com "Soluciones informaticas a tu medida"

    ResponderEliminar
  117. Hola que tal:
    Alguien ha logrado realiza búsquedas de identificación (1:n) a la base de datos?
    Justamente es para un sistema policial hecho en C# con SQL Server.
    Agradezco cualquier tipo de ayuda.

    ResponderEliminar
  118. hola¡¡ estoy empezando a trabajar con fingerprint pero lo haré en una aplicación web alguien que me pase un ejemplo se los agradecería mucho, gracias!!

    ResponderEliminar
  119. hola¡¡ estoy empezando a trabajar con fingerprint pero lo haré en una aplicación web alguien que me pase un ejemplo se los agradecería mucho, gracias!!

    ResponderEliminar
  120. hola buenos dias, me marca este error, "GrFinger couldn't read the license file.(error -3)", al momento de correr el sistema. alguin sabe porque ???

    saludos...

    ResponderEliminar
  121. me parece muy bien el proyecto yo lo hice en java pero creo que la parte de comparar las huellas contra todas las de la base de datos no es tan optimo, ya que tardara mucho si la tabla donde se almacenan las huellas es muy grande, osea tenga muchos registros, claro que para practica de poner nuestras huellas y de nuestros compañeros pues no se nota, pero que tal sea para mas de mil usuarios? ese es mi caso ya que lo implementare en el centro de información de mi universidad.

    Podrías darme una alternativa la cual sea mas optima y automatizada para que haga algo así en la consulta...
    SELECT * FROM tabla_huella WHERE huella=huella_capturada;
    osea poder traer un valor de la huella que esta capturando el lector en este momento y buscarla en la base y así ahorrarse tiempo y recursos hardware?

    yo creo q seria mas optimo hacerlo así pues ya no tendrás que comparar con todas las huellas, ya que si existe ese valor e huella entra en la condición y si no pues solo salta al else, en cambio tu método busca todos los registros y compara uno por uno osea una búsqueda secuencial y en el mejor de los casos solo ara un recorrido por los registros de la base si es que la huella se encuentra en la primera fila de la base osea que esa huella sea el primer registro; pero el peor de los casos hará todo el recorrido por los registros y al no existir no encontrara nada.

    Espero y me puedas contestar y disculpa por la explicación tan larga,
    pero creo que esto les sera útil a todos incluso se que ya lo has pensado así.

    GRACIAS DE ANTE MANO Y TE DESEO ÉXITO POR FAVOR RESPONDE SEA LO QUE SEA PARA SABER. MUCHAS GRACIAS

    ResponderEliminar
  122. me parece muy bien el proyecto yo lo hice en java pero creo que la parte de comparar las huellas contra todas las de la base de datos no es tan optimo, ya que tardara mucho si la tabla donde se almacenan las huellas es muy grande, osea tenga muchos registros, claro que para practica de poner nuestras huellas y de nuestros compañeros pues no se nota, pero que tal sea para mas de mil usuarios? ese es mi caso ya que lo implementare en el centro de información de mi universidad.

    Podrías darme una alternativa la cual sea mas optima y automatizada para que haga algo así en la consulta...
    SELECT * FROM tabla_huella WHERE huella=huella_capturada;
    osea poder traer un valor de la huella que esta capturando el lector en este momento y buscarla en la base y así ahorrarse tiempo y recursos hardware?

    yo creo q seria mas optimo hacerlo así pues ya no tendrás que comparar con todas las huellas, ya que si existe ese valor e huella entra en la condición y si no pues solo salta al else, en cambio tu método busca todos los registros y compara uno por uno osea una búsqueda secuencial y en el mejor de los casos solo ara un recorrido por los registros de la base si es que la huella se encuentra en la primera fila de la base osea que esa huella sea el primer registro; pero el peor de los casos hará todo el recorrido por los registros y al no existir no encontrara nada.

    Espero y me puedas contestar y disculpa por la explicación tan larga,
    pero creo que esto les sera útil a todos incluso se que ya lo has pensado así.

    GRACIAS DE ANTE MANO Y TE DESEO ÉXITO POR FAVOR RESPONDE SEA LO QUE SEA PARA SABER. MUCHAS GRACIAS

    ResponderEliminar
  123. me parece muy bien el proyecto yo lo hice en java pero creo que la parte de comparar las huellas contra todas las de la base de datos no es tan optimo, ya que tardara mucho si la tabla donde se almacenan las huellas es muy grande, osea tenga muchos registros, claro que para practica de poner nuestras huellas y de nuestros compañeros pues no se nota, pero que tal sea para mas de mil usuarios? ese es mi caso ya que lo implementare en el centro de información de mi universidad.

    Podrías darme una alternativa la cual sea mas optima y automatizada para que haga algo así en la consulta...
    SELECT * FROM tabla_huella WHERE huella=huella_capturada;
    osea poder traer un valor de la huella que esta capturando el lector en este momento y buscarla en la base y así ahorrarse tiempo y recursos hardware?

    yo creo q seria mas optimo hacerlo así pues ya no tendrás que comparar con todas las huellas, ya que si existe ese valor e huella entra en la condición y si no pues solo salta al else, en cambio tu método busca todos los registros y compara uno por uno osea una búsqueda secuencial y en el mejor de los casos solo ara un recorrido por los registros de la base si es que la huella se encuentra en la primera fila de la base osea que esa huella sea el primer registro; pero el peor de los casos hará todo el recorrido por los registros y al no existir no encontrara nada.

    Espero y me puedas contestar y disculpa por la explicación tan larga,
    pero creo que esto les sera útil a todos incluso se que ya lo has pensado así.

    GRACIAS DE ANTE MANO Y TE DESEO ÉXITO POR FAVOR RESPONDE SEA LO QUE SEA PARA SABER. MUCHAS GRACIAS

    ResponderEliminar
  124. Hola, saludos a todos... una consulta que no he podido resolver.. porque todos los sdk cuando crear un Template piden que se ponga el dedo 3 o 4 veces ???? es posible que sea 1 o 2 o es un standar del scaner ??
    saludos

    ResponderEliminar
  125. "GrFinger couldn't read the license file.(error -3)
    este error a que se debe ? gracias

    ResponderEliminar
  126. GrFinger couldn't read the license file.(error -3
    Porque me esta dando este error al ejecutar el programa, Gracias

    ResponderEliminar