
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
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)
ResponderSuprimirEl enlace de la descarga del codigo fuente que has explicado no funciona.
Si pudieras subirlo a otro lugar de descargas se agradece.
Saludos.
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
ResponderSuprimirEste ú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.
ResponderSuprimirlos 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
ResponderSuprimirMaribel:
ResponderSuprimirLos 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
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
ResponderSuprimiranonimo:
ResponderSuprimirTe 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)
{
}
Que ta amigo, oie , la line esta :
ResponderSuprimirbd.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.
anonimo:
ResponderSuprimirde 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.
Gracias... Muy bueno el tutorial...
ResponderSuprimirjusto 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?
Este comentario ha sido eliminado por un administrador del blog.
ResponderSuprimirgmemo:
ResponderSuprimirAdemas 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.
;-)
Hola
ResponderSuprimirEstoy 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.....
Hola
ResponderSuprimiresta 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
Anonimo:
ResponderSuprimirLa 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.
El error que me sale es el siguiente:
ResponderSuprimirNo 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
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.
ResponderSuprimirDe 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
ResponderSuprimiranalisis de objetos:
ResponderSuprimirconla 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.
Pueden poner el codigo completo, la verdad no me valida las huellas, algunas cosas esta muy ambiguas.
ResponderSuprimirgracias.
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 ...
ResponderSuprimir-----------DE JOSE
hola oie soy cris yo tambien tengo que hacer el lector de huellas y tengo algunas dudas me puedes ayudar a entenderle?
ResponderSuprimirAnthony:
ResponderSuprimirPrueba 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.
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.
ResponderSuprimirDesde ya muchas gracias por la ayuda que me puedan brindar.
Saludos,
Noemi.
Hola buen día.
ResponderSuprimirPrimeramente 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!
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.)
ResponderSuprimirComo 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!
fernalx:
ResponderSuprimir-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.
hola. oie las funciones void core_onStatus(
ResponderSuprimircore_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°
-Cris:
ResponderSuprimirSi 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.
Alfonso muchas gracias por tu respuesta.
ResponderSuprimirUna 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.
-Noemi:
ResponderSuprimirNo 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
Gracias por la aportación, esá muy bien la explicacion para saber por donde tirar.
ResponderSuprimirEstoy 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!
Miriam:
ResponderSuprimirRealmente 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.
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.
ResponderSuprimirNinguno 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.
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.
ResponderSuprimirMuchas gracias.
Francisco:
ResponderSuprimirno 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)
hola tengo un error en la siguiente linea estoy perdido y quisiera ver si puedes ayudarme gracias
ResponderSuprimircore.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)
¿Los tipos de datos de MySQL mediumblob en MS SQL Server cuál sería?
ResponderSuprimirALFREDO:
ResponderSuprimircon 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.
core.Extract(imagenHuella, ref templateHuella);
ResponderSuprimirmi 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
ALFREDO:
ResponderSuprimirEl 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.
alfonso me pareces una persona muy capacitada y es por eso que acudo a ti para ver si me puedes ayudar,
ResponderSuprimiresque 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
vagos:
ResponderSuprimirClaro que podemos ayudarte, en este mismo blog tengo dos publicaciones que hablan de eso, la duda que tengas, pregunta y con gusto te respondemos.
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
ResponderSuprimirhola 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
ResponderSuprimirmanuel:
ResponderSuprimirperdon 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.
BUEN DIA ALFONSO, OYE NO ENTIENDO QUE QUIERES DECIR CON ESO DE PARAMETROS, EXPLICAME PORFAS
ResponderSuprimirhola,estuve debugueando la aplicacion y ps encontre que lo que me esta insertando en la base es esto:
ResponderSuprimirInsert 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
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.
ResponderSuprimirCrees que solo sea problema del ActiveX???
mientras tanto probare con tu ejemplo...gracias :D
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.
ResponderSuprimirfranja173@hotmail.com
(Francisco Perez)
manuel: tienes que utilizar 'parametros' puedes consultar la documentacion de mysql para usar 'comandos con parametros'
ResponderSuprimirkabra: no intentaste ejecutar los ejemplos?? ademas del activeX hay otra libreria que puedes utilizar, pero funciona un poco distinto.
Hola, estoy realizando una aplicacion de control de huellas
ResponderSuprimirtalves 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
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
ResponderSuprimirbuenas, 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
ResponderSuprimirOye disculpa no tendras el codigo de EjecutarConsulta, y si pudieras colocar el codigo completo de como te quedo, gracias por compartir tus conocimientos.
ResponderSuprimirQue tal, estoy utilizando un lector de huellas zk6000 y el sdk de griule. Mi problemas es que a la hora de crear el objeto
ResponderSuprimirGriauleFinger.FingerprintCore core = new GriauleFinger.printLibrary()
Me marca un error, de que se esperaba una declarion.
Solicito tu ayuda, gracias..
necesito ayuda para crear el objeto de
ResponderSuprimirGriauleFingerprintLibrary.FingerprintCore objcore = New GriauleFingerprintLibrary.FingerprintCore()
me marca un error de que se esperaba una declaracion
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.
ResponderSuprimirjesus.santos.c@gmail.com
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...
ResponderSuprimirmi correo hromeroes25@gmail.com
De antemano Gracias!!!
Oye solo una duda general como puedo publicar la imagen de templateHuella que es byte[] en un picturebox?
ResponderSuprimirmira 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
ResponderSuprimirgracias de antemano
hola una pregunta como declaro el nombre core me muestra como error que no se a declarado el nombre 'core'... gracias de antemano
ResponderSuprimirque funcionalidad tiene el object en
ResponderSuprimirpublic 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;
}
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!!!
ResponderSuprimircualquier pregunta
juandavidosoriolegarda@gmail.com
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.
ResponderSuprimirAlfonso, tengo un problema aquí:
ResponderSuprimircore.Extract(imagenHuella, ref templateHuella);
me dice que ref no se ha declarado, qué debo hacer?
Hola ALfonso, tengo problemas en la siguiente parte:
ResponderSuprimircore.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
Buenas, amigo, pueden publicar el link del codigo fuente o me lo pueden enviar por correo por favor contrerg@gmail.com
ResponderSuprimirHola como estas, podrias colocar la url para bajarme el demo.. porfavor, gracias
ResponderSuprimirolle me podrias mandar el programa completo porfavor mi correo el alejandro.ce.aguilar@gmail.com
ResponderSuprimirpodrias mandarme el programa completo
ResponderSuprimirBuen 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....
ResponderSuprimirAh! mi mail es jonathanyankee@hotmail.com.... gracias amigo!
ResponderSuprimirMan 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
ResponderSuprimirEste comentario ha sido eliminado por el autor.
ResponderSuprimirEste comentario ha sido eliminado por el autor.
ResponderSuprimirHola 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
ResponderSuprimirGracias
Saludos a todos,
ResponderSuprimirComo 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.
Mil gracias Alfonso, con ayuda del codigo q subiste y el de mi catedraticos hicimos hasta donde se pudo, de todos modos mil gracias...
ResponderSuprimirTambien puedes checar los ejemplos que vienen en la web del fabricante, en esos ejemplos me basé para escribir este post.
Suprimirla funciòn InsertarRegistroParametrizado me marca un error de An object reference is required for the non-static field, methos or property.
ResponderSuprimirque significa o què puedo hacer?
Juan Jimènez
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:
Suprimirstring algo;
MessageBox.Show(algo);
en ese ejemplo la variable algo no tiene almacenado nada.
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
ResponderSuprimirpara 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.
SuprimirCreo que si le das un repaso a temas básicos de winforms lo entenderas un poco mas.
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
ResponderSuprimiroye 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
ResponderSuprimirjoglezr@live.com.mx
y gracias de antemano
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);
ResponderSuprimirhola 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..
ResponderSuprimir