FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Componentes lectores DigitalPersona
Saludos
Para aquel que lo recuerde, en este tema habia solicitado un poco de ayuda referente a los lectores de huella digital. Bueno, al fin y al cabo me he decidido por un lector de los U.Are.U (DigitalPersona) En concreto el que cayo en mis manos es un DigitalPersona U.are.U 4000B Para lograr comunicarme con el desde Delphi hago uso de SDK "DigitalPersona One Touch for Windows" Cuestion, es andar metiendose con controles ActiveX, OLE, Variants.. ese tipo de cosas que cuando uno esta programando y apreta . o control + espacio y no sale nada, son todas llamadas a metodos "misteriosos" En fin, luego de estudiar un poco, decidi crearme un componente wrapper para poder manejar facilmente el lector. Creo que esta lejos de ser perfecto, asi que bienvenidas sean las criticas/sugerencias. Al parecer cumple bien, será cuestion de probarlo en produccion Lo tengo alojado en un repositorio en GitLab. Esta liberado bajo la licencia BSD (la de 3 cláusulas). Asi que basicamente pueden usarlo a su antojo como si fuera suyo El funcionamiento es bastante similar al GRFingerPrint que publico Al Gonzalez hace algun tiempo. Es decir, este componente lo unico que hace es facilitarle la vida al programador delphi; el verdadero trabajo lo hace el SDK. De hecho es requisito que se importen las librerias ActiveX de DigitalPersona (estan en el repo para que la instalacion sea click and run) Trate de hacerlo mas sencillo posible, asi que minimize todo a dos componentes: 1. TDPFingerPrintEnroll --> Usado para registrar huellas digitales, mediante el tipico proceso de 4 lecturas de un dedo. Hace uso del control ActiveX que se provee en el SDK. Funciona estilo "TxxDialog", es decir, tiene su metodo Execute Para los Delphinianos: La verdad no se me ocurrio mejor idea que crear una instancia del control ActiveX y luego meterle como Parent un TForm. El form se visualiza con ShowModal al llamar a Execute y se proveen 2 botones (mrOk y mrCancel). Sencillisimo Hay 3 eventos posibles: - AfterExecute: Creo que su nombre lo dice todo. Basicamente se dispara cuando se cierra el TForm que comentaba antes. Provee bastante informacion util, como por ejemplo cada dedo con su huella capturada. Para ello cree unos tipos de datos para identificar facilmente a cada dedo (usando enumerativos y set, y helpers para que sea aun mas facil) - OnFigerEnroll: Se dispara al registrar una nueva huella. Devuelve el dedo en cuestion y el template generado en string - OnFingerPrintDeleted: Se dispara al eliminar una de las huellas registradas. Para eliminar una huella registrada en el control ActiveX, se debe hacer click sobre uno de los dedos que estan como registrados (color verde). Solo publica una propiedad: MaxFingerPrintsAllowed, la cual indica la cantidad maxima de huellas que se puede registrar 2. TDPFingerPrintReader --> Representa nuestro lector, en estado de "capturando". Es decir, si esta activo, cada vez que se apoye el dedo en el lector, nuestra aplicacion en cuestion se entera a traves de los eventos. Creo que el mas importante de los eventos de este componente es el OnCaptured, que se va a disparar cuando se capture una lectura exitosa (de calidad optima para verificacion). Este evento es importante porque nos provee una referencia a una interface de tipo IFingerComparer IFingerComparer es una interface que viene "cargada" con el template de la huella capturada y lista para comparar contra las que tenemos almacenadas en nuestro soporte externo (en el 99.99% de los casos una BD :)) Para ello, emplearemos el metodo CompareTo Asi de sencillo: Verificacion:
Registracion:
Instalacion: https://gitlab.com/ortuagustin/TDPFi...ster/README.md Proximamente en Español, pero deberia entenderse ya que el propio Delphi esta en Ingles. PD: Si bien es interesante el tema de crear componentes en Delphi, esta es mi primera experiencia. Lo digo para que los mas veteranos no me maten :D Última edición por AgustinOrtu fecha: 02-09-2015 a las 06:17:41. |
#3
|
||||
|
||||
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
Gracias por compartirlo Agustín
Saludos
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... |
#5
|
||||
|
||||
Gracias por compartir
Saludos |
#6
|
||||
|
||||
Cita:
Me da gusto saber que has creado esta solución, Agustín. Sólo felicitarte por atreverte a hacer tu primer componente en Delphi. El mundo de las bibliotecas es fascinante, aunque sólo si te matan reconocen tus esfuerzos. |
#7
|
||||
|
||||
Aunque vayas a usar un lector digital, tu pregunta realmente no está relacionada con ese tema. Por favor otro hilo para exponer tu duda.
// Saludos |
#8
|
||||
|
||||
Gracias a todos por los comentarios
Al, acá en Argentina el "no me maten" viene a decir algo así como "sed blandos conmigo" . Al escribir a veces me dejo llevar y me olvido de esos pequeños detalles En fin, quería comentarles que el componente lo pude instalar en 10 Seattle sin modificarle nada y funciona muy bien. |
#9
|
||||
|
||||
Pues bien, resulta que ahora tengo problemas
No logro encontrar el motivo, pero basicamente cualquier evento tanto del componente como el de los controles ActiveX se comen las excepciones es decir, hacer algo como esto:
Y no pasa nada La unica forma de "atraparla" es con Run (F9). Es decir, desde el IDE y con el depurador si veo la excepcion. Sino no. Trate de seguirla y termina en codigo ASM del que poco entiendo. Probe las siguiente variantes:
Y fracase estripotosamente Esto sucede en una aplicacion con solo el componente que diseñe yo o bien su contraparte COM. Es decir, la "culpa" esta ahi; pero no tengo ningun manejador OnApplicationException o similar. Tampoco hay un bloque que coma excepciones, o al menos no lo he visto (pero eso deberia ser rastreable usando el depurador). Es mas, si coloco un componente ApplicationEvents, en su evento OnException nunca llega la excepcion en cuestion Creo que hay algo del modelo COM que se me escapa. A ver si alguien puede arrojar un poco de luz Edito: Aun mas confundido. Esto hace aparecer la excepcion pero...
...no me gusta para NADA, aunque es MUCHO peor no poder ver las excepciones Última edición por AgustinOrtu fecha: 15-09-2015 a las 03:07:24. |
#10
|
||||
|
||||
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
¿Actualizaciones para Delphi 10?
[dcc32 Error] Unit1.pas(13): E2003 Undeclared identifier: 'TFingerPrints' [dcc32 Error] Unit1.pas(13): E2003 Undeclared identifier: 'TFingerSet' [dcc32 Error] Unit1.pas(29): E2005 'TFingerPrints' is not a type identifier [dcc32 Error] Unit1.pas(29): E2005 'TFingerSet' is not a type identifier |
#12
|
||||
|
||||
#13
|
||||
|
||||
#14
|
||||
|
||||
¿El fabricante no tiene nada?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#15
|
||||
|
||||
Creo que me queda trabajar con los dll y la guía SDK del fabricante
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda Lector de Huellas DigitalPersona | KingOfDragons | Varios | 34 | 12-11-2018 08:48:32 |
Lectores Biometricos Zk Y Uau | hackpro | Varios | 7 | 26-02-2014 23:43:24 |
Ayuda con lectores de barras | dape | Varios | 6 | 30-04-2010 13:59:11 |
DigitalPersona One Touch SDK | mmusashi | OOP | 2 | 23-02-2010 05:33:23 |
Para los lectores del club | eduarcol | Humor | 6 | 17-05-2005 19:11:16 |
|