domingo, 29 de noviembre de 2009

0 comentarios

Telecompring - Cacharros

Unicamente dispongo un teléfono con soporte NFC y SCWS, y es el Sagem my700x contactless. Para probar la parte SCWS tengo también un LG Renoir, que es muy útil ya que el navegador adapta las páginas html al tamaño de su pantalla (que es bastante grande)
agem my700x Contactless

LG Renoir

Para cargar la aplicación en la tarjeta es necesario un lector. Actualmente estoy utilizando uno de Gemalto, pero cualquiera vale para esto.

Lector de tarjetas de Gemalto

Las etiquetas NFC aún no están en mi poder, por lo que de momento sólo puedo probar la segunda parte del proyecto, que es la escritura. Para esta parte dispongo de un lector de Gemalto que se conecta vía USB al pc. La aplicación receptora estará escuchando por medio de este aparato.


GemProx -PU de Gemalto

Al probar esta parte, ocurren errores con el protocolo PC/SC que puede ser debido a los drivers del lector. El entorno de desarrollo (Developer Suite) únicamente reconoce que el lector está conectado en una de cada 20 (o más) inserciones.

Al lanzar la aplicación receptora, el GemProx envía un APDU con el AID del applet con el que se va a comunicar e inmediatamente salta una traza de excepción indicando que la comunicación no ha sido posible.

12-nov-2009 13:50:24 com.gemplus.mugel.smartcardfwk.SmartCardAccess sendAPDU
INFO: The APDU Send process failed (CardTerminal error)
opencard.core.terminal.CardTerminalException: Pcsc10LockableTerminal: PCSC Exception in method SCardGetStatusChange: error executing SCardGetStatusChange
return code = 8010002e
at com.ibm.opencard.terminal.pcsc10.Pcsc10LockableTerminal.translatePcscException(Unknown Source)
at com.ibm.opencard.terminal.pcsc10.Pcsc10LockableTerminal.updateCardStatus(Unknown Source)
at com.ibm.opencard.terminal.pcsc10.Pcsc10LockableTerminal.poll(Unknown Source)
at com.ibm.opencard.terminal.pcsc10.Pcsc10LockableTerminal.internalSendAPDU(Unknown Source)
at opencard.core.terminal.CardTerminal.sendAPDU(Unknown Source)
at opencard.core.terminal.SlotChannel.sendAPDU(Unknown Source)
at opencard.core.service.CardChannel.sendCommandAPDU(Unknown Source)
at opencard.opt.util.PassThruCardService.sendCommandAPDU(Unknown Source)
at com.gemplus.mugel.smartcardfwk.SmartCardAccess.sendAPDU(Unknown Source)
at com.gemplus.mugel.smartcardfwk.SmartCardAccess.sendAPDU(Unknown Source)
at com.gemplus.mugel.smartcardfwk.SmartCardAccess.sendAPDU(Unknown Source)
at com.gemplus.mugel.smartcardfwk.SmartCardAccess.sendAPDU(Unknown Source)
at com.gemalto.contactless.framework.ReaderFrame$TerminalSender.sendCmd(Unknown Source)
at com.gemalto.contactless.framework.ReaderFrame$4.run(Unknown Source)
Traza de la excepción

Sigo esperando contestación por parte de Gemalto España con respecto a esto.

Telecompring - Presentación

Telecompring es el nombre de mi Proyecto de Fin de Carrera (Ingeniería Técnica de Telecomunicación, Telemática) y consiste en una aplicación para la SIM de los teléfonos móviles en el que se utilizan principalmente las tecnologías NFC (Near Nield Communications) y SCWS (Smart Card Web Server).

Actualmente, Telecompring ha pasado el primer filtro del proceso de selección del concurso SIMagine 2010 de Gemalto. Por lo que el plazo máximo de entrega será a mediados de enero.

Desarrollado en JavaCard 2.2.2, Telecompring es una aplicación orientada al servicio de compra a domicilio de cualquier comercio, aunque también sería válido como sistema de gestión de inventario. En la versión principal, hablaremos de la primera opción.

La idea es una alternativa a la compra por internet para la gente que no se atreve a esto, dado que no está viendo lo que está comprando. Lo que se propone, es que con un teléfono móvil con soporte NFC y SCWS podamos ir a cualquier establecimiento escaenando los productos que queremos comprar sin necesidad de cargar con ellos. Al finalizar el recorrido, esta información se vuelca en un ordenador que podría ser la caja registradora donde se guardarán los productos y la información de usuario para que los empleados del establecimiento puedan recopilar todos los productos marcados, empaquetarlo todo y enviarlo al domicilio del usuario. Esto evita tener carros de la compra esperando durante horas en el establecimiento hasta la hora del envío.

Al escanear un producto, aparecerá en pantalla el nombre del mismo, fotografía, su precio y un cuadro de texto en el que se pedirá la cantidad necesaria (Kilos, unidades, litros...) para que el usuario pueda configurar el pedido.

Todos los productos escaneados se van almacenando en la lista de la compra, que estará accesible al usuario en la pestaña Subtotal, que además mostrará el importe total de la compra, y la opción de pago (efectivo o tarjeta). Si el usuario lo desea, podrá también editar los productos guardados o incluso borrarlos de la lista.

Una vez realizada la compra, pulsaremos en pagar, lo que chequeará si existen datos de usuario almacenados, que en caso contrario pedirá por pantalla al usuario su nombre, dirección donde recibir los pedidos, teléfono, número de tarjeta y DNI.

A nivel técnico, Telecompring consta de dos partes diferenciadas:

1. Lectura

En esta parte, el terminal escanea productos que poseen etiquetas NFC (NFC Tags) con el simple hecho de acercarlo a los mismos. Gracias a esto, en el móvil se cargará una página html en la que se muestra la información leída del producto.


Ejemplo captura NFC en simulación

En este ejemplo (no pertenece a Telecompring) la información almacenada en las etiquetas NFC es el identificador de objeto, su nombre, y su color, que se muestran en la parte izquierda de la página. El identificador además, se utiliza para cargar la fotografía previamente almacenada en el contenido estático.

En simulación, es posible mostrar páginas html con un css externo gracias a la tecnología SCWS. Sin embargo, en las pruebas sobre el terminal esto no es así. Hay que incluir el css dentro del propio html, en la etiqueta link, lo que incrementa el tamaño de estos ficheros.

El intercambio de datos se realiza entre la etiqueta NFC y el applet instalado en la SIM en modo lectura (reader mode). Para ésto, el terminal posee una antena NFC que abre un campo de radiofrecuencia por el que fluirán los datos. La etiqueta es un dispositivo pasivo, por lo que es responsabilidad del applet ir pidiendo los datos almacenados en la etiqueta a través de APDUs (Application Protocol Data Units) que es el formato de paquetes utilizado.

2. Escritura

En este modo, el terminal actúa como un dispositivo pasivo. Es necesario un nuevo applet que esté en el modo card emulation y es responsabilidad de otra aplicación el pedirle los datos a transmitir que igualmente se comunicarán mediante APDUs. Este applet entrará en acción al acercarse al campo de radiofrecuencia que abra un dispositivo externo, con el que se va a comunicar, quien empezará la comunicación enviando el AID (Aplication Identifier) del propio applet.

Tras el intercambio de información (lista de la compra), se mostrará en el pc receptor (caja registradora, por ejemplo) la información personal del cliente, una tabla con los productos adquiridos y diversos botones para modificar estos datos, ya que serán almacenados en una base de datos.

Mi primera entrada

Entrada de prueba para la asignatura 'Software libre' de ADA-Madrid y 'Aplicación de la Red al Periodismo'