miércoles, 14 de diciembre de 2011

Programacion De 4500 Fingerprint Reader Digital Persona En Java Con Windows 7 -Parte 3 FINAL

PROGRAMACION DE 4500 FINGERPRINT READER DIGITAL PERSONA EN JAVA CON WINDOWS 7-PARTE3 
FINAL



Para todos aquellos que con tanta paciencia estuvieron pendientes del blog y de esta entrada, espero culminar el año entregándoles la parte final de la programación del lector digital persona 4500, es por ello que en esta ultima parte, centraremos la atención de programar las huellas capturada desde el lector hacia o dirigida a una base de datos; como base  proyecto que en los que necesitemos estos métodos de guardar, verificar y verificar.
Por otra parte recordamos que en la parte 2, habíamos quedado hasta como mostrar en el en el panel de JFrame la huella dactilar capturada por el lector, como además una área de texto que nos permitía visualizar los distintos eventos que habíamos declarado para el lector, y también la cantidad de huellas dactilares necesarias para construir un template de una huella con el fin de que en esta parte, podamos guardarla, verificarla e identificarla.
Continuando con esta última parte lo que realizaremos será; 
1. Crearemos un nuevo paquete, que llamaremos BD, y dentro de este creamos una clase llamada ConexionBD.

2. Luego en la clase creada declararemos lo siguiente:
• Los imports necesarios para establecer la conexión respectiva con la BD, que hemos creado en MySQL, en la primera parte de este tutorial.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

No importa que marque que los import aun no esten usados, ya que esto lógico porque aun no hemos declarado ninguna sentecia o varible que use estos imports.
• Declaremos estas variables después de la clase principal, que nos permitaran contener los valores de la conexión de la BD, el servidor, user, password, etc.
Hay que recordar que los valores de estas variables pueden cambiar según la lógica de programación de cada uno, y además de cómo tengan configurado Mysql en su equipo. Por defecto estos son los valores con lo que la mayoría intalan mysql como además el nombre de la BD que habíamos creado en la primera parte.

public  String puerto="3306";
public  String nomservidor="localhost";
public  String db="huellas";
public  String user="root";
public  String pass="root";
Connection conn=null;
• Crearemos una función o método llamado conectar y otro desconectar, el cual contendrá los parámetros de conexión y desconexión con la BD, como además un try catch que permitirá capturar las excepciones que puedan presentar a la hora de intentar conectar con la BD.

public Connection conectar(){
    try{
    String ruta="jdbc:mysql://";
    String servidor=nomservidor+":"+puerto+"/";
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(ruta+servidor+db,user,pass);

    if (conn!=null){
    System.out.println("Conección a base de datos listo...");
    }
    else if (conn==null)
    {
    throw new SQLException();
    }
    }catch(SQLException e){
        JOptionPane.showMessageDialog(null, e.getMessage());
    } catch (ClassNotFoundException e) {
        JOptionPane.showMessageDialog(null, "Se produjo el siguiente error: "+e.getMessage());
    }catch (NullPointerException e){
        JOptionPane.showMessageDialog(null, "Se produjo el siguiente error: "+e.getMessage());
    }finally{
    return conn;
    }
}

public void desconectar(){
    conn = null;
    System.out.println("Desconexion a base de datos listo...");
}



3. Luego de haber creado la clase de ConexionBD, volvemos a la vista fuente del jframe principal, e importamos el import que me permitara ver los procedimientos de la clase conexionBD.


También declaramos un constructor que me permitirá llamar una nueva intancia de la clase ConexionBD.


4. Ahora nos centraremos en crear cada método, para guardar, verificar e identificar la huella dactilar capturada.
•  Así que empezamos creando el método de guardarHuella.
 
  /*
   * Guarda los datos de la huella digital actual en la base de datos
   */
 
   public void guardarHuella(){
    //Obtiene los datos del template de la huella actual
    ByteArrayInputStream datosHuella = new ByteArrayInputStream(template.serialize());
     Integer tamañoHuella=template.serialize().length;

     //Pregunta el nombre de la persona a la cual corresponde dicha huella
     String nombre = JOptionPane.showInputDialog("Nombre:");
     try {
     //Establece los valores para la sentencia SQL
     Connection c=con.conectar();
     PreparedStatement guardarStmt = c.prepareStatement("INSERT INTO somhue(huenombre, huehuella) values(?,?)");
            guardarStmt.setString(1,nombre);
            guardarStmt.setBinaryStream(2, datosHuella,tamañoHuella);
            //Ejecuta la sentencia
            guardarStmt.execute();
            guardarStmt.close();
            JOptionPane.showMessageDialog(null,"Huella Guardada Correctamente");
            con.desconectar();
            btnGuardar.setEnabled(false);
            btnVerificar.grabFocus();
        } catch (SQLException ex) {
            //Si ocurre un error lo indica en la consola
            System.err.println("Error al guardar los datos de la huella.");
        }finally{
       con.desconectar();
       }
   }
Luego de haber declarado este método se marcaran 4 errores sobre algunas líneas de código, y esto es porque no se han importado los imports necesarios para cada línea así que lo que haremos es con la ayuda de Netbeans, posicionamos el cursor sobre cada símbolo que marca error, y presionamos clic izquierdo, y  le daremos añadir import… así;
•  Seguimos creando el método de verificarHuella.
Luego declararemos el método de verificarHuella, la cual funciona con la ayuda del usuario, es decir este método se basa en que el usuario le pasa un parámetro especifico al sistema de la BD, para que este filtre según este parámetro, que para este caso sería el nombre con que se guardo la huella dactilar, pero cabe resaltar que puede ser usado con cualquier otro tipo de parámetro con que se halla guardado la huella, puede ser con el ID, si sabe y si también hay un campo en la tabla de CC o ID de usuario, en fin, la lógica con que se use es variada.

/**
* Verifica la huella digital actual contra otra en la base de datos
*/
 public void verificarHuella(String nom) {
    try {
    //Establece los valores para la sentencia SQL
    Connection c=con.conectar();
    //Obtiene la plantilla correspondiente a la persona indicada
    PreparedStatement verificarStmt = c.prepareStatement("SELECT huehuella FROM somhue WHERE huenombre=?");
    verificarStmt.setString(1,nom);
    ResultSet rs = verificarStmt.executeQuery();

    //Si se encuentra el nombre en la base de datos
    if (rs.next()){
    //Lee la plantilla de la base de datos
    byte templateBuffer[] = rs.getBytes("huehuella");
    //Crea una nueva plantilla a partir de la guardada en la base de datos
    DPFPTemplate referenceTemplate = DPFPGlobal.getTemplateFactory().createTemplate(templateBuffer);
    //Envia la plantilla creada al objeto contendor de Template del componente de huella digital
    setTemplate(referenceTemplate);
   
    // Compara las caracteriticas de la huella recientemente capturda con la
    // plantilla guardada al usuario especifico en la base de datos
    DPFPVerificationResult result = Verificador.verify(featuresverificacion, getTemplate());

    //compara las plantilas (actual vs bd)
    if (result.isVerified())
    JOptionPane.showMessageDialog(null, "Las huella capturada coinciden con la de "+nom,"Verificacion de Huella", JOptionPane.INFORMATION_MESSAGE);
    else
    JOptionPane.showMessageDialog(null, "No corresponde la huella con "+nom, "Verificacion de Huella", JOptionPane.ERROR_MESSAGE);
   
    //Si no encuentra alguna huella correspondiente al nombre lo indica con un mensaje
    } else {
    JOptionPane.showMessageDialog(null, "No existe un registro de huella para "+nom, "Verificacion de Huella", JOptionPane.ERROR_MESSAGE);
    }
    } catch (SQLException e) {
    //Si ocurre un error lo indica en la consola
    System.err.println("Error al verificar los datos de la huella.");
    }finally{
       con.desconectar();
    }
   } 

Cuando se crea este método también veremos algunos errores, por lo que al igual que en el método anterior, importaremos los imports necesarios para corregir estos errores.



•  Finalmente creamos el método de identificarHuella.
Por ultimo declararemos el método de identificarHuella, el cual se basa en que al capturar la huella dactilar, prescionando el botón de identificar, este se encarga de comparar cada huella dactilar guardada en la BD con la capturada y decir a quien pertenece esta huella.

/**
  * Identifica a una persona registrada por medio de su huella digital
  */
  public void identificarHuella() throws IOException{
     try {
       //Establece los valores para la sentencia SQL
       Connection c=con.conectar();
       
       //Obtiene todas las huellas de la bd
       PreparedStatement identificarStmt = c.prepareStatement("SELECT huenombre,huehuella FROM somhue");
       ResultSet rs = identificarStmt.executeQuery();

       //Si se encuentra el nombre en la base de datos
       while(rs.next()){
       //Lee la plantilla de la base de datos
       byte templateBuffer[] = rs.getBytes("huehuella");
       String nombre=rs.getString("huenombre");
       //Crea una nueva plantilla a partir de la guardada en la base de datos
       DPFPTemplate referenceTemplate = DPFPGlobal.getTemplateFactory().createTemplate(templateBuffer);
       //Envia la plantilla creada al objeto contendor de Template del componente de huella digital
       setTemplate(referenceTemplate);

       // Compara las caracteriticas de la huella recientemente capturda con la
       // alguna plantilla guardada en la base de datos que coincide con ese tipo
       DPFPVerificationResult result = Verificador.verify(featuresverificacion, getTemplate());

       //compara las plantilas (actual vs bd)
       //Si encuentra correspondencia dibuja el mapa
       //e indica el nombre de la persona que coincidió.
       if (result.isVerified()){
       //crea la imagen de los datos guardado de las huellas guardadas en la base de datos
       JOptionPane.showMessageDialog(null, "Las huella capturada es de "+nombre,"Verificacion de Huella", JOptionPane.INFORMATION_MESSAGE);
       return;
                               }
       }
       //Si no encuentra alguna huella correspondiente al nombre lo indica con un mensaje
       JOptionPane.showMessageDialog(null, "No existe ningún registro que coincida con la huella", "Verificacion de Huella", JOptionPane.ERROR_MESSAGE);
       setTemplate(null);
       } catch (SQLException e) {
       //Si ocurre un error lo indica en la consola
       System.err.println("Error al identificar huella dactilar."+e.getMessage());
       }finally{
       con.desconectar();
       }
   }
Cuando se crea este método también veremos algunos errores, por lo que al igual que en los método anteriores, importaremos los imports necesarios para corregir estos errores.
5. Finalmente, después de haber creado todo esto métodos, solo resta llamar los respectivos métodos en los eventos cuando se presionen cada botón.
• Empezamos con el botón de Guardar.
guardarHuella();
Reclutador.clear();
lblImagenHuella.setIcon(null);
start();

 • Seguimos con el botón de Verificar.
String nombre = JOptionPane.showInputDialog("Nombre a verificar:");
verificarHuella(nombre);
Reclutador.clear();


• Por último el botón Identificar.
   try {
    identificarHuella();
    Reclutador.clear();
    } catch (IOException ex) {
    Logger.getLogger(CapturaHuella.class.getName()).log(Level.SEVERE, null, ex);
    }
En este punto también, importaremos los import necesario que permitan corregir los errores presentado.
-------------------------------------------------------------------------------------------------------------


Eso es todo, espero le sirva y no olviden en comentar,  nos vemos después cuando surja una inquietud y podamos resolverla… SALUDOS JARC..!

QUE DIOS BENDIGA A TODOS LOS QUE ESTUVIERON PENDIENTES DE ESTA ENTRADA Y LE HALLA SERVIDO DE ALGO, QUE PASEN UNA FELIZ NAVIDAD Y UN PROSPERO AÑO NUEVO.

Tambien les dejos un documento pdf con el desarrollo de esta ultima parte del Tutorial. Aqui

Y lo que todos esperan, el codigo fuente, pues aqui se los dejo y espero por lo menos comenten si de algo le ha servido. Aqui

DEDICADO A TODOS AQUELLOS QUE CON PACIENCIA ESPERARON AL DESARROLLO DE ESTE TUTORIAL Y OJALA HALLAMOS ENTENDIDO EL TEMA, ESPERO ESTA ULTIMA PARTE SEA EL REGALO QUE MUCHOS NECESISTABAN, SALUDOS...

!EL CONOCIMIENTO AUMENTA CUANDO SE COMPARTE¡

¡feliz navidad a todas las familias de colombia y en especial aquellas que han sido asotadas por estos desastres naturales, que recuerden que Dios nunca nos olvida.!



87 comentarios:

  1. me sirvió demasiado ,,, tengo que cambiar la bd mysql a postgres y adaptar a mi proyecto, gracia s por tu aporte :D

    ResponderEliminar
    Respuestas
    1. Una pregunta camarada, es compatible con el U ARE U 4000B por que a mi no me aparece nada, y segui el tutorial, y solo me aparece el boton de salir. te agradeceria tu comentario mi correo es sharky_0one@yahoo.com.mx

      Eliminar
  2. Me sirvio de mucha ayuda quisiera saber como hago para que no pare a las 4 veces que se pasa el dedo por el lector, lo estoy trabajando para ingreso de personas le agradeceria su ayuda. mi correo es epatinorueda@gmail.com

    ResponderEliminar
  3. Podrias recomendarme alguna ayuda para que esto se pueda hacer desde una aplicacion web?? nesecito realizar algo similar pero debe capturarse la huella via un navegador. gracias.

    ResponderEliminar
  4. una pregunta, este es compatible con el U Are U 4000B?
    ya que recree tus pasos siguiendo el tutorial (muchas gracias por el titorial) pero no me captura nada, aprace tal y como la imagen que tienes a un principio, te agradeceria que me comentaras.

    ResponderEliminar
  5. Por cierto te dejo mi correo por si puedes comentarme donde esta el error o si es compatible con el lector U ARE U 4000B, mi correo es sharky_0one@yahoo.com.mx te agradezco de antemano la ayuda, como te comento, si me detecta el lector y me dice que está conectado pero los botones no se activan a excepción de “salir”.

    ResponderEliminar
  6. Me podrias colaborar como hago para que lea mas de una huella Gracias

    ResponderEliminar
  7. Hola a todos, espero para aquellos que no hallan podido descargar el sdk de la pagina oficial, aca les dejo el link del sdk.

    link:

    http://www.fileserve.com/file/Bc8QgnU

    NO SE LES OLVIDE QUE EL QUE TIENEN QUE EJECUTAR ES EL SETUP.EXE QUE ESTA EN LA CARPETA DEL SDK.

    E INCLUSO EN LA CARPETA DOCS, ENCONTRARAN VARIOS PDF QUE SIRVEN DE GUIA PARA LOS PROCESOS DE INSTALACION Y PROGRAMACION EN VARIOS LENGUAJES, Y ESTOS PODRAN ENCONTRAR MAS CARACTERISTICAS DE LAS QUE HABIA MENCIONADOS EN OTRAS OCASIONES Y POR SUPUESTOS LOS OTROS DISPOSITIVOS COMPATIBLES CON EL SDK...

    LO MALO PUEDE LLEGAR SER QUE ESTA EN INGLES, PERO ESTE ES TECNICO Y SE DEJA ENTENDER.
    Saludos ING J@RC...

    ResponderEliminar
    Respuestas
    1. Hola querido amigo te comento que se ya no se puede descargar desde esta direccion tendrias la gentileza de subirlo nuevamente.... o en su defecto enviarmelo por correo a dvaldiviac@gmail.com te lo agradesco de ante mano saludos.

      Eliminar
    2. Amigo porfavor me urge poder programar el lector de huellas, si pudieras mandarme el sdk con los doc. te lo agradeceria mucho, este es mi correo anton_coba@hotmail.com

      Eliminar
    3. Hola mi hermano , soy Stephen Ortiz de cali colombia, hombre estoy por ahcer un aplicativo con el mismo lector de huella pero no he podido descargar el sdk si tu lo tienes me lo puedes enviar de antemano gracias por tus tutoriales correo: stephen-1803@hotmail.com

      Eliminar
  8. SAludos Jair.
    Excelente tutorial!!
    buen trabajo.

    Tengo una super duda tendrás un ejemplo funcional (no como los de la página de Griaule) de lector de huella en php-mysql-javascript.
    En la página oficial de Griaule usan php - javascript para eso pero su ejemplo no me jala y ellos usan sqlite.
    Gracias!!!!!

    ResponderEliminar
  9. Cordial saludo

    Tengo una pregunta, en la línea 413 del programa en la parte de guardarHuella() está la sentencia

    ByteArrayInputStream datosHuella = new ByteArrayInputStream(template.serialize());

    pero esa sentencia presenta un error, Netbeans en la depuración dice que la variable "template" está NULL y que no puede procesar datos Nulos.

    ¿me podría ayudar compañero? no he encontrado la solución para ese problema

    gracias

    ResponderEliminar
    Respuestas
    1. ok,, Brezhnev entiendo tu pregunta...
      PERO ES POSIBLE QUE AL MOMENTO DE CAPTURAR LAS HUELLAS DIGITALES (LAS 4 VECES QUE SE INDICA), QUIZAS NO SE CREO EL TEMPLATE DE FORMA CORRECTA, Y SE TE DAS CUENTA EL CASE QUE SE HACE EN EL METODO PROCESARCAPTURA(), ES AHI EN DONDE CADA INTENTO SE EVALUA EL ESTADO DE LAS CARACTERISTICAS CREADAS POR HUELLA...

      LUEGO DE SI EL ESTADO DE ESTAS CARACTERISTICAS ES EL OPTIMO, VERAS QUE SE LE PIDE AL RECLUTADOR DE ESAS CARACTERISTICAS QUE LAS DEVUELVA EN FORMA DE TEMPLATE Y ES ESTE EL QUE SE LE ENVIA AL METODO SETTEMPLATE... Y COMO TE DARAS CUENTA, COMO LA VARIABLE template se reasigna por asi decirlo, ES DECIR REMPLAZA UN TEMPLATE VIEJO POR EL ACTUAL, Y EN EL METODO DE GUARDARHUELLA(), SOLO SE LLAMA UNA INSTANCIA PROPIA DE ESTA VARIABLE QUE ES LA QUE ME COMENTAS QUE TIENE EL ERROR.

      LUEGO TE SUGIERO:

      1. DECLARA LA VARIABLE template de forma public...
      2. CUANDO LLAMES AL METODO GUARDARHUELLA(), CERCIORATE EL ESTADO DE LA VARIABLE template, (mandandola a imprimir, asi te daras cuenta si tiene un valor diferente null...)
      3. DE SER NULL EL VALOR DE ESTA VARIABLE CUANDO LA IMPRIMAS,,, O CUANDO CREES EL OBJETO ByteArrayInputStream, ES POSIBLE QUE NO SE CREO EL TEMPLATE DE FORMA CORRECTA Y POR LO TANTO CUANDO SE PROCESO LA CAPTURA (METODO PROCESARCAPTURA(), VALIDO EL ESTADO LUEGOS DE LOS CUATRO INTENTOS Y COMO ESTA EN CODIGO EL ESTADO DEL CASE FUE: TEMPLATE_STATUS_FAILED, ES POR ELLO QUE A LA VARIABLE template se le envio setTemplate(null);) Y ES QUIZAS DE AHI DE DONDE PROVENGA TU ERROR...

      4. UNA ULTIMA OPCION PODRIA SER QUE MODIFICASTES EL CODIGO PARA ADAPTARLO A TU SITUACION Y DE SER ASI QUIZAS HALLAS BORRADO U OMITIDO ALGUN PROCESO...

      REVISA BIEN...

      NOTA: LO OTRO ES QUE EL TUTORIAL QUE EXPLICO PASO A PASO, EL SEGUNDA PARTE OMITI COLOCAR EL METODO PROCESARCAPTURA(), SI TE DESCARGASTES EL CODIGO FUENTE AHI ESTA ESE METODO QUE ES EL MAS IMPORTANTE DE TODOS...
      ESA TAMBIEN PUEDE SER LA RAZON DE TU PROBLEMA (LO MAS SEGURO...)...

      CUALQUIER DUDA ME AVISAS...

      Eliminar
    2. Hola Jair

      Muchas gracias por responder en este blog, pense que mi pregunta iba a quedar muerta, pero Gracias a Dios veo que tú estas muy pendiente y eso se valora mucho.

      Bueno te comento que hice los pasos que me dijiste, pase la variable a Public pero ese no era el error, yo no sabía que la primera vez que se ingresaba la huella tocaba hacer 4 veces el escaneo antes de guardar, pense que con solamente una vez ya era suficiente para guardar los datos, pero me equivoque, la verdad voy a leer nuevamente tu manual porque no sé por qué toca validar 4 veces la huella digital antes de Guardar.

      La verdad me disculpo porque me falto leer, ese si fue mi problema, pero ahora voy a modificar tú código para poder hacer mi propio aplicativo SIN QUITAR LA AUTORÍA PRINCIPAL que es tú nombre. Soy Fiel partidario del software libre y entiendo perfectamente como se debe proceder en este caso. Voy a realizar mi aplicativo pero en los créditos te aseguro que va a ir tu nombre como autor principal.

      Compañero muchas gracias por el manual y tu código, está excelente, corre perfectamente y nuevamente agradeciendo que compartas tu información.

      Mucha suerte a todos.

      Eliminar
  10. A por cierto una vez que has instalado el sdk en turaiz\DigitalPersona\One Touch SDK\ hay ejemplos que son realizados por el proveedor del equipo. Hay para : .NET,C-C++,COM-ACTIVEX, y por supuesto JAVA.
    ATT: Monillo007
    Saludos.

    ResponderEliminar
  11. Estimados:
    Para los que quieren hacerlo vía WEB lo más factible es hacerlo mediante APPLETs. Yo lo hice con JSP embebido el applet. Para eso hay que tener en cuenta la firma del applet ya que si no lo haces no te deja ,por seguridad, desplegar el contenido.Me falta hacer que exista un solo servidor y varias sucursales; es decir implementar el mecanismo de pasar parametros de servlet a applet.

    ATT: Monillo007
    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola , que tal , me gustaria un poco de ayuda, sabes estoy intentando desarrollar en web y tu no tienes un bloc donde explicas como lo has echo en JSP embebido el APPLET para aprender tu desarrollo, usted seria la salvacion de muchas personas ,esperando un milagro y una respuesta tuya , attentamente
      nairo_b85@hotmail.com
      o
      nin bordon en el facebook

      Eliminar
    2. Hola, yo tambien estoy tratando de montarlo en una app web y estoy apurado con los tiempos. Podriamos hacer un grupo virtual para avanzar mas rapido y luego un blog como lo hizo Jair y poder compartir. Si ya tienen informacion porfavor me hechan una mano?

      mi correo: dengue8830@gmail.com
      mi skype: drearte.theinit

      Eliminar
    3. Lo que quiero hacer es: cuando se cierre el dialog se invoque una pagina web.
      He intentado lo siguiente: en el metodo salir del boton, hago un dispose(); y luego instancio un servlet que construye una pagina web con un codigo javaScript que redirige a una pagina web. Pero no pasa nada.

      estoy trabajando con springMVC.

      Porfavor alguien?? como hicieron uds???

      Eliminar
  12. que tal

    he visto que por default este lector genera el template a partir de 4 capturas de la huella dactilar, mi pregunta es,Este valor es modificable? lo podemos establecer en 2? ya que si tengo que capturar los 10 dedos de la persona praticamente serian 40 lecturas por persona, entonces quiero saber que propiedad hay que modificar para bajar el numero de capturas necesarias.


    saludos

    ResponderEliminar
  13. Hola, antes que nada muy buen tutorial. Mi duda es la siguiente: Si en el campo de la tabla mysql "huehuella" guarda la imagen de la huella que se esta escaneando. Es que necesito mostrar la imagen capturada en un php. Ya estuve haciendo el intento recuperando la imagen del campo "huehuella" y me sale error.

    ResponderEliminar
  14. Hola !!!! muchas felicidades por este tipo de contenido para aquellos que estamos buscando la solucion en la programacion de este lector , lamentablemente yo estoy atorado en la lectura desde la base de datos pero megustaria saber si alguien mas lo tiene pero para Visual Basic Net

    saludos

    ResponderEliminar
  15. Hola Jair, ante todo muchas gracias por echar un poco de luz sobre este tema.

    Estoy intentando desarrollar una aplicacion de "time & attendance" y compre el UareU 4500, pero he completado en 3 ocasiones el formulario de Digital Persona para descargar el SDK One Touch for Windows, he enviado emails pidienddoles ayuda con este tema y JAMAS contestaron, el soporte que tienen es patetico.

    Si tu posees una copia del SDK y me pudieras facilitar uan forma de descargarlo te lo agradeceria enormemente.

    El link que pusiste anteriormente (http://www.fileserve.com/file/Bc8QgnU) dice que el archivo fue borrado.

    En este momento me siento muy frustrado y tengo el lector que pague por el 150 USD, como pisapapeles ya que el SDK Filgerprint 2009 de Griaule, no funciona con este lector.

    Saludos y muchas gracias de antemano.

    Nicolas
    nycklander@hotmail.com

    ResponderEliminar
  16. Hola cuando pongo el codigo en un Applet
    Me sale el siguiente error:

    java.lang.noclassdeffounderror: Could not initializate class
    com.digital.persona.onetouch.jni.Matcher

    Alguien sabe como puedo Solucionarlo
    o que estaré haciendo mal.

    Gracias

    ResponderEliminar
  17. Hola jair:

    Primeramente felicidades por el tutorial esta muy bueno y util para los que estamos empezando, estoy desarrollando un sistema de control de personal en java y quiero implementar esta funcion del lector, ya compre el lector pero no vino con el sdk quise descargarlo de tu link: que pusiste anteriormente (http://www.fileserve.com/file/Bc8QgnU), tambien intente de la pagina principal pero nada.

    Si me puedes proveer el sdk porfa para programar:
    Dejo mi correo: adolfo2011_tj@hotmail.com

    Saludos y muchas gracias de antemano Atte: Adolfo

    ResponderEliminar
  18. Que tal Jair, tengo problemas al momento de guardar en la base de datos, posteriormente de hacer las 4 lecturas me marca "Error al guardar los datos de la huella", te comento que uso tu programa tal cual como lo publicaste para comprender cada instrucción pero no me guarda. En un principio creí que era la base de datos pero ya la hice como 4 veces y nada podrías ayudarme

    ResponderEliminar
    Respuestas
    1. A mi me pasaba lo mismo, mira lo k tienes k hacer es: en Mysql el ID (primer campo), activale el AI (auto-incremental), al momento de guardar t va generando automáticamente el ID y magia funciona jeje.

      Si te das cuenta en el codigo de la funcion para guardar la parte de la consulta VALUES(?,?) solo son 2 campos (nombre y huella) y tu tabla en mysql tiene 3 por lo cual el ID se autogenera en mysql.

      Eliminar
  19. Buenas noches, sería tan amable por favor de publicar nuevamente un link para bajar el SDK? He intentado muchas veces en la web del fabricante y nada :S

    Muchas gracias!

    ResponderEliminar
  20. Hola que tal, espero te halla servido el post, y pues aca te dejo los links, para que descargues el sdk.

    Parte1. https://sites.google.com/site/jarcsite/DigitalPersona%20One%20Touch%20for%20Windows%20SDK%201.6.1.part1.rar

    Parte2.
    https://sites.google.com/site/jarcsite/DigitalPersona%20One%20Touch%20for%20Windows%20SDK%201.6.1.part2.rar

    Parte3.
    https://sites.google.com/site/jarcsite/DigitalPersona%20One%20Touch%20for%20Windows%20SDK%201.6.1.part3.rar

    Parte4.
    https://sites.google.com/site/jarcsite/DigitalPersona%20One%20Touch%20for%20Windows%20SDK%201.6.1.part4.rar

    NO SE TE OLVIDE QUE EL QUE TIENES QUE EJECUTAR ES
    EL SETUP.EXE QUE ESTA EN LA CARPETA DEL SDK.

    E INCLUSO EN LA CARPETA DOCS, ENCONTRARAN VARIOS PDF QUE SIRVEN DE GUIA PARA LOS PROCESOS DE INSTALACION Y PROGRAMACION EN VARIOS LENGUAJES, Y ESTOS PODRAN ENCONTRAR MAS CARACTERISTICAS DE LAS QUE HABIA MENCIONADOS EN OTRAS OCASIONES Y POR SUPUESTOS LOS OTROS DISPOSITIVOS COMPATIBLES CON EL SDK...

    LO MALO PUEDE LLEGAR SER QUE ESTA EN INGLES, PERO ESTE ES TECNICO Y SE DEJA ENTENDER.
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    ResponderEliminar
  21. MUCHISISISIMAS GRACIAS, me funcionó de maravilla después de unas cuantas horas de estar provando, es k tenía que configurar varias cosas, pero ya todo esta. Después de arreglar los problemas de conección k yo tenia en mi máquina lo prové y no funcionó, por que no me guardaba y tampoco me daba error, no sabia k hacer, hasta k me di cuenta que no metias ID y en mysqql lo puse AI(auto incremental) y me funcionó de maravilla, sería bueno k lo contaras en el post y si lo conmentaste perdón por no leer!! gracias JARK.

    ResponderEliminar
  22. Hola Jair, te cuento que ya bajé el SDK. Por casualidad me podrías proporcionar el proyecto completo para no tener errores, mi correo es: josogod@hotmail.com. Otra cosa más; sabes si también se puede hacer el proyecto en eclipse???

    ResponderEliminar
    Respuestas
    1. Creo que es la emoción lo que me embarga. Ya vi que también que el proyecto completo está en la parte superior. Las disculpas de caso y te felicito por el blog

      Eliminar
  23. Hola.

    Muy bueno, me funciona perféctamente (bueno, en realidad no hago nada de guardar y verificar, la base de datos es para mi un tema aparte)...
    Estoy intentando modificar el código para hacerlo un poco más modular y simplificar el código del formulario. Lo que quiero hacer es separar la clase principal de la clase de "gestión del lector". De momento estoy copiando procedimientos y adaptando los métodos (ej:poner una variable que haga referencia al textArea de información, otra tipo imagen para almacenar la huella...). Lo que quería saber es si ya lo hiciste, para subirlo tu y no programar dos veces lo mismo; o si lo ves algo inviable, imposible...
    Con tiempo y una caña iré programándo la otra clase, si quieres contacta conmigo o ya te avisaré cuando la tenga.
    O bien te la pasaré para que la difundas, o la publicaré yo (haciendo referencia a tu artículo.)

    ResponderEliminar
    Respuestas
    1. Perdón por la tilde en "programándo" y por algún otro error... uf, me duele a la vista...

      Eliminar
    2. Creo que estoy apuntito de sacarlo de forma modular... lo tuve un tiempo abandonado pero me he puesto hoy a ello y bueno... a ver qué sale...

      Lo único me he fijado de una cosa... ¡¿¿Tener 'ñ' en el nombre de una variable no da ningún tipo de error??! qué cosas...

      Eliminar
    3. hola tomas disculpa ando desarrollando un checador en java cres q me puedas apoyar con un codigo mi correo es migue_langelito@hotmail.com saludos gracias

      Eliminar
  24. hola jair:
    Mi consulta es la siguiente si alguien ha trabajado con el sdk de nec con el digitalpersona 4500.
    Saludos.

    ResponderEliminar
  25. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  26. Disculpa, haver borrado el comentario anterior, pero parece ser que el error ocurre mas continuamente, el error consta de : un usuario X se identifica en el programa (siguiendo tu codigo fuente) en el 90% de los casos la identificacion es correcta pero en el 10% restante me identifica al usuario incorrecto, anteriormente creia que era solo con 1 pero haciendo pruebas con el sistema son de 30 usuarios a 5 les ocurre eso...
    creo que se genera en este segmento
    /*
    *
    */
    DPFPVerificationResult result = Verificador.verify(featuresverificacion, getTemplate());
    if (result.isVerified()){
    JOptionPane.showMessageDialog(null, "Las huella capturada es de "+nombre,"Verificacion de Huella", JOptionPane.INFORMATION_MESSAGE);
    return;
    }
    }
    /*
    *
    */

    quisas al crear el nuevo template de la imagen crea uno muy similar a alguno ya guuardado, y toma le primero que tenga mas semejansa... me gustaria saber si puedo contactarte via email...
    de antemano mil gracias...

    ResponderEliminar
    Respuestas
    1. Bueno la Verdad, agradezco tu comentario...

      Pero si bien a mi en lo particular no se me ha presentado ese incoveniente, pues la verdad se ha implementado en varios sistemas, y funcione sin error alguno...

      La otra situacion que podia presentarse es la hora de registrar los templates de cada huella para cada persona, sea de manera correcta y si bien pues en este tutorial no incluye un metodo que me valide esto, por lo que se deberia realizar esta validacion que al final de la captura de las 4 huellas realice una busqueda inicialmente de si existe un template similar a este...

      De ser asi, seria reiniciar de nuevo el lector o la instacia de la clase que implementa este metodo...

      Ya que si sabras, si no se tiene esto en cuenta el puede que registre un mismo template casi con 90% de las caracteriticas a la hora de enrolar cada huella de una persona, y esto generara el error que me dices, ya que al verificar una huella mostrara la coincidencia que primero encuentre la tabla de la base de datos...

      SI CREES QUE EL ERROR ESTA FUERA DE ESTO, PUEDES MODIFICAR EL CODIGO Y LUEGO PUBLICAR LA SOLUCION O LA INQUIETUD Y PODER AYUDARNOS....

      SALUDOS. JARC,,,,

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

    ResponderEliminar
  28. quisiera saber como usar esta aplicación que funciona de maravilla .. con código jsp o html para poder hacer el reconocimiento de aplicación web. quisiera hacer una "adaptación a un applet o algo asi " si pueden ayudarme se lo agradecería en verdad necesito realizar este proceso y no he encontrado el camino.. Muchas gracias

    ResponderEliminar
  29. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  30. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  31. hola amigo me ha servido tu turial excelente.pero me gustaria saber como hacer que los datos que tengo registrados en la base de datos por medio de la huella, sacar eso datos y ponerlos en otra clase para que estos sean mostrado en una tabla o en su caso poder almacenarlo en campos de txt. ojala puedas ayudarme te lo agradeceria ya que es de un proyecto. mi correo es el siguiente lobo_z1124@hotmail.com

    ResponderEliminar
  32. hola, excelente aporte, como podria hacerle para que la aplicacion este siempre activa? mi correo es claudiaivonfb@hotmail.com

    ResponderEliminar
  33. Exelente!!! gracias por compartir.. :D aun no hago nada pero en un mes empezare con un proyecto... y esto sin duda sera de gran apoyo mil gracias!!

    ResponderEliminar
  34. Hola que tal excelecte post, solo una duda donde puedo descargar el DigitalPersona One Touch for Windows SDK 1.6.1 porque el link que indicas solo aparece la version de paga. Asique si pedes reponderme estare agredecido porque descarge U.are.U UPOS for JavaPOS for Windows. y noc si este funcione o no tiene nada que ver t dejo mi correo para que me digas q puedo hacer djshadow_666@hotmail.com

    Atte
    Eduardo

    ResponderEliminar
  35. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  36. Beimar trujillo, nose si lo intentaste pero solo basta con poner la acción del boton despues de la activacion de los botones o en lugar de la activacion en el metodo de procesar captura. Espero que te aya ido bien con tu proyecto y que lo tengas terminado a como querias. Saludos y suerte

    ResponderEliminar
  37. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  38. Hola, tu ejemplo me funciona perfectamente , pero si intento ejecutarlo desde Java WebStart el lector no funciona correctamente, nunca identifica ninguna huella.
    Ayuda, por favor.

    ResponderEliminar
  39. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. te agradeceria mucho si lo subieras

      Eliminar
  40. Alguien ha logrado o intentado con algún sdk en PHP o Javascript?.
    Un abrazo y gracias por este tutorial (:

    ResponderEliminar
  41. Hola me gustaria saber si ahi alguna forma de implementar algo parecido pero para web, digamos un applet o una aplicacion web hecha en java para poder usar estas librerias con el hardware.

    ResponderEliminar
  42. Super estaba el tutorial, podrian ayudarme son nuevo en esto como podria verificar un campo varbinary con otro varbinary de huella digital tengo q hacer una migracion, para verificar que las huellas no se repitan no se han la misma persona, si alguien me ayudaria este es mi correo amilcar0525@gmail.com Un abrazo y gracias por este tutorial.

    ResponderEliminar
  43. muchisimas gracias socios

    ResponderEliminar
  44. tengo problemas al conectar con la base de datos al dar click en guardar me sale un error en ("com.mysql.jdbc.Driver")pueden ayudarme

    ResponderEliminar
  45. Hola Ing Jair. tengo una duda acerca del sdk. la pregunta es si se puede tener instalado el driver del digitalpersona y se puede instalar el sdk?

    ResponderEliminar
  46. hola gracias por el aporte, sera posible que puedas publicar un link de descarga del sdk gratuito? en la pagina oficial tiene un costo de 149 usd, y una duda mas como paso el ejemplo a un applet web?

    ResponderEliminar
  47. Alguien me pude decir, como le hago para verificar si un Huella ya se a registrado en la Base de Datos.. y si aun no lo se a registrado, que se registre..

    ResponderEliminar
  48. holas alguien puede ayudarme a como ingresar un regsitro de entrada y salida con la huella

    ResponderEliminar
  49. Ok Me funciono k alegrias. Graciaaaasss

    ResponderEliminar
  50. hola muy buen progrma a mi me funciona tambien solo que tengo una duda que es como le hago para guardar 10 huellas digitales por persona. como poner en el metodo guardar huella, hago un arreglo o utilizo update o como le puedo hacer

    ResponderEliminar
  51. HOLA A TODOS, AGRADEZCO SUS COMENTARIOS, COMO VERAN EL TUTORIAL ES BASICO, Y PARA QUERER GUARDAR MAS DE UNA HUELLA POR USUARIO, DEBERAN RECURRIR A OTRO LOGICA DE PROGRAMACION EN DONDE EL USUARIO SELECCIONE POR EJEMPLO ALGUNA DE LAS 10 HUELLAS QUE PUEDEN REGISTRAR POR PERSONA, ASI COMO CREAR UNA BASE DE DATOS CON CIERTO IDENTIFICADORES UNICOS POR USUARIOS CON SUS HUELLAS DACTILARES, POR OTRA TODO REGISTRO DE HUELLA EN LA BASE DE DATOS, DEBERA PREVIAMENTE SER VERIFICADA CON LAS QUE EXISTEN EN LA BASE DE DATOS, ESTO CON EL FIN DE EVITAR DUPLICIDAD DE LAS HUELLAS Y OBTENER UNA EFICAZ IDENTIFICACION CUANDO SE DESEE.

    POR OTRA PARTE, CUALQUIER INQUIETUD PERSONAL, SOBRE ALGUN CODIGO DE PROGRAMACION SERIA BUENO QUE LO PUBLIQUEN PARA CONOCER LA CAUSA ESPECIFICA DEL ERROR QUE SE PUEDA PRESENTAR, Y ASI PODER AYUDAR.

    NOTA: RECUERDEN QUE LA LOGICA DE PROGRAMACION ES UNICA, POR LO QUE CADA PERSONA PUEDE RECURRIR A UN ESTILO DIFERENTE SOBRE EL COMO PROGRAMAR ESTE TUTORIAL..

    UNA FORMA SIMPLE, PARA COMPARTIR CON TODOS UDS SERIA:

    UNA BASE DE DATOS AL MENOS ASI:

    DOS TABLAS:

    TB_USUARIOS

    ID_USUARIO (pk)
    NOMBRES
    APELLIDOS
    EMAIL
    DIRECCION
    PROFESION
    ETC, ETC

    TB_HUELLAS_USUARIOS

    CODIGO (AUTONUMERICO)
    USUARIO (FK) (ID_USUARIO DE LA TABLA TB_USUARIOS)
    NOMHUELLA
    TPTHUELLA
    IMGHUELLA

    -----------------------

    ESA SERIA LA IDEA MAS SENCILLA, COMO VERAN LAS DOS TABLAS ESTAN UNIDAS POR UNA REFERENCIA FORANEA.

    -------------------

    Y UNA INTERFAZ SENCILLA, SERIA

    UN FORMULARIO INICIALMENTE, DONDE SE PIDA LA IDENTIFICACION DEL USUARIO A REGISTRAR HUELLAS DACTILARES POSIBLES:

    LUEGO VERFICAR LAS HUELLAS DACTILARES EXISTENTE PARA ESE USUARIO, SABIENDO QUE COMO HAY UN CAMPO DE NOMBRE DE HUELLAS, POR ESTE CAMPO SE PUEDE SABER CUAL DE LAS HUELLAS TIENE REGISTRADA Y CUALES NO.

    DEPENDIENDO ESTO, SE PUEDE ASI MISMO HABILITAR O NO 10 BOTONES SI SE DESEAN QUE ESTE EN EL FORMULARIO Y REPRESENTEN CADA UNA DE LAS HUELLAS....

    --------------------
    ANTES DE CUALQUIER REGISTRO FINAL SOBRE LA LA BASE DE DATOS, DEBEN RECORRER LA TABLA DE HUELLAS, PARA VERIFICAR QUE NO EXISTA UNA HUELLA DACTILAR CON TPTHUELLA, SIMILAR....

    ESO ES TODO:

    CADA PERSONA ES UN MUNDO, Y EN UN MUNDO HAY MUCHAS POSIBILIDADES DE CONVIVIR Y REALIZAR LAS COSAS...

    SALUDOS; JARC

    ResponderEliminar
  52. Hola amigo, no si es mucho pedir pero en visto que se puede mostrar la huella capturada a color y sin el fondo blanco, podrias ayudarme con eso amigo porfavor!

    ResponderEliminar
  53. hola muchas gracias por el codigo,
    alguien sabe como convertir todo esto a applet? deseo ponerlo en un html
    mi correo es juan@oktopuscali.com por si alguien ya consiguio hacerlo..

    gracias

    ResponderEliminar
  54. eres a toda madre we neta

    ResponderEliminar
  55. Hola descargo el codigo fuente, cambio los datos de la conexion BD, creao la base de datos, y me sucede que al correr el programa, pruebo y se queda en el mensaje "El dedo ha sido colocado sobre el Lector de Huella" no muestra nada mas ¿que sucede?

    ResponderEliminar
    Respuestas
    1. el codigo funciona, sol que da error al guardar la huella, lo solucionaste?

      Eliminar
  56. Hola,
    Estoy corriendo el codigo fuente que dejas en la descripcion y despues de configurarlo me queda un único ERROR cuando va a guardar la huella dice: "Error al guardar los datos de la huella" y no se porque motivo ,
    Espero alguna respuesta, Gracias

    ResponderEliminar
  57. muy buena tutorial gracias que dios te bendiga

    ResponderEliminar
  58. Pudieron hacerlo funcionar en un applet?

    ResponderEliminar
  59. Buenas noches, Fijate que tengo un problema mas, todo funciona correctamente, pero yo tengo ya huellas guardadas de una version de SDK platinum, y creo que no son compatibles, no se como pasarlas a este SDK, es igual de digital persona, encontre informacion y creo que tengo que hacer un tpo de migracion pero no puedo, no se si hayas batallado con algo similar?

    ResponderEliminar
  60. Buenas tardes, de antemano agradecer el haber compartido el tutorial con todos nosotros, quiero comentarle que me sale un error el cual no ví que a nadie más le hubiera salido, al enviar los datos a la base de datos me deja esperando unos minutos y luego aparece "The last packet sent succesfully to the server was 0 milliseconds ago. The driver has not received any packets from the server." Le agradezco si conoce la solución a este problema, ya que probé cambiando el driver Mysql y me arroja el mismo error, gracias.

    ResponderEliminar
    Respuestas
    1. yo tuve ese problema a causa de la conexion con la base de datos, tuve que modificarla, descargar el driver y listo, me funciono. La queres conectar a SQL Server??? Damian

      Eliminar
  61. Hola buenas tardes disculpa he intentado bajar el SDK de los links que has dejado pero creo ya se borro serias tan amable de enviarmelo a mi correo por favor! te dejo mi correo es vestacontrol00@gmail.com

    ResponderEliminar
  62. Exelente explicacion, me funciono de 10 la aplicacion, estaba tratando de hacer que la verificacion como vos la haces mediante el boton, se haga al colocar el dedo directamente en el lector pero no he podido. Al colocar el dedo por primera vez no marca nada, y a la segunda vez si, pero se queda con esa identificacion y no toma el resto. Si alguien lo ha hecho o si me pudieras ayudar te lo agradeceria. En los comentarios salen los link para el sdk en partes.

    ResponderEliminar
    Respuestas
    1. Mi nombre es damian, mi mail demian_lm2004@hotmail.com

      Eliminar