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.!



150 comentarios:

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

    ResponderBorrar
    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

      Borrar
  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

    ResponderBorrar
  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.

    ResponderBorrar
    Respuestas
    1. lo tengo en web escribe a walteralvarez75@hotmail.com

      Borrar
    2. Uii como me puedes ayudar en web ?

      Borrar
    3. me gustaría implementarlo en web puedes ayudarme. gracias

      Borrar
    4. He desarrollado aplicaciones biométricas web que los desarrolladores de software pueden solicitar e integrar con sus aplicaciones web.

      Consulte los siguientes Programas de autenticación biométrica web con los que puede integrarse en su aplicación web desde el sitio web de 'Jomutech Systems'.

      esarrollé los siguientes PAQUETES de integración biométrica PHP para ayudar a los amigos interesados ​​en integrar Biomtrics no solo en aplicaciones web PHP, sino también para Python, ASP.NET, NodeJS, HTML5 y JavaScript.

      Si me contactas amigo, puedo ayudarte a integrar la autenticación biométrica con tu proyecto de aplicación web PHP con cualquiera de los siguientes PAQUETES de integración biométrica PHP a continuación

      1. PACK PHP de Autenticación Biométrica PHP (DigitalPersona Fingerprint Scanners en Windows)
      https://jomutech.com/phpwebbiometricauthenticationlitepack/

      2. Paquete de plata de autenticación biométrica PHP (DigitalPersona Fingerprint Scanners en Windows)
      https://jomutech.com/phpwebbiometricauthenticationsilverpack/

      3. PACK Gold de Autenticación Biométrica PHP (DigitalPersona Fingerprint Scanners en Windows)
      https://jomutech.com/phpwebbiometricauthenticationgoldpack/

      4. PACK de autenticación biométrica ZKTeco PHP (ZKTeco 4500, 7500, 8500 y 9500 en Windows)
      https://jomutech.com/zktecophpwebbiometricfingerprintauthentication/

      5. PAQUETE de Autenticación Biométrica PHP Linux (DigitalPersona Fingerprint Scanners en Linux)
      https://jomutech.com/phplinuxbiometricauthentication/

      Amigo, cuando también tienes tiempo, echa un vistazo a mi canal de Youtube para ver dónde he demostrado los paquetes de software de autenticación biométrica PHP anteriores que realizan la inscripción y autenticación de huellas digitales biométricas en navegadores web que usan PHP

      Canal de Youtube de Jomutech Systems
      https://www.youtube.com/channel/UCBeV1MXmOGBMPT-azuBAiYw

      Borrar
  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.

    ResponderBorrar
  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”.

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

    ResponderBorrar
  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...

    ResponderBorrar
    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.

      Borrar
    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

      Borrar
    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

      Borrar
  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!!!!!

    ResponderBorrar
  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

    ResponderBorrar
    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...

      Borrar
    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.

      Borrar
    3. Hola, yo no puedo guardar...
      el error que me sale me envia aquí.
      ByteArrayInputStream datosHuella = new ByteArrayInputStream(template.serialize());
      que esta dentro de guardar huella.
      ojala alguien pueda orientarme.
      y tambien me gustaria si no es molestia, compartiera su codigo.
      recien empiezo esto de la programacion, ojala puedan entenderme y ayudarme. Saludos.

      Borrar
  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.

    ResponderBorrar
  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.

    ResponderBorrar
    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

      Borrar
    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

      Borrar
    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???

      Borrar
  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

    ResponderBorrar
  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.

    ResponderBorrar
  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

    ResponderBorrar
  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

    ResponderBorrar
    Respuestas
    1. puedes bajarlo de la página de forma gratuita: http://devportal.digitalpersona.com/

      Borrar
  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

    ResponderBorrar
  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

    ResponderBorrar
  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

    ResponderBorrar
    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.

      Borrar
    2. me salvaste la puta vida....lo habia pensado pero por alguna razon estupida me reusaba a cambiar porque crei que no tenia nada que ver eso hashashj GRACIAS

      Borrar
  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!

    ResponderBorrar
  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.
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    ResponderBorrar
  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.

    ResponderBorrar
  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???

    ResponderBorrar
    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

      Borrar
  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.)

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

      Borrar
    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...

      Borrar
    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

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

    ResponderBorrar
  25. Muy buen blog muchas gracias.

    ResponderBorrar
  26. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  27. 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...

    ResponderBorrar
    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,,,,

      Borrar
  28. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  29. 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

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

    ResponderBorrar
  31. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  32. 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

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

    ResponderBorrar
  34. 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!!

    ResponderBorrar
  35. 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

    ResponderBorrar
  36. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  37. 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

    ResponderBorrar
  38. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  39. 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.

    ResponderBorrar
  40. Este comentario ha sido eliminado por el autor.

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

    ResponderBorrar
  42. 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.

    ResponderBorrar
  43. 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.

    ResponderBorrar
  44. muchisimas gracias socios

    ResponderBorrar
  45. 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

    ResponderBorrar
  46. 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?

    ResponderBorrar
  47. 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?

    ResponderBorrar
  48. 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..

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

    ResponderBorrar
  50. Ok Me funciono k alegrias. Graciaaaasss

    ResponderBorrar
  51. 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

    ResponderBorrar
  52. 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

    ResponderBorrar
  53. 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!

    ResponderBorrar
  54. 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

    ResponderBorrar
  55. eres a toda madre we neta

    ResponderBorrar
  56. 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?

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

      Borrar
  57. 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

    ResponderBorrar
    Respuestas
    1. esto es por que los campos de la base de datos no con compatibles para poder guardar la información.

      Borrar
  58. muy buena tutorial gracias que dios te bendiga

    ResponderBorrar
  59. Pudieron hacerlo funcionar en un applet?

    ResponderBorrar
    Respuestas
    1. estoy con el mismo problema

      Borrar
    2. si se puede hacer funcionar con applet, aqui les dejo como queda :http://huellaplet.webcindario.com/index.html para los que lo quieran visualizar deben colocar la url aprobada en el panel de control de java y obviamente tener instalados los sdk.
      Sin embargo esto ya es obsoleto y se debe cambiar

      Borrar
    3. Lamentablemente es cierto, no funciona.

      Borrar
  60. 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?

    ResponderBorrar
  61. 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.

    ResponderBorrar
    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

      Borrar
    2. Hola tengo el mismo problema me puedes ayudar a solucionarlo, te lo agradecería mucho.

      Borrar
    3. eso significa que no esta enlazando al servidor, primero se debe verificar la conexion a la base de datos.

      Borrar
  62. 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

    ResponderBorrar
  63. 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.

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

      Borrar
  64. Muy buena explicacion, me funciono de 10!!! Si yo quisiera hacer esto mismo en un applet como seria, por que lo he querido implementar de la misma forma, siguiendo los pasos, pero no tengo el evento WindowsOpened, y no se como modificar el archivo initComponet. Muchas gracias

    ResponderBorrar
  65. como hago para que esta aplicacion se me ejecute 'tras bambalinas' como si fuese un servicio porque cuando la ventana pierde el foco, no captura huellas, es posible hacer esto?

    ResponderBorrar
  66. como se puede crear un aplet para que se ejecute como web.

    ResponderBorrar
    Respuestas
    1. es mejor no hacerlo ya que pronto sera obsoleto y no tendra soporte

      Borrar
  67. Hola. Muchas gracias por la info.. Actualmente ando estudiando con lo del biometrico para un proyecto de la universidad.
    Yo trabajo en modelo, vista, controlador.

    Por eso tengo un error en el codigo:
    -- firePropertyChange(TEMPLATE_PROPERTY, old, template);

    Para donde va ese? creo yo que va al Label Huella:
    -- GP.getjLabelHuella().firePropertyChange(TEMPLATE_PROPERTY, old, template);

    Pero igual me sale error que en old y template no recibe esos tipos de datos "DPFPTemplate"

    Cualquier solución agradezco, ya que sin esto no me esta dejando guardar en la BD.
    (Creo yo que es por eso que no me deja guardar)

    ResponderBorrar
    Respuestas
    1. Esto es lo que me muestra:

      no suitable method found for firePropertyChange(String,DPFPTemplate,DPFPTemplate)
      method JComponent.firePropertyChange(String,char,char) is not applicable
      (actual argument DPFPTemplate cannot be converted to char by method invocation conversion)
      method JComponent.firePropertyChange(String,int,int) is not applicable
      (actual argument DPFPTemplate cannot be converted to int by method invocation conversion)
      method JComponent.firePropertyChange(String,boolean,boolean) is not applicable
      (actual argument DPFPTemplate cannot be converted to boolean by method invocation conversion)
      method Component.firePropertyChange(String,double,double) is not applicable
      (actual argument DPFPTemplate cannot be converted to double by method invocation conversion)
      method Component.firePropertyChange(String,float,float) is not applicable
      (actual argument DPFPTemplate cannot be converted to float by method invocation conversio...

      Borrar
  68. Muchas Gracias por el Valiosos aporte con tu codigo !!
    y para los lectores del Blog de Jair..... se comentaba sobre hacer el codigo.. del lector para un Entorno WEB... ya tiene algo de Esto..??
    yo estoy.. en la idea.. de que los metodos.. ya estan listos.. y solo hay que retirar la parte del codigo Grafico de Swing.. y en esos.. pasos.. ando..!! aunque por alguna razon.. me esta marcando error.. en el metodo de Iniciar...!!
    Habra algun lector.. que haya realizado.. este paso..?? o estas en esta circunstancia del construir el codigo.. para un entorno WEB...???

    Saludos.. para todos.. !!

    ResponderBorrar
  69. Excelente codigo, me funciono al 100%. Por otro lado estoy tratando de diferenciar entre 2 lectores digitalpersona 4500. Haciendo un ciclo for de DPFPReaderDescription, sin embargo, no puedo diferenciarlos entre si. Realize el test con DPFPReadersCollection pero solo me detecta el dispositivo que paso como valor del get. Alguien ha podido obtener el getSerialNumber segun el dispositivo que hace el evento? Saludos.

    ResponderBorrar
  70. muy buen aporte, tu codigo esta al 100%, felicidades sigue asi, eres un crack...

    ResponderBorrar
  71. hola si alguien me puede ayudar tengo un lector de huelas zk4500 como hago para que me lo reconosca con este sistema

    ResponderBorrar
  72. Buenas tardes estoy haciendo el ejercicio con un lector U. are.U 4500 y corro el DEBUG en el proyecto y cuando trae el template del "Reclutador" me dice esto TEMPLATE_STATUS_INSUFFICIENT que puede ser ??

    ResponderBorrar
    Respuestas
    1. Pudiste Solucionarlo.? Tengo el mismo Problema, si lo soluciono lo comparto.!

      Borrar
    2. Al parecer por defecto se necesitan 4 capturas, entonces hay que llamar 4 veces al metodo addFeatures(DPFPFeatureSet fs) antes de obtener el estado correcto.

      Borrar
  73. Wooooooow increible amigo, de verdad que personas como tu merecen un reconocimiento especial, por su esfuerzo y dedicación; reconozco que soy un neofito en Java pero el tutorial paso a paso me ayudo entrar al mundo de Java... el codigo funciona al %100, Yo ya tengo un sistema PHP y con tu ayuda he podido hacer el modulo para capturar y leer las entradas de un uareu 4500 y que guardar la info en la misma BD de mi sistema! muchisimas gracias!

    ResponderBorrar
  74. Amigo, que tal interesante la propuesta que dices, en usarlo en un entorno web con php. Podria ponerme en contacto contigo, es que estoy realizando un proyecto de tesis y quiero conectar el biometrico con una aplicacion web en PHP.
    Mi correo es rsalazar.sistemas@gmail.com

    Saludos.

    ResponderBorrar
  75. Hola amigo, estoy tratando de utilizar DigitalPersonal en Eclipse, descargue la SDK, la instale, pase los .jar a java y aunque dichas librerias me aparecen en el ide, cuando coloco por ejemplo: import com.digitalpersona.onetouch.DPFPDataPurpose;

    Me arroja el siguiente error: Access restriction: The type 'DPFPDataPurpose' is not API (restriction on required library 'C:\Program Files\Java\jre1.8.0_73\lib\ext\dpotapi.jar').
    Por favor si tienes idea de que puede estar mal te lo agradeceria.

    ResponderBorrar
  76. Buenas noches. Quiero hacer una consulta de mi BD de mi huella digital y convertir mi DPFPTemplate a DPFPSample para poder crear la imagen a partir de mi query de mi BD. Como le hago? espero su pronta respuesta, gracias!

    ResponderBorrar
  77. Muchas gracias por los tutoriales. Me fueron de mucha ayuda. Todo me funcionó maravillosamente

    ResponderBorrar
    Respuestas
    1. HOLA MIRA TODO TE FUNCIONO ME PODRIAS ORIENTAR, TENGO RESTO DE PROBLEMAS AL EJECUTAR LA APP, Y TENGO TODO INSTALADO Y HE REVISADO NO SE Q MAS HACER, TE AGRDECERIA SI ME PUDIERAS AYUDAR mira este es el una parte del error!!!


      Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: com.digitalpersona.onetouch.jni.JniException
      at com.digitalpersona.onetouch.capture._impl.DPFPCaptureFactoryImpl$CaptureImpl.startCapture(DPFPCaptureFactoryImpl.java:187)
      at Formulario.CapturaHuella.start(CapturaHuella.java:369)
      at Formulario.CapturaHuella.formWindowOpened(CapturaHuella.java:565)
      at Formulario.CapturaHuella.access$100(CapturaHuella.java:49)
      at Formulario.CapturaHuella$5.windowOpened(CapturaHuella.java:423)

      Borrar
    2. HOLA MIRA TODO TE FUNCIONO ME PODRIAS ORIENTAR, TENGO RESTO DE PROBLEMAS AL EJECUTAR LA APP, Y TENGO TODO INSTALADO Y HE REVISADO NO SE Q MAS HACER, TE AGRDECERIA SI ME PUDIERAS AYUDAR mira este es el una parte del error!!!


      Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: com.digitalpersona.onetouch.jni.JniException
      at com.digitalpersona.onetouch.capture._impl.DPFPCaptureFactoryImpl$CaptureImpl.startCapture(DPFPCaptureFactoryImpl.java:187)
      at Formulario.CapturaHuella.start(CapturaHuella.java:369)
      at Formulario.CapturaHuella.formWindowOpened(CapturaHuella.java:565)
      at Formulario.CapturaHuella.access$100(CapturaHuella.java:49)
      at Formulario.CapturaHuella$5.windowOpened(CapturaHuella.java:423)

      Eliminar

      Borrar
  78. Muchas gracias, todo funciono perfecto, de verdad me ayudaste bastante, saludos desde Celaya Guanajuato México

    ResponderBorrar
    Respuestas
    1. HOLA MIRA TODO TE FUNCIONO ME PODRIAS ORIENTAR, TENGO RESTO DE PROBLEMAS AL EJECUTAR LA APP, Y TENGO TODO INSTALADO Y HE REVISADO NO SE Q MAS HACER, TE AGRDECERIA SI ME PUDIERAS AYUDAR mira este es el una parte del error!!!


      Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: com.digitalpersona.onetouch.jni.JniException
      at com.digitalpersona.onetouch.capture._impl.DPFPCaptureFactoryImpl$CaptureImpl.startCapture(DPFPCaptureFactoryImpl.java:187)
      at Formulario.CapturaHuella.start(CapturaHuella.java:369)
      at Formulario.CapturaHuella.formWindowOpened(CapturaHuella.java:565)
      at Formulario.CapturaHuella.access$100(CapturaHuella.java:49)
      at Formulario.CapturaHuella$5.windowOpened(CapturaHuella.java:423)

      Eliminar

      Borrar
    2. Hola Janson, podria por favor indicarme si ha logrado solucionar este inconveniente? tengo un problema similar y no he podido detectar cual es el archivo que me hace falta agregar.

      Muchas gracias de antemano.

      Borrar
  79. Todavía no reviso todo con calma, y todo apunta que es un excelente trabajo desarrollado. Muchas gracias por tu tiempo y el compartirlo con demás desarrolladores...
    Y tienes toda la razón "el conocimiento AUMENTA cuando se comparte", muy buena filosofía de trabajo...

    ResponderBorrar
  80. me podrias facilitar el sdk no lo logro conseguir
    mi correo es guillermomendez.ing@gmail.com

    ResponderBorrar
  81. Saludos, estuve investigando y el lector de huella digital Persona al parecer no es compatible con Windows 10 y 8, me podrías decir si ¿¿¿hay manera de adaptarlo a estos sistemas operativos???, y ¿¿los archivos Jar que utilizas pueden ser compatibles con otros lectores ???.. de antemano muchas gracias ....

    ResponderBorrar
  82. Hola Ya hice todo solo que no me guarda en la base de datos me podrias ayudar??
    Te a que correo te envio el proyecto para que me pudieras hacer el favor de revisarlo.

    Saludos

    ResponderBorrar
  83. Muchisimas gracias, muy buen aporte, me sirvió bastante

    ResponderBorrar
  84. Hola Jair, he estado programando un lector 4000B, siguiendo el tutorial, sin embargo tengo el siguiente error y no he podido localizar el archivo que debo incluir en mi proyecto o instalacion para que se ejecute correctamente:

    El error es el siguiente:

    Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: com.digitalpersona.onetouch.jni.JniException
    at com.digitalpersona.onetouch.capture._impl.DPFPCaptureFactoryImpl$CaptureImpl.startCapture(DPFPCaptureFactoryImpl.java:187

    Agradezco de antemano sus comentarios-

    ResponderBorrar
  85. Buen Dia
    me parece excelente el aporte por desgracia no he podido descargar el DigitalPersona One Touch for Windows SDK 1.6.1 me podrias apoyar con alguna direccion para descargarlo o pasarmelo a mi correo juliocmoreno92@gmail.com

    ResponderBorrar
  86. Hola quisiera un tutorial o algo asi en C# con SQLServer nose si alguien haya encontrado o ha podido hacer algo.

    ResponderBorrar
  87. hola buenas tardes estaexcelente tu programa gracias por hacerlo abiertamente solo tengo una duda cuando mandas llamar el metodo ProcesarCaptura cuales metodos metes en este.

    ResponderBorrar
  88. hola muy bueno tu aporte pero tengo un problema es que me sale un error de al ejecutar el programa sale esto "java.lang.UnsatisfiedLinkError: C:\Windows\System32\otmcjni.dll: Acceso denegado" y pues no se como solucionarlo te agradezco si me puedes colaborar

    ResponderBorrar
    Respuestas
    1. has tenido la solucion amigo ? me sale el mismo problema no se si es por el error de la version de 64 bits

      Borrar
  89. ¿En que formato se guarda los templates?
    Hay alguna forma por ejemplo de usar otro lector biometrico y que las huellas se reconozcan normal. Quiero dejar de usar el lector DIGITAL PERSON a un SUPREMA BIOMINI SLIM, las huellas se pueden recuperar

    ResponderBorrar
    Respuestas
    1. Hola amigo, buen dia.

      La verdad creo que no es posible, ya que cada sdk, tiene su propia forma de codificar y decodifcar en este caso los templates de la huella que genera el Digital Persona, puesto que en la base de datos se guarda como una cadena de bytes y en este caso en el gestor de base de datos MySql el campo es tipo BLOB, tal como lo fuera el guardar una imagen en la base de datos donde tambien se usa el mismo tipo de campo.

      Luego entonces te sugiero revises la api o el sdk del lector que deseas usar para mirar la compatibilidad, o tambien revisar la documentacion de Digital Persona en sus nuevas versiones de sdk para estudiar esa posibilidad.

      Personalmente podria decirte que nunca se me ha presentado el caso, pero por lo que se del sdk que use en el post es que este solo es compatible con el sdk gold, y todos productos de digital persona que hoy dia se conoce como crossmatch.

      Saludos.
      JARC

      Borrar
  90. Me podrias ayudar quiero obtener la huella y poder guardarla en una variable o en un array...no quiero insertarla en una base de datos

    ResponderBorrar
  91. Hola a todos, tengo una duda, como puedo hacer que al momento de verificar las huellas guardadas en la base datos, me muestre en imagen todas las huellas registradas. Digamos dentro de un JLabel dibujar cada huella.

    ResponderBorrar
  92. Excelente, muchas gracias, me sirvió mucho, ahora debo adaptarlo a mi sistema, pero estoy fuera de practica con Java

    ResponderBorrar
  93. hola, necesito ayuda en que la identificación de la huella se active sin tener que guardarla antes y que el nombre aparezca en un jtextfield... ayuda.. gracias por compartir...

    ResponderBorrar
  94. no se puede enviar a la base de datos....como haria eso me puede ayudar estoy haciendo en netbeans 11

    ResponderBorrar
  95. tal vez les interese mi video tutorial, saludos
    https://youtu.be/wNQh2Xub5qU

    ResponderBorrar
  96. A mí me mandó error en el método guardarhuella no se si puedas axiliar

    ResponderBorrar
  97. Buenos dias, cuando ejecuto el app me sale el siguiente error "El Sensor de Huella Digital esta Desactivado o no Conectado" pero el pc si me detecta el dispositivo

    ResponderBorrar
    Respuestas
    1. debes instalar el sdk. walteralvarez75@hotmail.com

      Borrar
  98. Hola buenas. Si me pasan el link de descarga por favor. El que esta ya no esta disponible. Gracias.!

    ResponderBorrar