viernes, 4 de diciembre de 2009

¡ Ahora sí !

Ahora si que si. El lector recibe correctamente los datos desde el terminal.
Tras varias horas de depuracion, llegué al fallo. Una simple confusión entre el caracter 'F' y el byte 0xF. Ya me vale.

En esta captura se ve el intercambio de tramas con la estructura descrita en el post anterior:
1. El lector (tramas de color rosas) envía el AID del applet
2. El applet (tramas de color azul) responde con un código de estado 90 00 (Conclusión satisfactoria)
3. El lector pide datos con el comando 00 70 00 00.
4. El applet envía un primer bloque que representa el número de registros de datos que va a enviar, que en este caso son 0x31 (caracter 1) + el código de estado 90 00
5. El lector pide siguiente dato (Primer y último bloque de datos)
6. El applet envía los datos (Trama más grande, de 249 bytes) + Código de estado 90 00
7. El lector pide el último dato, que será el DNI del cliente
8. El applet responde con el DNI.
9. El lector vuelve a pedir datos.
10. El applet ya no tiene datos para enviar y le responde con el caracter '%'
11. El lector interpreta que ya no hay más datos a enviar y cierra la comunicación.

Con el DNI de cliente y la fecha y hora del sistema actual (que por motivos desconocidos, diciembre le pone el mes número 11) , se genera un fichero xml que será procesado por el sistema receptor para dar lugar a un interfaz swing que permitirá manejar esta información a la persona encargada de este sistema (editar, borrar, guardar en la base de datos...)


Los datos que se mostrarán en esta interfaz swing son los datos personales del cliente, fotografía (opcional, en caso de no tener foto de cliente se mostrará una genérica) y la lista de la compra, que en este caso, ya que he tenido que introducir los datos manualmente, solo hay un producto.


Todo esto funciona en la tarjeta etiquetada como 'A'. He probado en la tarjeta B a cargar un html con css externo y no es posible visualizarlo correctamente como ya me sucedía con otras tarjetas.

Futura sesión: He intentado lanzar el navegador desde el servlet Transfer tanto dentro del método process como creando un método aparte e invocandolo desde el mismo.

byte[] temp1 = new byte[(short)(url1.length + 2)];
temp1[0] = (byte) 0x31;
temp1[1] = (byte)url1.length;
Util.arrayCopy(url1, (short)0, temp1, (short)2, (short) url1.length);
ProactiveHandler proHdlr2 = ProactiveHandlerSystem.getTheHandler(); //No lo coge
proHdlr2.init( PRO_CMD_LAUNCH_BROWSER , (byte) 0, DEV_ID_TERMINAL);
proHdlr2.appendArray(temp1, (short) 0, (short) (2+url1.length));
proHdlr2.send();
Este código ya lo he probado con el proyecto de TID y funciona, pero me temo que es porque no está dentro del método processToolkit, así que tendré que pensar como apañarmelas para lanzarlo de otra manera, si es que existe. Sino habrá que hacer una guarrería del tipo 'pongo enlace que redirija a la página cuando se pulse continuar...'

Además, tengo que hacer lo posible por reducir código ya que el usar el sistema de ficheros me incrementa el tamaño del fichero .cap de forma considerable. Creo que reharé un poco el css para las páginas que no son estáticas, o como última medida, reducir la funcionalidad del sistema.

Y ahora, de puente :)

1 comentarios:

Anónimo dijo...

ANIMO COMPI!!!!
ya no te queda mucho!!

Por cierto!me ha encantado el widget de musica

1besitooo

Publicar un comentario