You are on page 1of 10

Documentación

Software para Control de Visitas

El dispositivo utilizado para las


pruebas de este proyecto fue el
siguiente lector de huellas digitales:

digitalPersona U.are.U 4500

Desarrollado por Santiago Valenzuela


C# .NET Developer
svg-94@live.com.mx
mastersuv@gmail.com

El propósito de este documento es brindar información de apoyo sobre el proceso del


desarrollo de este proyecto, con el fin de facilitar cambios, modificaciones y/o mejoras
futuras.

Proyecto desarrollado utilizando C# bajo el .NET Framework 4.5 con Visual Studio 2013
Ultima compilación 6 de diciembre de 2015 (Solución FPP)

SDK para trabajar con el SDK Oficial de digitalPersona


http://devportal.digitalpersona.com/

Framework para trabajar con la Camara Web: AForge.NET


http://www.aforgenet.com/

Documento Oficial de Apoyo


http://www.crossmatch.com/uploadedFiles/Support/Reference_Material/Guides/SDK_Guides/Pro
-SDK-.NET-Developer-Guide.pdf
Introducción
El objetivo de esta aplicación es la de llevar el Control de los Visitantes a través de el
escaneo de su huella desde una plataforma web programada con PHP y utilizando una
base de datos de MySQL.

La aplicación fue desarrollada utilizando el SDK Oficial de digitalPersona y no se ha


utilizado FlexCode ni tampoco ningún SDK genérico.

En la implementación de este proyecto, podremos ver que se están manejando dos


archivos ejecutables “EscaneoHuella.exe” y “RegistroHuella.exe”, sin embargo, estos dos
ejecutables son en realidad el mismo, es una misma solución con dos formularios pero
siendo en realidad compilaciones separadas, definiendo el formulario de arranque en el
archivo Program.cs

C1

El archivo Program.cs de la solución FPP de Visual Studio es el encargado de definir qué


formulario será el que arrancará. Como se puede ver en la línea que está subrayada en
la imagen C1. En este caso, el formulario que se ejecutara es VerificationForm y antes, se
ve comentada la misma línea para arrancar CaptureForm.
El motivo de que se hayan creado dos ejecutables y no solo uno fue la flexibilidad para
trabajar con los URI Handlers, y que la aplicación pueda tener otras aplicaciones, como
por ejemplo, únicamente acceder al registro, sin tener que pasar por la verificación de la
huella. Este tema se tocará más adelante.

Solución FPP - Formularios

C2

Esta solución cuenta con dos formularios como se puede observar en la imagen C2.

VerificationForm.cs.
Este formulario se encarga de leer la huella del usuario por primera vez.
Hace la consulta a la base de datos, busca las huellas registradas, y decide qué hacer si
la huella es encontrada y que hacer si no.

Si al consultar la base de datos se encuentra coincidencia de huella, es decir, el visitante


ya había sido registrado anteriormente, la aplicación tomará la foto del usuario
instantáneamente después de haber quitado su dedo del lector y un registro será
agregado a la tabla Log con la fecha, el id del usuario, y su foto convertida a una cadena
de base64.

Además, se obtiene toda la información personal del Usuario y es enviada por


parámetros GET a una ventana del navegador de internet que esté definido como
predeterminado. La URL a la cual se va a redirigir el navegador será leída del archivo
urlExiste.dat que se encontrará en la carpeta raíz del sistema.

De no ser encontrada la ninguna huella que coincida con la del Usuario, la aplicación
ejecutara a RegistroHuella.exe, que equivale al formulario CaptureForm.cs el cual se
encargará de generar la nueva plantilla de la huella del usuario y será almacenada en la
base de datos, al igual que su foto de registro.

CaptureForm.cs.
Este formulario se encarga de registrar a los usuarios cuya huella aún no existe en el
sistema. Este formulario será llamado cuando VerificationForm no encuentre ninguna
huella que coincida con la del usuario en la base de datos.

Desde el momento en que se inicie este formulario, podremos ver que se activa el video
de la Cámara Web con la cual se tomará la foto de su registro, en este momento la
aplicación queda a la espera de que el usuario escanee su huella para ser almacenada.

Por definición del mismo SDK, es necesario que para generar la plantilla de la huella de
un usuario, este debe proporcionar 4 muestras de un mismo dedo. Si alguna de las 4
muestras carece de la calidad necesaria, o no coinciden entre ellas, el SDK arrojará una
excepción y se solicitará al usuario que ingrese de nuevo las 4 muestras.

Cuando la plantilla del usuario es generada satisfactoriamente, nos daremos cuenta de


que el botón “Registrar Visitante” se habilitará. La foto del usuario se tomará en el
momento justo después de presionar este botón, se creará un registro en la base de
datos, en la tabla Huellas y en la tabla Usuarios.

Además, la fecha de registro, y el idUsuario del usuario recién registrado será enviado
por parámetros GET a la URL especificada en el archivo urlRegistro.dat donde se le
podrá seguir dando seguimiento a su proceso de registro a través de un formulario web
en PHP.
Solución FPP – Métodos del SDK
Si bien, el código del proyecto puede parecer complejo, no lo es tanto cuando nos
damos cuenta de que la funcionalidad del lector digitalPersona funciona en base a 2
eventos globales que son controlados por el mismo SDK.

En todo el proyecto solo se hace uso de dos funciones importantes:

protected void Process(DPFP.Sample Sample)

Este método se encarga de procesar cada muestra proporcionada por el usuario, es


decir, cada que coloca su dedo en el lector y este la captura, se estará accediendo a esta
función y podremos hacer lo que queramos con el parámetro Sample. Utilizando este
parámetro es la forma en la que mostramos la imagen de la huella en el programa,
mientras se está escaneando.

En el caso del formulario VerificationForm, cuando obtenemos una muestra, la


aplicación accede a la base de datos para obtener todas las huellas registradas, y busca
si esta muestra del usuario coincide con alguna.

En el caso del formulario CaptureForm, requerimos que el usuario nos proporcione 4


muestras de un mismo dedo, y al tenerlas todas, procedemos a guardarla en la base de
datos, para que su huella y sus datos queden ligados.

void CaptureForm_OnTemplate(DPFP.Template template)

Este método se encarga de realizar algún proceso justo después de obtener las 4
muestras requeridas por el SDK para generar una plantilla. Es decir, cuando este método
se ejecute significa que ya tenemos la plantilla del usuario lista.

Este método solo es utilizado en el formulario CaptureForm en la que registramos la


huella del usuario.

Solución FPP – Métodos de MySQL


La comunicación con MySQL se realiza a través de MySQL Connector, incluido en el
archivo MySql.Data.dll por lo que este archivo es necesario para el funcionamiento del
programa. La cadena de conexión es obtenida leyendo el archivo connectionString.dat
que debe existir en la carpeta raíz del programa y tener el siguiente formato:

Server=localhost;Port=3306;Database=controlvisitas;Uid=root;Password=1234
private void AgregarRegistroLog(int idUsuario, DateTime Fecha, string Foto)

Este método se encarga de agregar (INSER INTO) un registro a la base de datos,


conteniendo el ID del Usuario, la Fecha y la cadena en base64 de la foto.

private void ObtenerUsuarios()

Este método se encarga de hacer una consulta a la base de datos (SELECT FROM) para
obtener la información de todos los Usuarios existentes en la base de datos, así como
toda su información personal, y estos datos son almacenados en una Clase llamada
Usuarios que cuenta con todos los atributos mismos de la base de datos.

private void ObtenerHuellas()

Este método se encarga de hacer una consulta a la base de datos (SELECT FROM) para
obtener las Huellas de todos los Usuarios existentes en la base de datos, y estos datos
son almacenados en una Clase llamada Huellas que cuenta con todos los atributos
mismos de la base de datos.

Solución FPP – Otros Métodos

public string ImageToBase64(Image image, System.Drawing.Imaging.ImageFormat format)


public Image Base64ToImage(string base64String)

Estos dos métodos se encargan de convertir una Imagen a una cadena de base64, y de
una cadena de base64 a una Imagen, respectivamente. Fueron utilizadas para convertir
la fotografía del usuario, en texto que podemos almacenar en la base de datos. Las
imágenes convertidas a base64 son muy fáciles de manipular desde PHP.
Solución Registro – Formulario
Para echar a andar el proyecto en conjunto con la aplicación web, es necesario definir
los URI Handlers en el nodo HKEY_CLASSES_ROOT del registro del sistema. La estructura
es la siguiente:

Para ello, hace falta seguir el procedimiento oficial proporcionado por Microsoft que
puede ser encontrado en la siguiente liga:
https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

Sin embargo, para agilizar la


implementación del sistema, se
desarrolló un pequeño programa
adicional que lo hace por nosotros.

Este programa debe ejecutarse como


Administrador, ya que accede al registro
del sistema por nosotros y crea los URI
Handlers automáticamente.

Lo único que debemos hacer es


seleccionar la ruta de los .exe
(EscaneoHuella.exe y
RegistroHuella.exe) y pulsar el botón
Crear Registro para cada uno de los .exe
C3
Una vez que realizado esto, podremos accionar nuestro programa desde cualquier sitio
web, creando un link como el siguiente:
<a href="EscaneoHuella:">Ejecutar Escaneo</a>

Al hacer click sobre el link Ejecutar Programa accionaríamos el ejecutable definido


desde el programa de Registro.

Si quisiéramos seleccionar otro ejecutable, tendríamos que ir al menú Opciones y


después seleccionar Borrar Registro para eliminar toda asociación del registro del
sistema con nuestra aplicación, permitiéndonos crearlo nuevamente.

Implementación
La implementación del sistema es bastante sencilla. Es necesario tener una carpeta única
para el proyecto, y colocarla en algún lugar que podamos recordar. Yo lo he colocado
en C:\ControlVisitas como se puede observar en la imagen C4

C4
Todos los archivos que se pueden ver en la imagen C4 son requeridos para que la
aplicación pueda ejecutarse, son utilizados tanto por el SDK de digitalPersona como por
MySQL y la cámara para fotografiar a los visitantes.

Los archivos EscaneoHuella.exe y RegistroHuella.exe serán los dos formularios de la


solución FPP, compilados con el Program.cs uno para cada caso. Es decir, para generar
EscaneoHuella.exe es necesario que el formulario de arranque sea VerificationForm, y
para generar RegistroHuella.exe es necesario que el formulario de arranque sea
CaptureForm.

El siguiente paso es crear los URI Handlers, para lo cual ejecutaremos el programa de
Registro como Administrador que en este caso se llama Regedit.exe

Y tendremos que seleccionar primero el archivo EscaneoHuella.exe y pulsar Crear


Registro, después lo mismo para el archivo RegistroHuella.exe tal y como se aprecia
en la imagen C5

C5

Si todo fue realizado correctamente, deberíamos poder ejecutar el sistema desde


cualquier página web, creando un enlace como sigue:

<a href="EscaneoHuella:">Ejecutar Escaneo</a>

Este link ejecutaría el programa de EscaneoHuella.exe

Y este otro:

<a href="RegistroHuella:">Ejecutar Registro</a>

Ejecutaría el programa de RegistroHuella.exe


Implementación – Base de Datos
La estructura de la base de datos es la siguiente:

Base de datos: controlvisitas

Tabla Huellas

Campo Tipo Tamaño


idUsuario Int (Entero) Default
Huella Blob Default

Tabla Log

Campo Tipo Tamaño


idLog Int (Entero) Default
idUsuario Int (entero) Default
Fecha DateTime Default
Foto LongText Default

Tabla Log

Campo Tipo Tamaño


idUsuario Int (Entero) Default
Nombre Varchar 256
Cedula Varchar 256
Direccion Varchar 256
Telefono Varchar 256
Celular Varchar 256
ARL Varchar 256
Serial Varchar 256
Fecha DateTime Default
Foto LongText Default

You might also like