lunes, 21 de diciembre de 2009

Integración vol. I

Hoy ha sido una mañana muy productiva, y es que si quitamos los 'N' minutos del café, los 'M' momentos de parloteo y demás interrupciones, las cosas avanzan a mayor ritmo.

En una primera prueba de todo el sistema montado (todas las clases y demás) parecía que la comunicación entre la parte lectora y la escritora era imposible. Tras depurar, me percaté de un error de declaración. Y es que acostumbrarse a utilizar el tipo byte no es bueno, sobre todo cuando lo que quieres meter dentro es algo superior al valor 128... Viva.

Al 'traducir' al inglés todo, olvidé cambiar una pequeña comprobación la cual ha sido fácil de detectar. En español, el tipo de pago es Efectivo o Tarjeta. En un punto del programa identifico cuál de las dos opciones está pulsando el usuario con una simple comprobación de la primera letra de la palabra que entra, en este caso, 'E', o 'T'. Pues bien, en inglés, esto se ha traducido como Cash y Card, y como ambas iniciales son las mismas, el comportamiento no era el esperado. La solución ha sido chequear la tercera letra de la palabra, 's' en Cash, y 'r' en Card. Así de simple.

Sigo con el mismo problema del refresco del navegador. Sí, durante dos días no tuve problemas y ahora vuleta a lo mismo. Creo que cambiando el número de vueltas del for que controla la espera entre una ejecución y otra se puede burlar este efecto. El problema va a ser enfrentarse a esto en la tarjeta real...

Se ha modificado el comportamiento a la hora de pulsar 'pagar'. Ahora, aunque el cliente haya pagado, se puede volver atrás pulsando en un enlace (add more products) que reactivará el lector NFC y cargará la última compra. A partir de aquí se pueden seguir leyendo etiquetas.

Con este sistema he ido pagando e introduciendo cada vez un producto más, y con una lista de hasta 6 productos no he tenido problemas para volcar los datos. Sin embargo, el incluir uno más ha ocasionado problemas en la comunicación. Concretamente, todos los datos los envía, pero en la última trama el pc debería cerrar la comunicación (ya que está recibiendo el caracter '%') y no lo hace. No tengo claro que esto sea por el volumen de datos enviado, seguramente será porque el simulador ha empezado a hacer de las suyas, pero esto ya lo comprobaré mañana.

En un principio, la integración está hecha, salvo pequeños detalles que aunque en una presentación se puede 'engañar' al espectador, hay que arreglar.

Al ver que se podía probar todo el sistema de inicio a fin, he querido volcarlo en la tarjeta. Tengo en mi poder 5 de las 10 tarjetas que me enviaron para el SIMagine. Así que he cogido la tarjeta identificada como 'B' y al ver que no tenía nada dentro he cargado el paquete Utility. Mal. Me ha ocasionado un 6982, o un código similar que no recuerdo que significa error de seguridad. Estupendo.

Para la versión de simulación (no se por qué lo hice aquí) creé el applet lector (ShopServlet) con un AID específico, ya que en el wizard me lo indicaba así si quería que funcionase en una tarjeta real. Como el applet escritor (Transfer) se encuentra en el mismo paquete que el anterior, el AID debe ser igual en los N primeros bytes y distintos en los 2 últimos (?). El cambiar los identificadores directamente en el descriptor (gdp) es una guerra perdida. Por mucho que los cambies a mano, saltará un error en este fichero dificilmente de arreglar. Por eso lo más sencillo es crearse un nuevo proyecto. He vuelto a llamarlo Telecompring a secas (ya tenía las versiones de la 2 a la 5...)

Por último, he probado (a lo tonto) a meter una de las tarjetas que aún no había usado (tarjeta 'C') y he cargado el paquete Utility. Perfecto, 90 00.
Siguiente paso, cargar e instalar applets del proyecto Telecompring. También 90 00. No me lo podía creer. Miro el fichero cap y únicamente pesa 33Kb. ¿Qué está pasando? ¿Apenas he borrado código y he bajado 10Kb? ¡Si encima tengo un bucle recorriendo un entero! No importa, es genial.
Mapeo los servlets, cargo el static content, y entonces caigo. Ouch! Mi contenido estático está hecho para simulación! Es decir, el css es externo y para que funcione sobre tarjeta hay que incrustarlo en las páginas web a mostrar.

Lo veo tedioso, seguiré mañana.

0 comentarios:

Publicar un comentario