14.12.2012 Views

Aplicaciones Móviles para WPAN's - Unidad Multidisciplinaria ...

Aplicaciones Móviles para WPAN's - Unidad Multidisciplinaria ...

Aplicaciones Móviles para WPAN's - Unidad Multidisciplinaria ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Facultad de Matemáticas<br />

Paquete didáctico de la Asignatura<br />

“<strong>Aplicaciones</strong> <strong>Móviles</strong> <strong>para</strong> WPAN’s”<br />

Impartida como asignatura optativa <strong>para</strong> los<br />

alumnos de la Licenciatura en Ciencias de la<br />

Computación, <strong>Unidad</strong> Tizimín<br />

Elaborado por:<br />

Maximiliano Canché Euán,<br />

Erika Llanes Castro,<br />

Cinhtia González Segura y<br />

Michel García García<br />

Tizimín, Yucatán.<br />

Agosto 2008 – Enero 2009


Contenido<br />

Manual de operaciones .................................................................................... 1<br />

<strong>Unidad</strong> I. Redes Inalámbricas de Área Personal, WPAN’s ............................ 1<br />

<strong>Unidad</strong> II. Desarrollo de <strong>Aplicaciones</strong> <strong>Móviles</strong> con J2ME ............................ 2<br />

<strong>Unidad</strong> III. Programación Bluetooh con J2ME .............................................. 2<br />

<strong>Unidad</strong> IV. Programación Bluetooth con Visual Basic .NET ........................ 3<br />

Contenido del CD ............................................................................................. 4<br />

Programa del curso .......................................................................................... 5<br />

Diapositivas del curso....................................................................................... 9<br />

<strong>Unidad</strong> I .......................................................................................................... 9<br />

<strong>Unidad</strong> II ....................................................................................................... 20<br />

<strong>Unidad</strong> III ...................................................................................................... 41<br />

<strong>Unidad</strong> IV...................................................................................................... 53<br />

Prácticas .......................................................................................................... 62<br />

<strong>Unidad</strong> I ........................................................................................................ 62<br />

<strong>Unidad</strong> II ....................................................................................................... 72<br />

<strong>Unidad</strong> III ...................................................................................................... 76<br />

<strong>Unidad</strong> IV...................................................................................................... 78<br />

Bibliografía...................................................................................................... 83<br />

i


Manual de operaciones<br />

Este paquete didáctico fue elaborado <strong>para</strong> impartir la asignatura “<strong>Aplicaciones</strong> <strong>Móviles</strong><br />

<strong>para</strong> WPAN’s”. Se presenta el contenido teórico a través de las diapositivas, se incluye<br />

material complementario <strong>para</strong> las presentaciones, también se incluyen ejercicios prácticos<br />

donde se aplican los conceptos vistos y que ayudan a la comprensión de los temas<br />

expuestos.<br />

En el CD que acompaña a este material didáctico se incluyen los instaladores necesarios así<br />

como algunas aplicaciones útiles <strong>para</strong> la impartición de las clases.<br />

A continuación se describe la correspondencia entre las diapositivas y los temas que forman<br />

parte de cada unidad. También se listan las prácticas que se incluyen, con su respectiva<br />

correspondencia con los temas del programa de la asignatura.<br />

Relación de todos los temas incluidos en el temario con su referencia a los<br />

archivos correspondientes y a las diapositivas estudiadas en cada uno de ellos.<br />

<strong>Unidad</strong> I. Redes Inalámbricas de Área Personal, WPAN’s<br />

Objetivo: Definir las redes inalámbricas y sus componentes, conocer el funcionamiento de<br />

los protocolos <strong>para</strong> redes de área local inalámbrica WPAN <strong>para</strong> poder diseñar e<br />

implementar una red de estas dimensiones.<br />

Tema Diapositivas<br />

Presentación de la <strong>Unidad</strong> 1 a 2<br />

1.1 Introducción a las redes inalámbricas 3 a 17<br />

1.2 Clasificación de las redes inalámbricas por su cobertura 18 a 23<br />

1.3 Redes inalámbricas de área personal WPAN 24 a 35<br />

1.4 Protocolos y tecnologías 36 a 45<br />

1.5 Comunicaciones ópticas: IrDa 46 a 60<br />

1.6 Bluetooth 61 a 85<br />

1.7 <strong>Aplicaciones</strong> bluetooth 86 a 87<br />

Prácticas 88<br />

Prácticas (Archivos) Temas<br />

Práctica 1.1 1.1<br />

Práctica 1.2 1.3<br />

Práctica 1.3 1.6<br />

Práctica 1.4 1.7<br />

1


<strong>Unidad</strong> II. Desarrollo de <strong>Aplicaciones</strong> <strong>Móviles</strong> con J2ME<br />

Objetivo: Al finalizar la unidad, el alumno explicará las características de los componentes de<br />

J2ME, su arquitectura, entorno de ejecución, requerimientos de hardware y software, y los<br />

conceptos básicos <strong>para</strong> desarrollar aplicaciones móviles<br />

Tema Diapositivas<br />

Presentación de la <strong>Unidad</strong> 1, 2<br />

2.1 Introducción a las aplicaciones <strong>para</strong><br />

dispositivos móviles<br />

3 a 20<br />

2.2 Componentes de J2ME 21 a 42<br />

2.3 Arquitectura del entorno de ejecución<br />

de J2ME<br />

43 a 48<br />

2.4 Ciclo de vida y componentes básicos<br />

de un MIDlet<br />

49 a 84<br />

2.5 Componentes avanzados de un<br />

85 a 150<br />

MIDlet<br />

2.6 Almacenamiento persistente: RMS 151 a 164<br />

Prácticas Temas<br />

Práctica 2.1 2.3<br />

Práctica 2.2 2.4<br />

Práctica 2.3 2.5<br />

Práctica 2.4 2.6<br />

<strong>Unidad</strong> III. Programación Bluetooh con J2ME<br />

Objetivo: Al finalizar la unidad el alumno aprenderá los conceptos básicos <strong>para</strong> desarrollar<br />

aplicaciones con J2ME <strong>para</strong> redes de área personal inalámbrica (WPAN’s).<br />

Tema Diapositivas<br />

Presentación de la <strong>Unidad</strong> 1, 2<br />

3.1 La API Bluetooth 3 a 14<br />

3.2 La API JABWT 15 a 21<br />

3.3 Protocolos de envío y recepción de datos 22 a 70<br />

3.4 Plataformas de desarrollo bluetooth con soporte Java 71 a 78<br />

3.5 Desarrollo de aplicaciones móviles <strong>para</strong> una WPAN 79 a 86<br />

Prácticas Temas<br />

Práctica 3.1 3.2<br />

Práctica 3.2 3.3<br />

2


<strong>Unidad</strong> IV. Programación Bluetooth con Visual Basic .NET<br />

Objetivo: Diseñar, crear y ejecutar aplicaciones móviles en un entorno de desarrollo<br />

visual y empleando un dispositivo PDA con Sistema Operativo Windows Mobile.<br />

Tema Diapositivas<br />

Presentación de la <strong>Unidad</strong> 1 a 3<br />

4.1 Fundamentos de desarrollo en .NET 4 a 8<br />

4.2 El proceso de desarrollo y compilación<br />

de una aplicación en .NET<br />

9 a 16<br />

4.3 Tratamiento de errores y herramientas<br />

de depuración<br />

17 a 27<br />

4.4 Desarrollo de aplicaciones con VB<br />

.NET<br />

28 a 35<br />

4.5 Acceso a datos con Microsoft .NET<br />

Framework 2.0<br />

36 a 48<br />

4.6 Introducción a la programación de<br />

dispositivos móviles<br />

49 a 51<br />

4.7 Desarrollo de aplicaciones <strong>para</strong><br />

52 a 62<br />

dispositivos móviles<br />

Prácticas Temas<br />

Práctica 4.1 4.1 y 4.2<br />

Práctica 4.2 4.3<br />

Práctica 4.3 4.4<br />

Práctica 4.5 4.5<br />

3


Contenido del CD<br />

El CD que acompaña a este material está organizado en dos carpetas, una de ellas contiene ejemplos<br />

de aplicaciones creadas que se emplean como ejemplos durante las sesiones y la otra contiene los<br />

archivos de instalación del software necesario en las unidades.<br />

4


Programa del curso<br />

Universidad Autónoma de Yucatán<br />

Facultad de Matemáticas<br />

Licenciatura en Ciencias de la Computación<br />

<strong>Aplicaciones</strong> <strong>Móviles</strong> <strong>para</strong> WPAN’s<br />

PROGRAMA<br />

Plan: 2004 Semestre: Quinto a Octavo<br />

Área: Ingeniería de<br />

Software/Redes<br />

Horas a la Semana: 4 horas<br />

Nivel: Optativa Horas al Semestre: 72 horas (56 hrs<br />

teóricas, 16 hrs<br />

practicas)<br />

Requisitos: Programación<br />

Fecha de Elaboración: Agosto, 2008<br />

Elaborado por: Maximiliano Canché Euán, Erika Llanes Castro, Michel García García,<br />

Cinhtia González Segura.<br />

Descripción de la Asignatura:<br />

En esta asignatura se describirán los conceptos importantes <strong>para</strong> el desarrollo de<br />

aplicaciones móviles <strong>para</strong> una red de área personal inalámbrica (WPAN), sus medios y<br />

las tecnologías de implantación más utilizadas (Java 2 MicroEdition, Visual Basic .NET, y<br />

Bluetooth). Se profundizará en la programación orientada a objetos y orientada a eventos<br />

<strong>para</strong> móviles, así como en los protocolos utilizados en una WPAN. Por último, se<br />

conocerán las principales aplicaciones de usuario en entornos móviles.<br />

Objetivo General:<br />

Al finalizar el curso, el alumno explicará y aplicará los conceptos teóricos de la<br />

programación móvil <strong>para</strong> su uso en redes de área personal inalámbrica (WPAN’s) con el<br />

fin de diseñar y construir aplicaciones móviles <strong>para</strong> este tipo de redes.<br />

5


CONTENIDO<br />

<strong>Unidad</strong> 1. Redes de Area Personal Inalámbricas (WPAN’s) (12 horas)<br />

Objetivo: Definir las redes inalámbricas y sus componentes, aprender el funcionamiento<br />

del estándar de redes de área local inalámbrica WPAN <strong>para</strong> poder diseñar e implementar<br />

una red de estas dimensiones.<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación de las redes inalámbricas por su cobertura<br />

1.2.1 WPAN<br />

1.2.2 WLAN<br />

1.2.3 WMAN<br />

1.2.4 WWAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> Bluetooth<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong> <strong>Móviles</strong> con J2ME (20 horas)<br />

Objetivo: Explicar las características de los componentes de J2ME, su arquitectura,<br />

entorno de ejecución, requerimientos de hardware y software, y los conceptos básicos<br />

<strong>para</strong> desarrollar aplicaciones móviles.<br />

2.1 Introducción a las aplicaciones <strong>para</strong> dispositivos móviles<br />

2.2 Componentes de J2ME<br />

2.3 Arquitectura del entorno de ejecución de J2ME<br />

2.4 Ciclo de vida y componentes básicos de un MIDlet<br />

2.5 Componentes avanzados de un MIDlet<br />

2.6 Almacenamiento persistente: RMS<br />

<strong>Unidad</strong> 3. Programación Bluetooh con J2ME (20 horas)<br />

Objetivo: Aprender los conceptos básicos <strong>para</strong> desarrollar aplicaciones con J2ME <strong>para</strong><br />

redes de área personal inalámbrica (WPAN’s).<br />

3.1 La API Bluetooth<br />

3.2 La API JABWT<br />

3.3 Protocolos de envío y recepción de datos<br />

6


3.4 Plataformas de desarrollo bluetooth con soporte Java<br />

3.5 Desarrollo de aplicaciones móviles <strong>para</strong> una WPAN<br />

<strong>Unidad</strong> 4. Programación Bluetooth con Visual Basic .NET (20 horas)<br />

Objetivo: Diseñar, crear y ejecutar aplicaciones móviles en un entorno de desarrollo visual<br />

y empleando un dispositivo PDA con Sistema Operativo Windows Mobile.<br />

4.1 Fundamentos de desarrollo en .NET<br />

4.2 El proceso de desarrollo y compilación de una aplicación en .NET<br />

4.3 Tratamiento de errores y herramientas de depuración<br />

4.4 Desarrollo de aplicaciones con VB .NET<br />

4.5 Acceso a datos con Microsoft .NET Framework 2.0<br />

4.6 Introducción a la programación de dispositivos móviles<br />

4.7 Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

CRITERIOS DE EVALUACIÓN<br />

Se efectuarán 4 exámenes parciales y un examen ordinario. Se realizarán cuatro<br />

proyectos a lo largo del semestre, los cual serán supervisado por los instructores.<br />

Adicionalmente se presentarán tareas y actividades individuales o grupales a lo largo del<br />

semestre.<br />

La calificación final se calculará como sigue:<br />

Pruebas escritas:<br />

Porcentaje Duración Fecha de aplicación<br />

Prueba 1 10% 1 Sesión Al finalizar la unidad 1<br />

Prueba 2 10% 1 Sesión Al finalizar la unidad 2<br />

Prueba 3 10% 1 Sesión Al finalizar la unidad 3<br />

Prueba 4 10% 1 Sesión Al finalizar la unidad 4<br />

Trabajos en el curso:<br />

Porcentaje<br />

Proyectos 40%<br />

Tareas (Lecturas, investigaciones, exposiciones) 20%<br />

Son requisitos <strong>para</strong> poder presentar el examen ordinario:<br />

1. 80 % de asistencia a clase.<br />

2. Haber entregado todos proyectos asignados.<br />

3. Haber entregado al menos el 70% de las tareas<br />

7


El curso se aprueba con 70 puntos mínimo. Para poder exentar el examen ordinario se<br />

requiere, además de los requisitos anteriores, tener un promedio mayor o igual a 85<br />

puntos. Con promedio mayor o igual a 70 y menor a 85, el examen ordinario representa<br />

el 40% de la calificación final. El 60% restante se calculará sobre la calificación obtenida<br />

por el alumno a lo largo del curso.<br />

Bibliografía básica<br />

1. Thompson, Timohy. Bluetooth Application Programming with Java APIs Essentials<br />

Edition. Morgan Kaufmann Publishers. 2008.<br />

2. Hopkins, Bruce. Bluetooth for Java. Apress. 2003.<br />

3. Kammer, David. Bluetooth Application Developers Guide. Syngress. 2003<br />

4. Quintas, Agustin. J2ME: Java 2 Micro Edition. Alfaomega/Ra-Ma. 2004.<br />

5. Feng, Yu. Wireless Java Programming with J2ME. SAMS. 2001.<br />

6. Prasad, Ramjee. WLANs and WPANs towards 4G Wireless. 2003.<br />

7. Ceballos, Fco. Javier. Microsoft Visual Basic .NET Curso de programación. Alfaomega<br />

& Ra-Ma. 2008.<br />

8. Firtman, Maximiliano. Desarrollos <strong>Móviles</strong> con .NET. MP Ediciones. 2005.<br />

9. MSDN. Getting Started with Visual Studio .NET and the Microsoft .NET Compact<br />

Framework. Microsoft Corp. EUA, 2004.<br />

8


Diapositivas del curso<br />

<strong>Unidad</strong> I<br />

Diapositiva<br />

1<br />

Diapositiva<br />

2<br />

Diapositiva<br />

5<br />

Diapositiva<br />

7<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

Objetivo: Definir las redes inalámbricas y<br />

sus componentes, conocer el<br />

funcionamiento de los protocolos <strong>para</strong><br />

redes de área local inalámbrica WPAN <strong>para</strong><br />

poder diseñar e implementar una red de<br />

estas dimensiones<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción Introducci n a las redes inalámbricas<br />

inal mbricas<br />

1.2 Clasificación de las redes inalámbricas por su<br />

cobertura<br />

� 1.2.1. WPAN<br />

� 1.2.2. WLAN<br />

� 1.2.3. WMAN<br />

� 1.2.4. WWAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

1.1 Introducción a las redes inalámbricas<br />

Esta tecnología no es nueva, su origen se<br />

remonta a una publicación que hizo el<br />

IEEE (Institute of Electrical and Electronics<br />

Engineers) en 1979, de los resultados de<br />

un experimento realizado por ingenieros<br />

de IBM en Suiza, consistente en utilizar<br />

enlaces infrarrojos <strong>para</strong> crear una red local<br />

en una fábrica.<br />

1.1 Introducción a las redes inalámbricas<br />

Las tecnologías de redes inalámbricas<br />

requieren un extenso trabajo de<br />

investigación dado que son tecnologías en<br />

desarrollo y en constante cambio.<br />

El surgimiento y continuo crecimiento de<br />

redes inalámbricas ha sido conducido por<br />

la necesidad de bajar costos asociados con<br />

la infraestructura de red, soportar la<br />

movilidad, reducir el tiempo de instalación<br />

y aumentar la confiabilidad.<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación de las redes inalámbricas por su<br />

cobertura<br />

� 1.2.1. WPAN<br />

� 1.2.2. WLAN<br />

� 1.2.3. WMAN<br />

� 1.2.4. WWAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

1.1 Introducción a las redes inalámbricas<br />

En el ámbito de las redes el uso de<br />

sistemas inalámbricos representa el<br />

siguiente escalón en la tecnología.<br />

Las redes inalámbricas (en inglés<br />

wireless network – redes sin cables) son<br />

aquellas que se comunican por un medio<br />

de transmisión no guiado (sin cables)<br />

mediante ondas electromagnéticas.<br />

1.1 Introducción a las redes inalámbricas<br />

La transmisión y la recepción se realiza a<br />

través de antenas.<br />

Tienen ventajas como la rápida instalación<br />

de la red sin la necesidad de usar<br />

cableado.<br />

Permiten la movilidad y tienen menos<br />

costes de mantenimiento que una red<br />

convencional.<br />

1.1 Introducción a las redes inalámbricas<br />

Características de una red inalámbrica<br />

� La estandarización e interoperabilidad.<br />

�La redacción y aprobación de normas<br />

que se establecen <strong>para</strong> garantizar el<br />

acoplamiento de elementos<br />

construidos independientemente,<br />

permiten que sistemas heterogéneos<br />

puedan intercambiar procesos y<br />

datos.<br />

9


Diapositiva<br />

9<br />

Diapositiva<br />

10<br />

Diapositiva<br />

13<br />

Diapositiva<br />

15<br />

1.1 Introducción a las redes inalámbricas<br />

� La movilidad:<br />

�Permite transmitir información en<br />

tiempo real en cualquier lugar de la<br />

organización o empresa a cualquier<br />

usuario. Esto supone mayor<br />

productividad y mayores posibilidades<br />

de servicio.<br />

1.1 Introducción a las redes inalámbricas<br />

� Escalabilidad:<br />

�Capacidad de un sistema de cambiar<br />

su tamaño o configuración <strong>para</strong><br />

adaptarse a las circunstancias<br />

cambiantes, como adaptarse a un<br />

número de usuarios cada vez mayor,<br />

sin perder calidad en los servicios.<br />

1.1 Introducción a las redes inalámbricas<br />

� Flexibilidad:<br />

�Puede llegar donde el cable no puede,<br />

superando un mayor número de<br />

obstáculos, pudiendo incluso<br />

atravesar paredes. Por lo tanto, es útil<br />

en zonas donde el cableado no es<br />

posible o es muy costoso como los<br />

parques naturales, reservas o zonas<br />

escarpadas.<br />

1.1 Introducción a las redes inalámbricas<br />

Según el rango de frecuencias utilizado <strong>para</strong><br />

transmitir, el medio de transmisión pueden ser las<br />

ondas de radio, las microondas y los infrarrojos.<br />

� Ondas de radio: Comprende el espectro de los<br />

300 a los 3000 MHz.<br />

� Microondas: Frecuencias desde 1 hasta 300<br />

GHz. Pueden haber interferencias con las<br />

comunicaciones en determinadas frecuencias.<br />

� Infrarrojos: Deben estar alineados directamente.<br />

No pueden atravesar las paredes. Los infrarrojos<br />

van desde 300 GHz hasta 384 THz.<br />

1.1 Introducción a las redes inalámbricas<br />

� Ahorro de costos de cableados fijos:<br />

�Evita el tendido de cables y costosas<br />

instalaciones. Además, los puntos de<br />

acceso y los adaptadores utilizados,<br />

tienen un costo relativamente<br />

accesible.<br />

1.1 Introducción a las redes inalámbricas<br />

� Facilidad de instalación:<br />

�Al no usar cables, se evitan obras<br />

<strong>para</strong> hacer el tendido por muros y<br />

techos, mejorando así el aspecto y la<br />

habitabilidad de los locales, y<br />

reduciendo el tiempo de instalación.<br />

También permite el acceso<br />

instantáneo a usuarios temporales de<br />

la red.<br />

1.1 Introducción a las redes inalámbricas<br />

� Ahorro de espacio:<br />

�La infraestructura de la red es muy<br />

reducida y al no tener que utilizar<br />

tanto equipo <strong>para</strong> que pueda<br />

funcionar hay un ahorro significativo<br />

de espacios.<br />

Espectro Electromagnético<br />

10


Diapositiva<br />

17<br />

Diapositiva<br />

19<br />

Diapositiva<br />

21<br />

Diapositiva<br />

23<br />

Espectro Electromagnético<br />

Estándares inalámbricos Mundiales<br />

WWAN<br />

IEEE 802.20 3GPP, EDG<br />

(GSM)<br />

WMAN<br />

IEEE 802.16 ETSI HIPERMAN<br />

Wireless MAN & HIPERACCESS<br />

WLAN<br />

IEEE 802.11 ETSI<br />

Wireless LAN HIPERLAN<br />

WPAN<br />

IEEE 802.15 ETSI<br />

Bluetooth HIPERPAN<br />

1.2 Clasificación de las redes inalámbricas<br />

por su cobertura<br />

WLAN (Wireless Local Area Network)<br />

� En las redes de área local podemos<br />

encontrar tecnologías inalámbricas<br />

basadas en HiperLAN, un estándar del<br />

grupo ETSI, o tecnologías basadas en<br />

Wi-Fi, que siguen el estándar IEEE<br />

802.11 con diferentes variantes.<br />

1.2 Clasificación de las redes inalámbricas<br />

por su cobertura<br />

WWAN (Wireless Wide Area Network,<br />

Wireless WWAN)<br />

� En estas redes encontramos tecnologías<br />

como UMTS, utilizada con los teléfonos<br />

móviles 3G y sucesora de la tecnología<br />

GSM (<strong>para</strong> móviles 2G), o también la<br />

tecnología digital <strong>para</strong> móviles GPRS<br />

(General Packet Radio Service).<br />

<strong>Unidad</strong> I. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación Clasificaci n de las redes inalámbricas inal mbricas por su<br />

cobertura<br />

�� 1.2.1. WPAN<br />

�� 1.2.2. WLAN<br />

�� 1.2.3. WMAN<br />

�� 1.2.4. WWAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

1.2 Clasificación de las redes inalámbricas<br />

por su cobertura<br />

Según su cobertura, se pueden clasificar en<br />

diferentes tipos:<br />

WPAN (Wireless Personal Area Network)<br />

� En este tipo de red de cobertura<br />

personal, existen tecnologías basadas en<br />

1.2 Clasificación de las redes inalámbricas<br />

por su cobertura<br />

WMAN (Wireless Metropolitan Area<br />

Network, Wireless MAN)<br />

� Para redes de área metropolitana se<br />

encuentran tecnologías basadas en<br />

WiMax (Worldwide Interoperability for<br />

Microwave Access, es decir,<br />

Interoperabilidad Mundial <strong>para</strong> Acceso<br />

con Microondas), un estándar de<br />

comunicación inalámbrica basado en la<br />

norma IEEE 802.16. WiMax es un<br />

protocolo parecido a Wi-Fi, pero con<br />

más cobertura y ancho de banda.<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación de las redes inalámbricas por su cobertura<br />

� 1.2.1. PAN<br />

� 1.2.2. LAN<br />

� 1.2.3. MAN<br />

� 1.2.4. WAN<br />

1.3 Redes inalámbricas inal mbricas de área rea personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

11


Diapositiva<br />

25<br />

Diapositiva<br />

27<br />

Diapositiva<br />

29<br />

Diapositiva<br />

31<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

Las redes inalámbricas de área personal,<br />

conocidas como WPANs<br />

(Wireless Personal Area Nettwork)<br />

surgen como una consecuencia de querer<br />

acercar la red al usuario y de integrar todos<br />

los servicios <strong>para</strong> conseguir una<br />

“automatización” total del entorno del<br />

usuario<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

Una conexión echa a través de una WPAN<br />

involucra a muy poca o nula<br />

infraestructura<br />

Protocolos simples y lo más óptimos <strong>para</strong><br />

cada necesidad de comunicación y<br />

aplicación.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

Para satisfacer las diferentes necesidades<br />

de comunicación dentro de un área<br />

personal la IEEE ha dividido sus esfuerzos<br />

en cuatro grupos de trabajo, que se<br />

encargan de desarrollar estándares.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

El grupo de trabajo 802.15.1 ha realizado<br />

un estándar basado en las especificaciones<br />

de la fundación Bluetooth. Este grupo de<br />

trabajo publicó el estándar IEEE 802.15.1 el<br />

14 junio de 2002.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

La característica principal de este tipo de<br />

redes es que su área de cobertura es de<br />

10 metros a la redonda que envuelve a<br />

una persona o a algún dispositivo ya sea<br />

que esté en movimiento o no.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

Interconectar dispositivos personales es diferente<br />

a conectar dispositivos computacionales.<br />

Conexión <strong>para</strong> dispositivos computacionales<br />

asocian al usuario del dispositivo con servicios de<br />

datos disponibles.<br />

El usuario es relacionado con los dispositivos<br />

electrónicos de su posesión, o en su vecindad.<br />

Una WPAN puede verse como una burbuja<br />

personal de comunicación alrededor de una<br />

persona.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

1.2.1 Grupos de trabajo.<br />

Existen principalmente cuatro grupos de<br />

trabajo <strong>para</strong> la tecnología WPAN, cada uno<br />

de ellos con características e intereses<br />

específicos que generan estándares que<br />

satisfacen necesidades específicas de<br />

comunicación.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

El grupo de trabajo 802.15.2 está<br />

desarrollando un modelo de coexistencia<br />

entre las WLAN y WPAN<br />

12


Diapositiva<br />

33<br />

Diapositiva<br />

35<br />

Diapositiva<br />

37<br />

Diapositiva<br />

39<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

El grupo de trabajo 802.15.3. Está<br />

trabajando <strong>para</strong> establecer los estatus y<br />

publicar un estándar nuevo de alta<br />

velocidad (20 Mbits/s o mayores) <strong>para</strong><br />

WPANs.<br />

Este nuevo estándar se está diseñando<br />

<strong>para</strong> consumir poca energía y ofrecer<br />

soluciones a bajos costos así como<br />

aplicaciones multimedia.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

WLANs vs WPANs.<br />

Ambas tecnologías permiten a un dispositivo<br />

electrónico conectarse con el ambiente que lo<br />

rodea e intercambiar datos sobre canales<br />

inalámbricos libres<br />

Las WLANs se han diseñado <strong>para</strong> dispositivos<br />

transportables de comunicación<br />

Las WPAN fueron diseñadas <strong>para</strong> dispositivos con<br />

mayor movilidad.<br />

Difieren principalmente en niveles de energía,<br />

cobertura y configuraciones de red.<br />

1.4 Protocolos y tecnologías<br />

HomeRF<br />

El HomeRF Working Group fue una iniciativa<br />

de varias empresas que se unieron en el<br />

año 1998 <strong>para</strong> crear una tecnología de<br />

transmisión digital inalámbrica abierta.<br />

� HomeRF es una solución rentable y la más<br />

económica entre las soluciones<br />

inalámbricas del mercado.<br />

1.4 Protocolos y tecnologías<br />

� Bluetooth<br />

� Protocolo que sigue la especificación IEEE<br />

802.15.1)<br />

� El grupo de interés especial (SIG) de<br />

Bluetooth es una organización privada y<br />

sin ánimo de lucro. Este grupo se fundó en<br />

septiembre de 1998. No se ocupa de la<br />

fabricación ni de la venta de productos con<br />

tecnología Bluetooth, sino del desarrollo de<br />

ésta.<br />

1.3 Redes inalámbricas de área personal<br />

WPAN<br />

El grupo de trabajo T4 <strong>para</strong> el desarrollo<br />

IEEE 802.15.4, investiga y desarrolla<br />

soluciones que requieren una baja<br />

transmisión de datos y con ello una<br />

duración en las baterías de meses e<br />

incluso de años así como una complejidad<br />

relativamente baja<br />

Dicho grupo de trabajo ha publicado el<br />

estándar que lleva su nombre; IEEE<br />

802.15.4.<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación de las redes inalámbricas por su cobertura<br />

� 1.2.1. PAN<br />

� 1.2.2. LAN<br />

� 1.2.3. MAN<br />

� 1.2.4. WAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

tecnolog as<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

1.4 Protocolos y tecnologías<br />

� Es un estándar <strong>para</strong> conectar todos los<br />

teléfonos móviles de la casa y los<br />

ordenadores mediante un a<strong>para</strong>to central<br />

� Al igual que Bluetooth y WiFi, la HomeRF<br />

usa la banda de frecuencia de 2,4 GHz<br />

<strong>para</strong> colocar su señal modulada. Tiene una<br />

tasa de transferencia de hasta 10 Mbps<br />

(megabits) por segundo<br />

� El grupo que desarrollaba el estándar<br />

HomeRF se disolvió en Enero de 2003.<br />

1.4 Protocolos y tecnologías<br />

El núcleo del sistema Bluetooth consiste<br />

en un transmisor de radio, una banda<br />

base y una pila de protocolos.<br />

Los enlaces inalámbricos Bluetooth se<br />

forman en el contexto de una piconet.<br />

Funciona en la banda de frecuencia de<br />

2.4 GHz, tiene un radio de acción de 10<br />

metros a una velocidad de transmisión es<br />

de 1 Mbps.<br />

13


Diapositiva<br />

41<br />

Diapositiva<br />

43<br />

Diapositiva<br />

45<br />

Diapositiva<br />

47<br />

1.4 Protocolos y tecnologías<br />

ZigBee<br />

� Basado en la especificación IEEE<br />

802.15.4 y utilizado en aplicaciones<br />

como la domótica, que requieren<br />

comunicaciones seguras con tasas bajas<br />

de transmisión de datos y maximización<br />

de la vida útil de sus baterías, bajo<br />

consumo.<br />

1.4 Protocolos y tecnologías<br />

RFID<br />

� Sistema remoto de almacenamiento y<br />

recuperación de datos con el propósito<br />

de transmitir la identidad de un objeto<br />

(similar a un número de serie único)<br />

mediante ondas de radio.<br />

� Mediante la tecnología RFID se pueden<br />

activar etiquetas pasivas a cierta<br />

distancia mediante un lector.<br />

1.4 Protocolos y tecnologías<br />

La tecnología RFID opera en frecuencias<br />

bajas (menos de 100 MHz), altas (más de<br />

100 MHz) y UHF (de 868 a 954 MHz).<br />

1.5 Comunicaciones ópticas: IrDa<br />

¿Qué es el Infrarrojo?<br />

El infrarrojo es un tipo de luz que no<br />

podemos ver con nuestros ojos.<br />

Nos muestra cuánto calor tiene alguna cosa<br />

y nos da información sobre la temperatura<br />

de un objeto<br />

Todas las cosas tienen algo de calor e<br />

irradian luz infrarroja.<br />

1.4 Protocolos y tecnologías<br />

� Ofrece un alcance de 10 a 100 metros y<br />

una velocidad de transmisión de<br />

250 Kbits en la banda de 2.4 GHz,<br />

40 Kbps en la banda de 915 MHz y<br />

20 Kbps en la banda de 868 MHz.<br />

� Tanto los chips ZigBee como los<br />

Bluetooth tienen un coste muy bajo.<br />

1.4 Protocolos y tecnologías<br />

� El receptor, que debe encontrarse a<br />

pocos metros, puede recabar ciertos<br />

datos de la tarjeta y ampliar la<br />

información obtenida, posteriormente,<br />

mediante una base de datos.<br />

� Algunas etiquetas incorporan una<br />

batería que les permite estar siempre<br />

activas, por lo que pueden leerse a<br />

mayores distancias.<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación de las redes inalámbricas por su cobertura<br />

� 1.2.1. PAN<br />

� 1.2.2. LAN<br />

� 1.2.3. MAN<br />

� 1.2.4. WAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: pticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

1.5 Comunicaciones ópticas: IrDa<br />

El vaso rojo tiene agua muy<br />

caliente y el vaso azul contiene<br />

hielo.<br />

En la figura de la izquierda vemos<br />

dos vasos uno rojo y uno azul. Solo<br />

veríamos esa información con<br />

nuestra visión normal.<br />

En la imagen de abajo es una vista<br />

con infrarrojos en la que la simple<br />

vista nos da información de la<br />

temperatura de cada vaso.<br />

14


Diapositiva<br />

49<br />

Diapositiva<br />

51<br />

Diapositiva<br />

53<br />

Diapositiva<br />

55<br />

1.5 Comunicaciones ópticas: IrDa<br />

Las cámaras infrarrojas también son<br />

usadas por los satélites en el espacio <strong>para</strong><br />

medir la temperatura de los océanos, <strong>para</strong><br />

estudiar el clima de la Tierra durante el día<br />

y la noche<br />

1.5 Comunicaciones ópticas: IrDa<br />

Infrared Data Association (IrDA) define un<br />

estándar físico en la forma de transmisión y<br />

recepción de datos por rayos infrarrojos.<br />

IrDA se crea en 1993 entre HP, IBM, Sharp<br />

y otros.<br />

Los transceptores de IrDA se comunican<br />

con pulsos infrarrojos en un ángulo de 30°<br />

Opera en una distancia de 0 a 1 metro.<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.5 Comunicaciones ópticas: IrDa<br />

IrDA Infrared Link Access Protocol (IrLAP)<br />

Su función es que los dispositivos IrDA no<br />

se conflictúen entre ellos en una<br />

comunicación múltiple, existe un solo<br />

dispositivo primario, los demás son<br />

secundarios. La comunicación es siempre<br />

half-duplex. También IrLAP describe como<br />

los dispositivos establecen conexión, como<br />

la cierran y como deberán estar<br />

internamente numerados.<br />

1.5 Comunicaciones ópticas: IrDa<br />

¿Qué es la comunicación óptica<br />

inalámbrica en línea de visión?<br />

La comunicación óptica en línea de visión<br />

es aquella que requiere que el transmisor<br />

y el receptor se encuentren alineados de<br />

manera tal que sea posible dibujar una<br />

línea recta imaginaria entre ambos<br />

dispositivos. Una ventaja es que permite<br />

altas tasas de transmisión de datos.<br />

1.5 Comunicaciones ópticas: IrDa<br />

Los estándares IrDA soportan una amplia<br />

gama de dispositivos eléctricos,<br />

informáticos y de comunicaciones<br />

Permite la comunicación entre los 9.600<br />

bps y los 4 Mbps.<br />

1.5 Comunicaciones ópticas: IrDa<br />

Physical Layer<br />

En la capa física se encuentran los<br />

componentes ópticos, optoeléctricos, y<br />

electrónicos necesarios <strong>para</strong> la transmisión<br />

de datos seriales a través de medios<br />

infrarrojos. La capa física también incluye<br />

la construcción de frames y la detección<br />

de errores<br />

1.5 Comunicaciones ópticas: IrDa<br />

IrDA Infrared Link Managment Protocol<br />

(IrLMP)<br />

Cada dispositivo permite a los otros<br />

reconocerle a través de el protocolo IrLMP,<br />

que corre sobre el IrLAP (IrLAP es un<br />

protocolo de conexión, se com<strong>para</strong> al<br />

protocolo IP, aunque la resolución de<br />

direccionamiento es diferente)<br />

15


Diapositiva<br />

57<br />

Diapositiva<br />

59<br />

Diapositiva<br />

61<br />

Diapositiva<br />

63<br />

1.5 Comunicaciones ópticas: IrDa<br />

IAS (Information Access Service)<br />

El servicio de acceso a la información<br />

actúa como un directorio que permite<br />

determinar <strong>para</strong> cada tipo de servicio un<br />

punto de acceso. Para IAS existe un<br />

cliente que realiza las peticiones y un<br />

servidor, que responde a las peticiones<br />

gracias a una base de datos de<br />

aplicaciones.<br />

1.5 Comunicaciones ópticas: IrDa<br />

IrCOMM<br />

Un emulador de puertos seriales y<br />

<strong>para</strong>lelos en el enlace, usado <strong>para</strong> que las<br />

aplicaciones diseñadas <strong>para</strong> operar en<br />

cables seriales o <strong>para</strong>lelos puedan operar<br />

encima de enlaces infrarrojos sin tener<br />

que cambiar nada<br />

IrLAN<br />

Permite el acceso de estaciones LAN sobre<br />

enlaces de IrdA<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación de las redes inalámbricas por su cobertura<br />

� 1.2.1. PAN<br />

� 1.2.2. LAN<br />

� 1.2.3. MAN<br />

� 1.2.4. WAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

1.6 Bluetooth<br />

Los miembros SIG impulsan el desarrollo de<br />

la tecnología inalámbrica Bluetooth, y la<br />

implantan y comercializan en sus productos.<br />

El SIG cuenta con un pequeño equipo de<br />

profesionales en Hong Kong, Suecia y EE.<br />

UU.<br />

Las empresas promotoras del SIG de<br />

Bluetooth son Ericsson, Intel, Lenovo,<br />

Microsoft, Motorola, Nokia y Toshiba, y otras<br />

tantas que han adoptado este estándar.<br />

1.5 Comunicaciones ópticas: IrDa<br />

Componentes opcionales del IrDA:<br />

Tiny TP<br />

Un protocolo de control de flujo a nivel de<br />

aplicación. Esta capa maneja canales<br />

virtuales entre los dispositivos, realiza<br />

corrección de errores, divide los datos en<br />

paquetes, y reensambla el dato original de<br />

los paquetes. Muy similar al TCP.<br />

1.5 Comunicaciones ópticas: IrDa<br />

IrOBEX<br />

Es un protocolo simple, que define<br />

comandos PUT y GET, estos permiten<br />

transferencia de datos binarios entre<br />

dispositivos. Hay extensiones que define<br />

como transferir informaciones<br />

pertenecientes a la red GSM<br />

1.6 Bluetooth<br />

Acerca del SIG de Bluetooth<br />

El grupo de interés especial (SIG) de Bluetooth<br />

es una organización privada y sin ánimo de<br />

lucro. Se fundó en septiembre de 1998.<br />

No se ocupa de la fabricación ni de la venta de<br />

productos con tecnología Bluetooth, sino del<br />

desarrollo de ésta.<br />

Está compuesto por más de 9,000 miembros,<br />

líderes en las áreas de telecomunicaciones,<br />

informática, industria automotriz, música,<br />

automatización industrial y tecnología de<br />

redes.<br />

1.6 Bluetooth<br />

El nombre Bluetooth<br />

El término “Bluetooth” proviene del rey<br />

danés del siglo X Harald Blatand, conocido<br />

como Harold Bluetooth.<br />

Este rey del siglo X fue una figura crucial<br />

en la unificación de las distintas facciones<br />

guerreras ubicadas en lo que hoy son<br />

Noruega, Suecia y Dinamarca.<br />

16


Diapositiva<br />

65<br />

Diapositiva<br />

67<br />

Diapositiva<br />

69<br />

Diapositiva<br />

71<br />

1.6 Bluetooth<br />

La tecnología Bluetooth también iba a<br />

facilitar la colaboración entre diferentes<br />

sectores de la industria como la<br />

informática, la telefonía móvil o la<br />

automoción.<br />

Descripción general de Bluetooth<br />

La capa física de radio (RF) Bluetooth<br />

opera en la banda de 2.4 GHz libre <strong>para</strong><br />

ISM<br />

1.6 Bluetooth<br />

En el caso de bluetooth los dispositivos de una<br />

piconet utilizan una secuencia de salto pseudo<br />

aleatorio de las 79 frecuencias de la banda ISM.<br />

Una transmisión en espectro ensanchado ofrece<br />

3 ventajas principales:<br />

1. Las señales son altamente resistentes al ruido y<br />

a la interferencia.<br />

2. Las señales son difíciles de interceptar. Una<br />

transmisión de este tipo suena como un ruido<br />

de corta duración.<br />

3. Pueden compartir una banda de frecuencia con<br />

muchos tipos de transmisiones convencionales.<br />

1.6 Bluetooth<br />

Una piconet puede constar de hasta siete<br />

dispositivos activos. Además de estos<br />

dispositivos activos, la piconet puede<br />

contar con muchos más esclavos en<br />

estado de espera.<br />

1.6 Bluetooth<br />

Paquetes<br />

Los datos se transmiten por radio en paquetes<br />

Formato estándar de paquetes del modo de transferencia básica.<br />

Formato estándar de paquetes del modo de transferencia mejorada (EDR)<br />

Reloj Bluetooth<br />

Todos los dispositivos Bluetooth cuentan con un reloj nativo<br />

<strong>para</strong> la sincronización con otros dispositivos.<br />

1.6 Bluetooth<br />

El sistema emplea un transmisor de salto de<br />

frecuencia <strong>para</strong> contrarrestar las<br />

interferencias y la pérdida de intensidad<br />

(FHSS).<br />

Espectro ensanchado por salto de frecuencia<br />

Frequency Hopping Spread Spectrum o FHSS<br />

es una técnica en el que la señal se emite<br />

sobre una serie de radiofrecuencias<br />

aparentemente aleatorias, saltando de<br />

frecuencia en frecuencia sincrónicamente con<br />

el transmisor.<br />

1.6 Bluetooth<br />

Tasa de transferencia<br />

La tasa de transferencia es de 1 Mbps en el<br />

modo de transferencia básica y una velocidad<br />

de transmisión aérea total de 2 a 3 Mbps en el<br />

modo de transferencia de datos mejorada.<br />

Piconet<br />

La piconet es la forma fundamental de<br />

comunicación mediante la tecnología<br />

Bluetooth. Consta de un grupo de dispositivos<br />

sincronizados donde uno de ellos, es el<br />

dispositivo maestro y proporciona los valores<br />

de referencia y los demás reciben el nombre<br />

de esclavos.<br />

1.6 Bluetooth<br />

Transmisión bidireccional<br />

El canal físico se subdivide en unidades de<br />

tiempo denominadas ranuras. Los datos<br />

intercambiados entre los dispositivos<br />

Bluetooth se transmiten en forma de<br />

paquetes en estas ranuras. La tecnología<br />

Bluetooth consigue la transmisión<br />

bidireccional mediante la técnica de acceso<br />

múltiple por división de tiempo (TDD).<br />

1.6 Bluetooth<br />

Dirección de dispositivos Bluetooth<br />

A cada dispositivo Bluetooth se le asigna una<br />

dirección de dispositivo Bluetooth única de<br />

48-bit (BD_ADDR) proporcionada por la<br />

autoridad reguladora de IEEE.<br />

17


Diapositiva<br />

73<br />

Diapositiva<br />

75<br />

Diapositiva<br />

77<br />

Diapositiva<br />

79<br />

1.6 Bluetooth<br />

La especificación principal de Bluetooth<br />

(denominada core) define el nivel físico<br />

(PHY) y el control de acceso al medio (MAC)<br />

de una red inalámbrica de área personal.<br />

El sistema básico está formado por un<br />

transceptor de radiofrecuencia, el nivel de<br />

banda base y la pila de protocolos<br />

Bluetooth, y otorga conectividad a todo un<br />

rango de dispositivos.<br />

1.6 Bluetooth<br />

Especificación<br />

Bluetooth 1.1<br />

1.6 Bluetooth<br />

Especificación<br />

Bluetooth 2.0 +<br />

EDR<br />

1.6 Bluetooth<br />

Año<br />

2002<br />

Año<br />

2004<br />

Características<br />

Muchos errores<br />

encontrados en la<br />

especificación 1.0B fueron<br />

re<strong>para</strong>das<br />

Agrega soporte <strong>para</strong><br />

canales no encriptados<br />

Implementa RSSI<br />

(Received Signal Strength<br />

Indicator – Indicador de la<br />

potencia de la señal recibida<br />

Características<br />

Velocidades de hasta 2.1<br />

Mbps, teórico 3 Mbps.<br />

La principal diferencia es la<br />

introducción de EDR<br />

(Enhanced Data Rate) <strong>para</strong><br />

transmitir datos mas rápido.<br />

Futuro de Bluetooth<br />

Se está pre<strong>para</strong>ndo la versión 3.0, cuya<br />

características principales serán la<br />

adopción de la tecnología ultra-wideband<br />

(UWB) y una mayor velocidad de<br />

transmisión de datos, pasando de los 2.1<br />

Mbps actuales a los 480 Mbps y.<br />

1.6 Bluetooth<br />

Especificaciones Bluetooth<br />

Especificación<br />

Bluetooth<br />

0.7, 0.8, 0.9, 1.0<br />

draft, 1.0 a y 1.0 b<br />

1.6 Bluetooth<br />

Especificación<br />

Bluetooth 1.2<br />

1.6 Bluetooth<br />

Especificación<br />

Bluetooth 2.1 + EDR<br />

1.6 Bluetooth<br />

Año<br />

1998<br />

1999<br />

Año<br />

2003<br />

Año<br />

2007<br />

Características<br />

La primera versión solo incluía<br />

Baseband y Link Manager<br />

Protocol y luego se agregaron<br />

las restantes versión a versión<br />

La primera versión publicada<br />

es la 1.0 a en 1999<br />

Las versiones 1.0 a y 1.0 b<br />

tuvieron muchos problemas y los<br />

fabricantes tuvieron dificultades<br />

<strong>para</strong> hacer sus productos<br />

interoperables.<br />

Características<br />

Conexión y descubrimiento<br />

más veloz e implementación de<br />

FHSS<br />

Tasa de transmisión arriba de<br />

721 kbit/s. Teórico 1 Mbps.<br />

Mejora la detección de errores<br />

y el control de flujo así como la<br />

capacidad de sincronización<br />

Los cambios se efectuaron<br />

en las capas Baseband, LMP,<br />

HCI y L2CAP.<br />

Características<br />

Reporte de datos erróneos<br />

Mayor seguridad<br />

Proporciona más información<br />

durante el procedimiento del<br />

descubrimiento<br />

Encripción mucho más fuerte<br />

Reduce el consumo de<br />

energía cuando los<br />

dispositivos están en el modo<br />

de baja potencia<br />

18


Diapositiva<br />

81<br />

Diapositiva<br />

83<br />

Diapositiva<br />

85<br />

Diapositiva<br />

87<br />

1.6 Bluetooth<br />

Capas y Protocolos del Núcleo Bluetooth<br />

La pila de protocolos que conforma el núcleo del<br />

sistema Bluetooth está compuesta por:<br />

protocolo de radiofrecuencia (RF)<br />

protocolo de control de enlace (LCP)<br />

protocolo de gestión de enlace (LMP)<br />

protocolo de adaptación y de control de enlace<br />

lógico (L2CAP)<br />

Todos ellos descritos en la especificación<br />

Bluetooth. Además, hay que sumar el protocolo<br />

de descubrimiento de servicios (SDP) requerido<br />

por todas las aplicaciones Bluetooth.<br />

1.6 Bluetooth<br />

Nivel de radiofrecuencia (RF) está formado por el<br />

transceptor físico y sus componentes asociados.<br />

Nivel de banda base (baseband), controla las<br />

operaciones sobre bits y paquetes, realiza detección y<br />

corrección de errores, broadcast automático y cifrado.<br />

También emite confirmaciones y peticiones de<br />

repetición de las transmisiones recibidas.<br />

Nivel de gestión de enlace (link manager, LM),<br />

responsable del establecimiento y finalización de<br />

conexiones, así como de su autentificación en caso<br />

necesario. También realiza el control del tráfico y la<br />

planificación, junto con la gestión de consumo y<br />

supervisión del enlace.<br />

1.6 Bluetooth<br />

El nivel más importante del anfitrión es el<br />

protocolo de control y adaptación de enlace<br />

lógico (logical link control & adaptation<br />

protocol, L2CAP), encargado de controlar la<br />

comunicación proveniente de niveles<br />

superiores.<br />

Puede añadir opcionalmente detección de<br />

errores y retransmisión de paquetes, así<br />

como control de flujo basado en protocolos<br />

de ventana deslizante, asignación de buffers<br />

y QoS.<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

Los dispositivos móviles están avanzando a una<br />

velocidad sorprendente y el software móvil avanzará<br />

igualmente rápido.<br />

Este panorama móvil emergente abrirá una amplia<br />

gama de posibilidades comerciales a las empresas en<br />

el espacio móvil.<br />

Los desarrolladores de software <strong>para</strong> dispositivos<br />

móviles tendrán mayor demanda y es urgente<br />

pre<strong>para</strong>rnos ante estos retos.<br />

Para esta unidad los alumnos descargaran e<br />

implementaran una aplicación <strong>para</strong> WPANS usando la<br />

tecnología bluetooth.<br />

1.6 Bluetooth<br />

Los niveles inferiores de la pila de<br />

protocolos constituyen el controlador<br />

Bluetooth, que contiene los bloques<br />

fundamentales de la tecnología, sobre los<br />

cuales se apoyan los niveles superiores y<br />

los protocolos de aplicación<br />

Este componente está estandarizado y<br />

puede interactuar con otros sistemas<br />

Bluetooth de más alto nivel<br />

1.6 Bluetooth<br />

El resto de niveles de base y los protocolos<br />

de aplicación residen en el anfitrión<br />

Bluetooth (también denominado host),<br />

que se comunica con el controlador<br />

utilizando un interfaz estándar.<br />

<strong>Unidad</strong> 1. Redes Inalámbricas de Área<br />

Personal (WPAN`s)<br />

1.1 Introducción a las redes inalámbricas<br />

1.2 Clasificación de las redes inalámbricas por su cobertura<br />

� 1.2.1. PAN<br />

� 1.2.2. LAN<br />

� 1.2.3. MAN<br />

� 1.2.4. WAN<br />

1.3 Redes inalámbricas de área personal WPAN<br />

1.4 Protocolos y tecnologías<br />

1.5 Comunicaciones ópticas: IrDa<br />

1.6 Bluetooth<br />

1.7 <strong>Aplicaciones</strong> bluetooth<br />

Prácticas<br />

Prácticas (Archivos) Temas<br />

Práctica 1.1.doc 1.1<br />

Práctica 2.1.doc 1.3<br />

Práctica 3.1.doc 1.6<br />

Práctica 4.1.doc 1.7<br />

19


<strong>Unidad</strong> II<br />

Diapositiva<br />

1<br />

Diapositiva<br />

3<br />

Diapositiva<br />

5<br />

Diapositiva<br />

7<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

Objetivo:<br />

Explicar las características de los<br />

componentes de J2ME, su arquitectura,<br />

entorno de ejecución, requerimientos<br />

de hardware y software, y los<br />

conceptos básicos <strong>para</strong> desarrollar<br />

aplicaciones móviles<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

Contenido:<br />

1. Introducción a las aplicaciones <strong>para</strong> dispositivos<br />

móviles<br />

2. Componentes de J2ME<br />

3. Arquitectura del entorno de ejecución de J2ME<br />

4. Ciclo de vida y componentes básicos de un<br />

MIDlet<br />

5. Componentes avanzados de un MIDlet<br />

6. Almacenamiento persistente: RMS<br />

Ejemplos de aplicaciones<br />

El primero, y quizás más lucrativo hasta la<br />

fecha, fue el uso de la mensajería SMS (Short<br />

Message Service).<br />

Nuestros pequeñas terminales nos permiten<br />

enviar mensajes cortos de texto (hasta un<br />

tamaño de 160 caracteres) que son enviados<br />

desde la terminal al centro servidor de<br />

mensajes cortos o SMSC (Short Message<br />

Service Centre), que a su vez se encarga de<br />

hacer llegar el mensaje al móvil destinatario.<br />

Ejemplos de aplicaciones<br />

Para solucionar las bajas velocidades -sin contar con<br />

la baja fiabilidad- de la tecnología GSM (Global<br />

System for Mobile Communications) <strong>para</strong> la<br />

transmisión de datos, apareció la tecnología GPRS<br />

(General Packet Radio Service).<br />

GPRS nos ofrece una red de transferencia de datos<br />

sin hilos a una velocidad aceptable, tanto es así, que<br />

ahora se puede enviar grandes paquetes de<br />

información, como fotografías, música, e incluso<br />

video.<br />

1<br />

3<br />

5<br />

7<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

Contenido:<br />

1. Introducción a las aplicaciones <strong>para</strong> dispositivos<br />

móviles<br />

2. Componentes de J2ME<br />

3. Arquitectura del entorno de ejecución de J2ME<br />

4. Ciclo de vida y componentes básicos de un<br />

MIDlet<br />

5. Componentes avanzados de un MIDlet<br />

6. Almacenamiento persistente: RMS<br />

2.1. Introducción a las aplicaciones<br />

<strong>para</strong> dispositivos móviles<br />

Los dispositivos móviles son ya parte esencial en<br />

nuestra forma de vida. Cada día son más los usuarios<br />

de estos, Los cuales son cada vez más pequeños.<br />

Hasta ahora, nos han acompañado a todas partes y<br />

nos han permitido comunicarnos con cualquier otro<br />

terminal, ya sea fijo o móvil.<br />

Aunque la comunicación telefónica por voz inició<br />

como el principal uso de estos terminales, pronto se<br />

han desarrollado nuevas formas de comunicación y<br />

otras capacidades en torno a nuestros pequeños<br />

dispositivos.<br />

Ejemplos de aplicaciones<br />

Más tarde, aparecieron las terminales capaces de<br />

navegar por Internet, pero las limitaciones de la<br />

pantalla y de los teclados hacían inviable su uso con<br />

páginas web normales.<br />

Así nació la tecnología WAP (Wireless Application<br />

Protocol), que nos permiten navegar por páginas<br />

especiales creadas en WML en lugar de en HTML.<br />

Sin embargo, las limitaciones de este medio, y quizás<br />

también por el elevado precio y la baja velocidad del<br />

servicio, han hecho que la tecnología WAP no se<br />

haya extendido tanto como su hermana mayor, la<br />

WEB.<br />

Ejemplos de aplicaciones<br />

A partir de aquí, se hace patente la necesidad de una<br />

nueva generación de móviles capaces de reproducir<br />

música más complejas y mostrar gráficos y<br />

fotografías en color.<br />

A la vez que aparecen estos móviles en el mercado,<br />

aparece el nuevo servicio de mensajes cortos llamado<br />

MMS (Multimedia Message Service).<br />

Gracias a MMS, además de texto, podemos enviar<br />

fotografías, sonidos, gráficos, etc. Pero aún estaba<br />

por llegar la verdadera revolución.<br />

2<br />

4<br />

6<br />

8<br />

20


Diapositiva<br />

9<br />

Ejemplos de aplicaciones<br />

Sun Mycrosystems da un paso adelante dentro de su<br />

tecnología Java, y nos presenta J2ME (Java 2 Micro<br />

Edition): un entorno de producción <strong>para</strong> pequeños<br />

dispositivos que permite la ejecución de programas<br />

creados en Java.<br />

Una de las principales capacidades que añade esta<br />

tecnología a nuestras terminales es la posibilidad de<br />

descargar y ejecutar juegos y aplicaciones con una calidad<br />

razonable.<br />

Hoy, nuestros teléfonos móviles corren auténticos<br />

sistemas operativos. El más conocido quizás es Symbian,<br />

que es el corazón de gran cantidad de móviles, como los<br />

Nokia, Sony-Ericsson, Motorola y otros.<br />

Diapositiva<br />

11 Posteriormente Java se fue desplazando hacia<br />

Internet (Servlets, JSP, Enterprise Java Beans).<br />

Diapositiva<br />

13<br />

Diapositiva<br />

15<br />

Java hoy en día vuelve a sus orígenes, regresa<br />

con los dispositivos móviles y a la electrónica de<br />

consumo.<br />

Java contiene complejas instrucciones de<br />

hardware, y <strong>para</strong>dójicamente no posee ninguna<br />

instrucción que acceda al sistema: Ejemplo:<br />

Manejo de apuntadores, manejo de<br />

interrupciones, etc.<br />

Debido a esto, los desarrolladores están muy<br />

interesados en todo dispositivo asociado al uso<br />

de la red.<br />

Los teléfonos celulares actuales tienen un<br />

añadido por su capacidad de conexión<br />

inalámbrica inherente a su funcionamiento.<br />

El éxito en el ámbito empresarial de las agendas<br />

de bolsillo, Personal Digital Assistants (PDA),<br />

deriva del hecho de que puede sincronizarse con<br />

una PC de escritorio o una Laptop.<br />

Java 2 Micro Edition (J2ME)<br />

La edición Java 2 Micro Edition fue<br />

presentada en 1999 por Sun Microsystems<br />

con el propósito de habilitar aplicaciones<br />

Java <strong>para</strong> pequeños dispositivos.<br />

En esta presentación, lo que realmente se<br />

enseñó fue una primera versión de una<br />

nueva Java Virtual Machine (JVM) que podía<br />

ejecutarse en dispositivos Palm.<br />

9<br />

11<br />

13<br />

15<br />

La tecnología Java<br />

La tecnología Java, aunque relativamente<br />

nuevas, ha recorrido un intenso y largo<br />

camino.<br />

Concebida originalmente a inicios de los 90<br />

<strong>para</strong> ser utilizada en dispositivos de<br />

electrónica de consumo y desarrollos<br />

destinados al mundo de la televisión digital<br />

interactiva, se fue desplazando hacia internet.<br />

Actualmente están surgiendo dispositivos<br />

y aplicaciones nuevas y con esto un nuevo<br />

modelo: Una persona <strong>para</strong> varios equipos.<br />

Estos equipos pueden ser de diversos<br />

tipos, equipos que están presentes en<br />

cualquier lugar y listos <strong>para</strong> ser usados.<br />

Todos ellos tienen un denominador<br />

común: La capacidad de interconexión.<br />

Antes, las aplicaciones disponibles <strong>para</strong> un<br />

teléfono celular eran solo desarrolladas<br />

por el fabricante e integradas en el<br />

hardware.<br />

Ahora se pueden bajar aplicaciones en los<br />

diferentes dispositivos por medio de una<br />

conexión de red <strong>para</strong> ser ejecutadas.<br />

Java 2 Micro Edition (J2ME)<br />

Java 2 MicroEdition no es exactamente una<br />

especificación, es un conjunto de<br />

especificaciones, cada una de ellas aplicable a<br />

un conjunto de requisitos.<br />

J2ME no define un nuevo lenguaje sino que<br />

mantiene la conpatibilidad hacia arriba con la<br />

edición J2SE, adaptándo la tecnología Java a<br />

su uso en dispositivos móviles.<br />

10<br />

12<br />

14<br />

16<br />

21


Diapositiva<br />

17<br />

Diapositiva<br />

19<br />

Diapositiva<br />

21<br />

Diapositiva<br />

23<br />

Java 2 Micro Edition (J2ME)<br />

J2ME elimina partes de la edición J2SE que<br />

no son aplicables a este tipo de dispositivos<br />

de capacidades tan limitadas, por ejemplo el<br />

AWT o las operaciones en punto flotante.<br />

Una ventaja del uso de J2ME es que las<br />

aplicaciones pueden ser muy independientes,<br />

eficientes y rápidas en el uso de las<br />

conexiones en com<strong>para</strong>ción con otras<br />

tecnologías pues permite su almacenamiento<br />

local.<br />

¿Por qué Java?<br />

Una de las preguntas que surge<br />

habitualmente es el porqué de la<br />

elección y éxito de Java dentro de la<br />

programación de dispositivos<br />

inalámbricos.<br />

A continuación tenemos las ventajas<br />

clave del uso de Java.<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

JVM<br />

Contenido:<br />

1. Introducción a las aplicaciones <strong>para</strong> dispositivos<br />

móviles<br />

2. Componentes de J2ME<br />

3. Arquitectura del entorno de ejecución de J2ME<br />

4. Ciclo de vida y componentes básicos de un<br />

MIDlet<br />

5. Componentes avanzados de un MIDlet<br />

6. Almacenamiento persistente: RMS<br />

Una Máquina Virtual de Java (JVM) es un<br />

programa encargado de interpretar código<br />

intermedio (bytecode) de los programas Java<br />

precompilados a código máquina ejecutable<br />

por la plataforma,<br />

También efectúa las llamadas pertinentes al<br />

sistema operativo subyacente y verifica las<br />

reglas de seguridad y corrección de código<br />

definidas <strong>para</strong> el lenguaje Java.<br />

17<br />

19<br />

21<br />

23<br />

La plataforma Java 2<br />

¿Por qué Java?<br />

Java es seguro.<br />

� Las aplicaciones Java se ejecutan en un<br />

espacio determinado por la MVJ, es decir<br />

no afectan a otra aplicación del dispositivo.<br />

Java es portable.<br />

� Esto hace posible escribir una aplicación y<br />

ejecutarla en distintos dispositivos.<br />

2.2 Componentes de J2ME<br />

Un entorno de ejecución determinado<br />

de J2ME se compone de una selección<br />

de:<br />

JVM<br />

� JVM<br />

� Configuraciones<br />

� Perfiles<br />

� Paquetes opcionales<br />

J2ME define varias JVM´s de referencia<br />

adecuadas al ámbito de los dispositivos<br />

electrónicos que, en algunos casos,<br />

suprimen algunas características con el<br />

fin de obtener una implementación<br />

menos exigente.<br />

18<br />

20<br />

22<br />

24<br />

22


Diapositiva<br />

25<br />

Diapositiva<br />

27<br />

Diapositiva<br />

29<br />

Diapositiva<br />

31<br />

KVM: un tipo de JVM<br />

KVM es la Máquina Virtual más pequeña<br />

desarrollada por Sun.<br />

Su nombre proviene de Kilobyte (hace<br />

referencia a la baja ocupación de memoria,<br />

entre 40Kb y 80Kb).<br />

Es una implementación de Máquina Virtual<br />

reducida y orientada a dispositivos con bajas<br />

capacidades computacionales y de memoria.<br />

Configuraciones<br />

Una configuración es un conjunto de API´s<br />

básicas que permiten desarrollar aplicaciones<br />

<strong>para</strong> un grupo de dispositivos.<br />

Existen 2 configuraciones definidas en J2ME:<br />

� Connected Limited Device Configuration (CLDC)<br />

enfocada a dispositivos con restricciones de<br />

procesamiento y memoria, y<br />

� Connected Device Configuration (CDC) enfocada<br />

a dispositivos con más recursos<br />

Configuración CLDC<br />

Los dispositivos que usan CLDC deben<br />

cumplir los siguientes requisitos:<br />

� Tener entre 160 y 512 Kb de memoria total<br />

disponible.<br />

� Disponer, mínimo de 128 Kb de memoria no<br />

volátil <strong>para</strong> la JVM y las bibliotecas CLDC, y 32<br />

Kb de memoria volátil <strong>para</strong> la MV en tiempo de<br />

ejecución.<br />

� Procesador de 16 o 32 bits con al menos 25 Mhz<br />

de velocidad.<br />

Librerías de CLDC<br />

25<br />

27<br />

29<br />

31<br />

CVM: un tipo de JVM<br />

La CVM (Compact Virtual Machine) ha sido<br />

tomada como JVM de referencia <strong>para</strong> la<br />

configuración CDC y soporta las mismas<br />

características que la Máquina Virtual de<br />

J2SE.<br />

Está orientada a dispositivos electrónicos con<br />

procesadores de 32 bits de gama alta y en<br />

torno a 2Mb o más de memoria RAM.<br />

Configuración CLDC<br />

La configuración CLDC, es la más pequeña de<br />

las dos configuraciones.<br />

Diseñada <strong>para</strong> dispositivos con conexiones de<br />

red intermitentes, procesadores lentos, y con<br />

memoria limitada.<br />

Algunos ejemplos de dispositivos con este<br />

tipo de configuración son: Teléfonos móviles,<br />

PDA‟s y Pagers de dos vías.<br />

Configuración CLDC<br />

Además los dispositivos que usan CLDC<br />

deben cumplir los siguientes requisitos:<br />

� Ofrecer bajo consumo, debido a que éstos<br />

dispositivos trabajan con suministro de energía<br />

limitado, normalmente baterías.<br />

� Tener conexión a algún tipo de red, normalmente<br />

sin cable, con conexión intermitente y ancho de<br />

banda limitado (unos 9600 bps).<br />

Configuración CDC<br />

La configuración CDC está diseñada <strong>para</strong><br />

dispositivos como:<br />

� decodificadores de televisión digital,<br />

� televisores con internet,<br />

� algunos electrodomésticos<br />

� sistemas de navegación en automóviles.<br />

Estos dispositivos cuentan normalmente con<br />

mayor cantidad de memoria, procesadores<br />

más rápidos y ancho de banda mayor que en<br />

dispositivos CLDC.<br />

32<br />

26<br />

28<br />

30<br />

23


Diapositiva<br />

33<br />

Diapositiva<br />

35<br />

Diapositiva<br />

37<br />

Diapositiva<br />

39<br />

Configuración CDC<br />

La configuración CDC está enfocada a<br />

dispositivos con las siguientes capacidades:<br />

� Procesador de 32 bits.<br />

� Disponer de 2 Mb o más de memoria total,<br />

incluyendo memoria RAM y ROM.<br />

� Poseer la funcionalidad completa de la JVM<br />

� Conectividad a algún tipo de red.<br />

Librerías de CDC<br />

Perfiles (Profiles)<br />

Los perfiles son un conjunto de API‟s de alto<br />

nivel que definen el ciclo de vida de la<br />

aplicación, interfaz de usuario, y el acceso a<br />

las características propias del dispositivo.<br />

Más concretamente, un perfil es un conjunto<br />

de API´s orientado a un ámbito de aplicación<br />

determinado.<br />

¿Perfil = Configuración?<br />

El perfil establece unas APIs que<br />

definen las características de un<br />

dispositivo, mientras que la<br />

configuración hace lo propio con una<br />

familia de ellos.<br />

Esto hace que a la hora de construir<br />

una aplicación se cuente tanto con las<br />

APIs del perfil como de la configuración.<br />

33<br />

35<br />

37<br />

39<br />

Configuración CDC<br />

La CDC está basada en J2SE v1.3 e incluye<br />

varios paquetes Java de la edición estándar.<br />

Las peculiaridades de la CDC están<br />

contenidas principalmente en el paquete<br />

javax.microedition.io, que incluye soporte<br />

<strong>para</strong> comunicaciones http y basadas en<br />

datagramas.<br />

Nota sobre Configuraciones:<br />

La configuración CLDC usa la Máquina<br />

virtual KVM.<br />

La configuración CDC usa la Máquina virtual<br />

CVM<br />

Una configuración no se encarga del<br />

mantenimiento del ciclo de vida de la<br />

aplicación, interfaces de usuario o manejo de<br />

eventos, sino que estas responsabilidades<br />

caen en manos de los perfiles.<br />

36<br />

Perfiles<br />

Los perfiles identifican un grupo de<br />

dispositivos por la funcionalidad que<br />

proporcionan (electrodomésticos, teléfonos<br />

móviles, etc.) y el tipo de aplicaciones que se<br />

ejecutarán en ellos.<br />

Las librerías de la interfaz gráfica son un<br />

componente muy importante en la definición<br />

de un perfil.<br />

¿Perfil = Configuración?<br />

Un perfil siempre se construye sobre<br />

una configuración determinada.<br />

De este modo, podemos pensar en un<br />

perfil como un conjunto de APIs que<br />

dotan a una configuración de<br />

funcionalidad específica.<br />

34<br />

38<br />

40<br />

24


Diapositiva<br />

41<br />

Diapositiva<br />

43<br />

Diapositiva<br />

45<br />

Diapositiva<br />

47<br />

Tipos de Perfiles<br />

Existen unos perfiles que se construyen<br />

sobre la configuración CDC y otros sobre la<br />

CLDC.<br />

Para la configuración CDC se tienen los<br />

perfiles:<br />

� Foundation Profile.<br />

� Personal Profile.<br />

� RMI Profile.<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

Contenido:<br />

1. Introducción a las aplicaciones <strong>para</strong> dispositivos<br />

móviles<br />

2. Componentes de J2ME<br />

3. Arquitectura del entorno de ejecución de J2ME<br />

4. Ciclo de vida y componentes básicos de un<br />

MIDlet<br />

5. Componentes avanzados de un MIDlet<br />

6. Almacenamiento persistente: RMS<br />

Arquitectura del entorno de ejecución<br />

de J2ME<br />

En la arquitectura se visualiza que una<br />

configuración define las librerías de clase<br />

<strong>para</strong> una categoría “horizontal” o<br />

agrupamiento de dispositivos basados en<br />

requerimientos similares <strong>para</strong> un presupuesto<br />

de memoria y poder de procesamiento.<br />

Y un perfil define las librerías de clase <strong>para</strong><br />

satisfacer las demandas específicas de un<br />

cierto segmento de mercado “vertical”<br />

Arquitectura del entorno de<br />

ejecución de J2ME<br />

El perfil PDA es <strong>para</strong> PDA‟s de mediana a alta<br />

capacidad de procesamiento y almacenamiento.<br />

Los perfiles Foundation y Personal, se utilizan <strong>para</strong><br />

dispositivos con mucho mayor poder de<br />

procesamiento o de almacenamiento. Foundation<br />

carece de librerías <strong>para</strong> interfaz gráfica a diferencia de<br />

Personal.<br />

El perfil RMI requiere una implementación del perfil<br />

Foundation. El perfil RMI soporta un subconjunto de<br />

las APIs J2SE v1.3 RMI.<br />

41<br />

43<br />

45<br />

47<br />

Tipos de Perfiles<br />

Para la configuración CLDC se tienen:<br />

� PDA Profile.<br />

� Mobile Information Device Profile (MIDP).<br />

2.3 Arquitectura del entorno de<br />

ejecución de J2ME<br />

Arquitectura del entorno de<br />

ejecución de J2ME<br />

MIDP (Mobile Information Device Profile) está<br />

construido sobre la configuración CLDC.<br />

Al igual que CLDC, MIDP fue la primera<br />

configuración definida <strong>para</strong> J2ME.<br />

MIDP está diseñado <strong>para</strong> teléfonos móviles y<br />

PDA‟s.<br />

MIDP minimiza el uso de la memoria y el<br />

consumo de energía en el dispositivo.<br />

Requerimientos de Hardware<br />

Memoria Total <strong>para</strong> J2ME: 160KB a 512KB<br />

Procesador: 16bit ó 32bit con 25MHz de Velocidad<br />

Memoria de almacenamiento: Aproximadamente 128KB<br />

<strong>para</strong> las librerías de la aplicación.<br />

Conectividad a la red: 9600bps o menos<br />

Bajo consumo de energía<br />

42<br />

44<br />

46<br />

48<br />

25


Diapositiva<br />

49<br />

Diapositiva<br />

51<br />

Diapositiva<br />

53<br />

Diapositiva<br />

55<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

Contenido:<br />

1. Introducción a las aplicaciones <strong>para</strong> dispositivos<br />

móviles<br />

2. Componentes de J2ME<br />

3. Arquitectura del entorno de ejecución de J2ME<br />

4. Ciclo de vida y componentes básicos de un<br />

MIDlet<br />

5. Componentes avanzados de un MIDlet<br />

6. Almacenamiento persistente: RMS<br />

Ciclo de vida de un MIDlet<br />

pauseApp()<br />

Constructor()<br />

Paused<br />

Active<br />

startApp()<br />

destroyApp()<br />

destroyed<br />

destroyApp()<br />

Ejecución típica de un MIDlet<br />

Durante el estado “Activo”, el MIDlet puede pasar al estado<br />

de “Pausa” por una acción del usuario, o bien, por el AMS<br />

que reduciría en todo lo posible el uso de los recursos del<br />

dispositivo por parte del MIDlet.<br />

Tanto en el estado “Activo” como en el de “Pausa”, el MIDlet<br />

puede pasar al estado “Destruido” realizando una llamada al<br />

método MIDlet.destroyApp().<br />

Esto puede ocurrir porque el MIDlet haya finalizado su<br />

ejecución o porque una aplicación prioritaria necesite ser<br />

ejecutada en memoria en lugar del MIDlet. Una vez destruido<br />

el MIDlet, éste libera todos los recursos ocupados.<br />

En Síntesis, un MIDlet:<br />

Es una aplicación Java en un dispositivo<br />

MIDP.<br />

No tiene un main()<br />

Extiende de la clase<br />

javax.microedition.midlet.MIDlet<br />

Implementa startApp(), pauseApp(),<br />

destroyApp()<br />

49<br />

51<br />

53<br />

55<br />

2.4 Ciclo de vida de un MIDlet y<br />

componentes básicos de un MIDlet<br />

Un MIDlet durante su ejecución pasa por 3<br />

estados diferentes. Estos tres estados son:<br />

1) Activo: El MIDlet está actualmente en ejecución.<br />

2) Pausa: El MIDlet no está actualmente en ejecución. En este<br />

estado el MIDlet no debe usar algún recurso compartido. Para<br />

volver a pasar a ejecución tiene que cambiar su estado a Activo.<br />

3) Destruido: El MIDlet no está en ejecución ni puede transitar a<br />

otro estado. Además se liberan todos los recursos ocupados por<br />

el MIDlet.<br />

Ejecución típica de un MIDlet<br />

Se realiza la llamada al constructor del MIDlet<br />

pasando éste al estado de “Pausa” durante un<br />

corto período de tiempo.<br />

Se invoca al método MIDlet.startApp() <strong>para</strong> entrar<br />

en el estado de “Activo”.<br />

El MIDlet entonces, ocupa todos los recursos que<br />

necesita <strong>para</strong> su ejecución.<br />

El paquete<br />

javax.microedition.midlet<br />

El paquete javax.microedition.midlet define<br />

las aplicaciones MIDP y su comportamiento<br />

con respecto al entorno de ejecución.<br />

Contiene las siguientes clases:<br />

Algunos métodos de la clase<br />

MIDlet<br />

Public abstract class MIDlet extends Object{<br />

protected MIDlet()<br />

protected abstract void startApp() throws MIDletStateChangeException<br />

protected abstract void pauseApp()<br />

protected abstract void destroyApp(boolean unconditional) throws<br />

MIDletStateChangeException<br />

public final String getAppProperty(String key)<br />

public final void notifyDestroyed ()<br />

public final void notifyPaused ()<br />

public final void getAppProperty(String key)<br />

public final void resumeRequest()<br />

}<br />

50<br />

52<br />

54<br />

56<br />

26


Diapositiva<br />

57<br />

Diapositiva<br />

59<br />

Diapositiva<br />

61<br />

Diapositiva<br />

63<br />

Primer Ejemplo<br />

import javax.microedition.lcdui.Display;<br />

import javax.microedition.lcdui.Form;<br />

import javax.microedition.midlet.MIDlet;<br />

public class Hola extends MIDlet {<br />

private Display pantalla;<br />

private Form formulario = null;<br />

public Hola() {<br />

pantalla = Display.getDisplay(this);<br />

formulario = new Form(“Hola, mi primer ejemplo");<br />

}<br />

protected void startApp() {<br />

pantalla.setCurrent(formulario);<br />

}<br />

Display: Es un objeto que representa<br />

el manejador de la pantalla y los<br />

dispositivos de entrada del sistema.<br />

Solo una instancia hay por midlet<br />

Form: Es un objeto que puede<br />

contener cualquier combinación de<br />

componentes de la interfaz de usuario<br />

startApp(): Inicializa variables del<br />

dispositivo, por ejemplo el display<br />

pantalla.setCurrent(mainScreen)<br />

Componentes básicos de la<br />

Interfaz de usuario<br />

El paquete javax.microedition.lcdui incluye<br />

las clases necesarias <strong>para</strong> crear interfaces<br />

de usuario, tanto de alto como de bajo<br />

nivel.<br />

La clase Display<br />

La clase Display representa el manejador de la<br />

pantalla y los dispositivos de entrada. Todo MIDlet<br />

debe poseer por lo menos un objeto Display.<br />

Métodos de la clase Display<br />

57<br />

59<br />

61<br />

63<br />

protected void pauseApp() {<br />

}<br />

protected void destroyApp(boolean unconditional) {<br />

pantalla = null;<br />

formulario = null;<br />

notifyDestroyed();<br />

}<br />

}<br />

//Fin del MIDlet<br />

pauseApp() y destroyApp() son usados<br />

<strong>para</strong> liberar y limpiar recursos tales<br />

como: conexiones de red y datos<br />

almacenados.<br />

Interfaz gráfica de usuario<br />

La clase Display<br />

En este objeto Display se puede incluir<br />

tantos objetos Displayable como se quiera.<br />

La clase Display puede obtener información<br />

sobre las características de la pantalla del<br />

dispositivo donde se ejecute el MIDlet.<br />

Además es capaz de mostrar los objetos<br />

que componen nuestras interfaces.<br />

La clase Display<br />

Todo MIDlet debe poseer al menos una<br />

instancia del objeto Display. Para obtenerla<br />

emplearemos el siguiente código:<br />

Display pantalla = Display.getDisplay(this)<br />

La llamada a este método la realizaremos<br />

dentro del constructor del MIDlet. De esta<br />

forma nos aseguramos que el objeto<br />

Display esté a nuestra disposición durante<br />

toda la ejecución de éste.<br />

64<br />

58<br />

60<br />

62<br />

27


Diapositiva<br />

65<br />

Diapositiva<br />

67<br />

Diapositiva<br />

69<br />

Diapositiva<br />

71<br />

La clase Display<br />

Además, dentro del método startApp()<br />

tendremos que hacer referencia a la<br />

pantalla que queramos que esté activa<br />

haciendo uso del método setCurrent().<br />

Hay que tener en cuenta que cada vez que<br />

salimos del método pauseApp(), entramos<br />

en el método startApp(), por lo que la<br />

construcción de las pantallas y demás<br />

elementos que formarán parte de nuestro<br />

MIDlet la tendremos que hacer en el<br />

método constructor. 65<br />

La clase Displayable<br />

La clase Displayable representa a las pantallas de<br />

las aplicaciones.<br />

Cada objeto Display puede tener tantos objetos<br />

Displayable como se requiera.<br />

67<br />

La clase Command<br />

Un objeto de la clase Command mantiene información sobre<br />

un evento.<br />

Como analogía podemos pensar en él como un botón de<br />

Windows.<br />

Generalmente, los implementaremos en nuestros MIDlets<br />

cuando queramos detectar y ejecutar una acción simple. 69<br />

Tipos de Command<br />

71<br />

La clase Displayable<br />

Instancia de Display<br />

Si es la primera vez que<br />

se entra a startApp se<br />

hace Referencia al<br />

Display<br />

Si no, es porque se vuelve<br />

del estado de pausa (se<br />

deja la pantalla tal como<br />

está)<br />

La clase abstracta Displayable incluye los métodos<br />

encargados de manejar los eventos de pantalla y<br />

añadir o eliminar comandos.<br />

La clase Command<br />

Existen tres parámetros que hay que definir<br />

cuando construimos un objeto Command:<br />

1) Etiqueta: La etiqueta es la cadena de texto que aparecerá<br />

en la pantalla del dispositivo que identificará a nuestro<br />

Command.<br />

2) Tipo: Indica el tipo de objeto Command que queremos<br />

crear. La declaración del tipo sirve <strong>para</strong> que el dispositivo<br />

identifique el Command y le dé una apariencia específica<br />

acorde con el resto de aplicaciones existentes en el<br />

dispositivo.<br />

3) Prioridad: Es posible asignar una prioridad específica a<br />

un objeto Command. Esto puede servirle al AMS <strong>para</strong><br />

establecer un orden de aparición de los Command en<br />

pantalla. A mayor número, menor prioridad.<br />

70<br />

Definiendo un objeto<br />

Command<br />

Por ejemplo, si queremos crear un objeto<br />

Command con la etiqueta “Atras”, de tipo<br />

BACK y prioridad 1 lo haremos de la<br />

siguiente manera:<br />

new Command(“Atras”,Command.BACK,1)<br />

66<br />

68<br />

72<br />

28


Diapositiva<br />

73<br />

Diapositiva<br />

75<br />

Diapositiva<br />

77<br />

Diapositiva<br />

79<br />

Métodos de la clase Command<br />

public void startApp() {<br />

display = Display.getDisplay(this);<br />

f1.addCommand(salir);<br />

f1.addCommand(activar);<br />

f1.addCommand(desactivar);<br />

f1.addCommand(ayuda);<br />

display.setCurrent(f1);<br />

}<br />

public void pauseApp() {<br />

}<br />

public void destroyApp(boolean unconditional) {<br />

display = null;<br />

f1=null;<br />

}<br />

}//Fin del MIDlet<br />

Se adicionan los cuatro commands<br />

al Form y posteriormente se<br />

establece al Display.<br />

La interfaz CommandListener<br />

Como sabemos, una interfaz es una clase donde todos sus<br />

métodos son declarados como abstract. Es misión nuestra<br />

implementar sus correspondientes métodos.<br />

En este caso, la interfaz CommandListener sólo incluye un<br />

método:<br />

commandAction(Command c, Displayable d)<br />

En dicho método indicaremos la acción que queremos que se<br />

realice cuando se produzca un evento en el Command c que<br />

se encuentra en el objeto Displayable d.<br />

public void startApp() {<br />

display = Display.getDisplay(this);<br />

s1.addCommand(salir);<br />

s1.addCommand(activar);<br />

s1.setCommandListener(this);<br />

display.setCurrent(s1);<br />

}<br />

public void commandAction(Command c, Displayable d){<br />

if (c == salir){<br />

destroyApp(true);<br />

}<br />

}<br />

public void pauseApp() { }<br />

public void destroyApp(boolean unconditional) {<br />

display = null;<br />

s1=null;<br />

notifyDestroyed();<br />

}<br />

}<br />

Se adicionan los dos commands al<br />

Form, este establece el Listener<br />

(<strong>para</strong> la captura de eventos) y<br />

finalmente el Display establece el<br />

Form.<br />

73<br />

75<br />

77<br />

Si ocurre el evento en el<br />

command “salir” se llama<br />

al método destroyApp<br />

79<br />

Ejemplo de Command<br />

import javax.microedition.midlet.*;<br />

import javax.microedition.lcdui.*;<br />

public class Commander extends MIDlet {<br />

private Display display;<br />

private Form f1;<br />

Command salir;<br />

Command activar;<br />

Command desactivar;<br />

Command ayuda;<br />

Se definen: Un Display, Un Form, y<br />

cuatro commands.<br />

public Commander(){<br />

f1 = new Form("Formulario 1: Commands");<br />

salir = new Command("Salir",Command.EXIT,0);<br />

activar = new Command("Activar",Command.SCREEN,2);<br />

desactivar = new Command("Desactivar",Command.SCREEN,3);<br />

ayuda = new Command("Ayuda",Command.SCREEN,4);<br />

}<br />

La interfaz CommandListener<br />

No basta sólo con crear un objeto<br />

Command de un determinado tipo <strong>para</strong> que<br />

realice la acción que nosotros deseamos,<br />

de acuerdo a su tipo.<br />

Para ello tenemos que implementar la<br />

interfaz CommandListener.<br />

En cualquier MIDlet que incluyamos<br />

Commands, tendremos además que<br />

implementar la interfaz CommandListener. 76<br />

Ejemplo de CommandListener<br />

import javax.microedition.lcdui.Command;<br />

import javax.microedition.lcdui.CommandListener;<br />

import javax.microedition.lcdui.Display;<br />

import javax.microedition.lcdui.Displayable;<br />

import javax.microedition.lcdui.Form;<br />

import javax.microedition.midlet.MIDlet;<br />

public class CmdListener extends MIDlet implements CommandListener{<br />

private Display display;<br />

private Form s1;<br />

Command salir;<br />

Command activar;<br />

public CmdListener(){<br />

s1 = new Form("Pantalla 1: Commands");<br />

salir = new Command("Salir",Command.EXIT,0);<br />

activar = new Command("Activar",Command.SCREEN,2);<br />

}<br />

74<br />

Se implementa la interfaz<br />

CommandListener<br />

Se definen: Un Display, Un Form, y<br />

dos Commands.<br />

Uso de la clase Image<br />

Los objetos de la clase Image pueden<br />

añadirse a un Form <strong>para</strong> incluir<br />

imágenes.<br />

Es conveniente incluir un texto<br />

alternativo que sea presentado en el<br />

lugar que vaya a ocupar el objeto<br />

Image en caso de que éste no pueda<br />

ser visualizado en pantalla.<br />

80<br />

78<br />

29


Diapositiva<br />

81<br />

Diapositiva<br />

83<br />

Diapositiva<br />

85<br />

Diapositiva<br />

87<br />

Ejemplo del uso de Imagenes<br />

import javax.microedition.lcdui.*;<br />

import javax.microedition.midlet.*;<br />

public class CommandImg extends MIDlet implements<br />

CommandListener {<br />

private Display pantalla;<br />

private Form s1;<br />

private Form s2;<br />

Command salir;<br />

Command ver;<br />

Command regresar;<br />

Image image;<br />

public void startApp() {<br />

pantalla.setCurrent(s1);<br />

}<br />

public void pauseApp() {<br />

}<br />

Se implementa la interfaz<br />

CommandListener<br />

Se definen: Un Display, dos Form, tres<br />

commands, y un Image.<br />

public void destroyApp(boolean unconditional) {<br />

pantalla = null;<br />

s1=null;<br />

s2=null;<br />

}<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

Contenido:<br />

1. Introducción a las aplicaciones <strong>para</strong> dispositivos<br />

móviles<br />

2. Componentes de J2ME<br />

3. Arquitectura del entorno de ejecución de J2ME<br />

4. Ciclo de vida y componentes básicos de un<br />

MIDlet<br />

5. Componentes avanzados de un MIDlet<br />

6. Almacenamiento persistente: RMS<br />

Clase Screen y sus derivadas<br />

81<br />

83<br />

85<br />

87<br />

public CommandImg(){<br />

pantalla = Display.getDisplay(this);<br />

s1 = new Form("Buen dia!");<br />

s2 = new Form("Mostrando Imagen");<br />

salir = new Command("Salir",Command.EXIT,0);<br />

ver = new Command("VerImg",Command.SCREEN,2);<br />

regresar = new Command("Atras",Command.BACK,1);<br />

Se pone en bloque try-catch<br />

por alguna excepción<br />

try {<br />

image = Image.createImage( "/img/icono_0.png" );<br />

} catch( Exception e ) {}<br />

s1.addCommand(salir);<br />

s1.addCommand(ver);<br />

s2.addCommand(regresar);<br />

s2.append(image);<br />

s1.setCommandListener(this);<br />

}<br />

Se adiciona la imagen al<br />

formulario<br />

public void commandAction( Command c,Displayable d ) {<br />

if( c == salir ) {<br />

destroyApp(true);<br />

notifyDestroyed();<br />

}<br />

else<br />

if (c == ver){<br />

pantalla.setCurrent(s2);<br />

s2.setCommandListener(this);<br />

}<br />

else {<br />

pantalla.setCurrent(s1);<br />

s1.setCommandListener(this);<br />

}<br />

}<br />

}<br />

2.5 Componentes avanzados de la<br />

Interfaz de Usuario<br />

Ya tenemos un concepto general de cómo<br />

manejar y controlar las acciones del usuario<br />

a través de objetos Command y de cómo<br />

insertar éstos en la pantalla del dispositivo<br />

MID.<br />

Ahora se estudiará la clase Screen y todas<br />

las subclases. derivadas de ella.<br />

Todas estas clases conforman la interfaz de<br />

usuario de alto nivel.<br />

86<br />

La Clase Screen<br />

La clase Screen es la superclase de<br />

todas las clases que conforman la<br />

interfaz de usuario de alto nivel.<br />

public abstract class Screen extends<br />

Displayable<br />

82<br />

84<br />

88<br />

30


Diapositiva<br />

89<br />

Diapositiva<br />

91<br />

Diapositiva<br />

93<br />

Diapositiva<br />

95<br />

La Clase Alert<br />

La Clase Alert<br />

También se puede definir el tiempo<br />

que se quiere que el aviso<br />

permanezca en pantalla,<br />

diferenciando de esta manera dos<br />

tipos de Alert:<br />

� MODAL: La pantalla de aviso permanece un tiempo<br />

indeterminado hasta que es cancelada por el usuario.<br />

� NO MODAL: La pantalla de aviso permanece un tiempo<br />

definido por el programador.<br />

La Clase Alert<br />

Se puede elegir el tipo de alerta a<br />

mostrar. Cada tipo tiene asociado un<br />

sonido.<br />

public EjemploAlerta() {<br />

pantalla = Display.getDisplay(this);<br />

salir = new Command("Salir",Command.EXIT,1);<br />

aler1 = new Command("Alerta Modal",Command.SCREEN,1);<br />

aler2 = new Command("Alerta No Modal",Command.SCREEN,1);<br />

}<br />

alerta1 = new Alert("Alerta Modal","Esta alerta desaparecerá"+<br />

"cuando pulses el botón de aceptar", null, AlertType.INFO);<br />

alerta2 = new Alert("Alerta No Modal","Esta alerta desaparecera"+<br />

" cuando pasen 5 segundos",null,AlertType.INFO);<br />

alerta1.setTimeout(Alert.FOREVER);<br />

alerta2.setTimeout(5000);<br />

formulario= new Form("Programa principal");<br />

formulario.addCommand(salir);<br />

formulario.addCommand(aler1);<br />

formulario.addCommand(aler2);<br />

formulario.setCommandListener(this);<br />

89<br />

91<br />

93<br />

Alerta modal � hasta presionar tecla<br />

Alerta no modal � se desplega 5 seg.<br />

95<br />

La Clase Alert<br />

public class Alert extends Screen<br />

El objeto Alert representa una pantalla de aviso.<br />

Normalmente se usa cuando queremos avisar al<br />

usuario de una situación especial como, por<br />

ejemplo, un error.<br />

Un Alert está formado por un título, texto y/o<br />

imágenes. Para crear una pantalla de alerta se<br />

cuenta con dos constructores:<br />

� Alert(String titulo)<br />

� Alert(String titulo, String textoalerta, Image<br />

imagen, AlertType tipo) 90<br />

La Clase Alert<br />

Para el tipo de alerta MODAL se invoca el<br />

método<br />

Alert.setTimeOut(Alert.FOREVER).<br />

Para el tipo de alerta NO MODAL se utiliza<br />

el método<br />

setTimeOut(tiempo).<br />

Una vez finalizado el tiempo, la pantalla de aviso<br />

se eliminará de pantalla y aparecerá el objeto<br />

Displayable definido<br />

Ejemplo del uso de Alert<br />

import javax.microedition.midlet.*;<br />

import javax.microedition.lcdui.*;<br />

public class EjemploAlerta extends MIDlet implements<br />

CommandListener {<br />

Display pantalla;<br />

Form formulario;<br />

Alert alerta1,alerta2;<br />

Command salir, aler1, aler2;<br />

92<br />

Se definen: Un Display, un Form, dos<br />

Alert y tres Command<br />

protected void startApp() throws MIDletStateChangeException {<br />

pantalla.setCurrent(formulario);<br />

}<br />

protected void pauseApp() { }<br />

protected void destroyApp(boolean arg0) { }<br />

public void commandAction(Command c, Displayable d){<br />

if (c == salir){<br />

destroyApp(false);<br />

notifyDestroyed();<br />

}<br />

else if (c == aler1)<br />

pantalla.setCurrent(alerta1,formulario);<br />

else<br />

pantalla.setCurrent(alerta2,formulario);<br />

}<br />

}<br />

94<br />

96<br />

31


Diapositiva<br />

97<br />

Diapositiva<br />

99<br />

Diapositiva<br />

101<br />

Diapositiva<br />

103<br />

La Clase List<br />

Tipos de List<br />

Métodos de la clase List<br />

Ejemplo de Lista implícita<br />

import javax.microedition.midlet.*;<br />

import javax.microedition.lcdui.*;<br />

public class ListImplicit extends MIDlet implements CommandListener {<br />

private Display display;<br />

private List lista;<br />

private Command salir;<br />

private Image[] iconos = new Image[6];<br />

public ListImplicit() {<br />

salir = new Command( "Salir",Command.EXIT,1 );<br />

try {<br />

for( int i=0; i < 6; i++ )<br />

97<br />

99<br />

101<br />

Se definen: Un Display, un<br />

List (en vez del Form), un<br />

Command y un arreglo de<br />

Image<br />

Se crea el arreglo de<br />

imagenes<br />

iconos[i] = Image.createImage( "/img/icono_”+i+“.png" );<br />

} catch( Exception e ) { }<br />

103<br />

La Clase List<br />

public class List extends Screen implements<br />

Choice<br />

La clase List permite construir pantallas que<br />

poseen una lista de opciones.<br />

Esto es útil <strong>para</strong> crear menús de manera<br />

independiente.<br />

Se pueden crear 3 tipos distintos de listas cuyo tipo<br />

están definidos en la interfaz Choice<br />

Constructores de la Clase List<br />

Existen dos constructores que<br />

permiten construir listas: el primero de<br />

ellos crea una lista vacía y el segundo<br />

proporciona una lista con un conjunto<br />

inicial de opciones y de imágenes<br />

asociadas:<br />

� List(String titulo, int listType)<br />

� List(String titulo, int listType, String[]<br />

elementos, Image[] imagenes)<br />

Lista Implícita<br />

En este tipo de listas cuando se<br />

selecciona un elemento, se provoca<br />

una acción.<br />

La acción a ejecutar cuándo se<br />

seleccione una opción la tenemos que<br />

implementar en el método<br />

commandAction(Command c, Displayable d)<br />

lista = new List( "¿Cómo estás?",List.IMPLICIT );<br />

lista.append( "Ok",iconos[0] );<br />

lista.append( "Feliz",iconos[1] );<br />

lista.append( "Sorprendido",iconos[2] );<br />

lista.append( "Triste",iconos[3] );<br />

lista.append( “Desesperado",iconos[4] );<br />

lista.append( "Furioso",iconos[5] );<br />

}<br />

protected void startApp() {<br />

display = Display.getDisplay( this );<br />

lista.addCommand( salir );<br />

lista.setCommandListener(this);<br />

display.setCurrent( lista );<br />

}<br />

protected void pauseApp() {}<br />

protected void destroyApp( boolean flag ) {}<br />

98<br />

100<br />

102<br />

Se crea la lista y se<br />

declara IMPLICITA,<br />

esto es, ocasiona un<br />

evento al seleccionar.<br />

Se adiciona el Command al List, y se<br />

le establece el Listener (al List).<br />

Finalmente se establece (el List) al<br />

Display.<br />

104<br />

32


Diapositiva<br />

105<br />

Diapositiva<br />

107<br />

Diapositiva<br />

109<br />

Diapositiva<br />

111<br />

public void commandAction( Command c,Displayable d ) {<br />

if( c == lista.SELECT_COMMAND ) { Si seleccionó alguna opción de la lista..<br />

Alert aviso = new Alert( "Sel Implicita" );<br />

aviso.setString( “ESTOY...\n“+ lista.getString(lista.getSelectedIndex()) );<br />

aviso.setTimeout( Alert.FOREVER );<br />

display.setCurrent( aviso, display.getCurrent() );<br />

}<br />

else if( c == salir ) {<br />

destroyApp( true );<br />

notifyDestroyed();<br />

}<br />

}<br />

}<br />

Lista Exclusiva<br />

En este caso, al contrario que ocurre<br />

con las listas implícitas, la selección<br />

de una opción no provoca algún tipo<br />

de evento.<br />

De este modo es necesario incluir un<br />

Command <strong>para</strong> salvar el estado del<br />

menú de opciones y ver cuál de éstas<br />

ha sido seleccionada.<br />

107<br />

public void startApp() {<br />

pantalla.setCurrent(menu);<br />

}<br />

public void pauseApp() {}<br />

public void destroyApp(boolean unconditional) {}<br />

public void commandAction(Command c, Displayable d){<br />

if (c == salvar){<br />

int opcionelegida = menu.getSelectedIndex();<br />

//salvar opciones en memoria persistente.<br />

//Poner un Alert con “Opcion elegida es: ..”<br />

}<br />

else{<br />

destroyApp(false);<br />

notifyDestroyed();<br />

}<br />

}<br />

}<br />

Lista Múltiple<br />

Se puede conocer los elementos que<br />

se han seleccionado mediante el uso<br />

de los métodos getSelectedFlags() e<br />

isSelected().<br />

105<br />

109<br />

111<br />

Lista Exclusiva<br />

En este tipo de listas sólo podemos<br />

seleccionar un elemento a la vez.<br />

La selección de uno de ellos implica la<br />

deselección del resto.<br />

La implementación en el dispositivo de<br />

este tipo de listas se realiza a través<br />

de Radio Buttons.<br />

Ejemplo de Lista Exclusiva<br />

public class ListaExclusiva extends MIDlet implements CommandListener{<br />

Display pantalla;<br />

Command salir, salvar;<br />

List menu;<br />

public ListaExclusiva(){<br />

pantalla = Display.getDisplay(this);<br />

salir = new Command("Salir",Command.EXIT,1);<br />

salvar = new Command("Salvar",Command.ITEM,1);<br />

String opciones[] = {"Color 1","Color 2"," Color 3"};<br />

menu = new List("Lista exclusiva. Selecciona un<br />

color:",List.EXCLUSIVE,opciones,null);<br />

menu.addCommand(salvar);<br />

menu.addCommand(salir);<br />

menu.setCommandListener(this);<br />

}<br />

Lista Múltiple<br />

106<br />

Se crea la lista y se<br />

declara EXCLUSIVA,<br />

esto es, solo permite<br />

seleccionar 1 elemento.<br />

En este tipo de listas podemos seleccionar<br />

los elementos que queramos al mismo<br />

tiempo.<br />

Además, los elementos pueden ser<br />

marcados o desmarcados <strong>para</strong> permitir la<br />

selección individual.<br />

Como en las listas exclusivas también es<br />

necesario incluir un Command <strong>para</strong> salvar<br />

los elementos elegidos.<br />

110<br />

Ejemplo de Lista Múltiple<br />

public class ListaMultiple extends MIDlet implements CommandListener {<br />

private Display display;<br />

private Command salir, aceptar;<br />

private List lista;<br />

private Image[] iconos = new Image[5];<br />

Se crea la lista y se<br />

declara MULTIPLE, esto<br />

public ListaMultiple() {<br />

es, permite seleccionar<br />

salir = new Command( "Salir",Command.EXIT,1 ); 1 o mas elementos.<br />

aceptar = new Command( "Aceptar",Command.OK,1 );<br />

try { for( int i=0; i < 5; i++ )<br />

iconos[i] = Image.createImage( "/img/icono_"+i+".png" );<br />

} catch( Exception e ) {<br />

}<br />

String opciones[] = {"Taza","Café","Leche","Crema","Azucar"};<br />

lista = new List( "Selecciona:",List.MULTIPLE,opciones,iconos );<br />

}<br />

112<br />

108<br />

33


Diapositiva<br />

113<br />

Diapositiva<br />

115<br />

Diapositiva<br />

117<br />

Diapositiva<br />

119<br />

protected void startApp() {<br />

display = Display.getDisplay( this );<br />

lista.addCommand( salir );<br />

lista.addCommand( aceptar );<br />

lista.setCommandListener(this);<br />

display.setCurrent( lista );<br />

}<br />

protected void pauseApp() {}<br />

protected void destroyApp( boolean flag ) {}<br />

if( buf.length() == 0 )<br />

buf.append( "No hay nada seleccionado." );<br />

Alert aviso = new Alert( "Sel. Múltiple" );<br />

aviso.setString( buf.toString() );<br />

aviso.setTimeout( Alert.FOREVER );<br />

display.setCurrent( aviso,display.getCurrent() );<br />

}<br />

else if( c == salir ) {<br />

destroyApp( true );<br />

notifyDestroyed();<br />

}<br />

}<br />

}<br />

La clase TextBox<br />

Un TextBox es una pantalla que nos permite editar<br />

texto en ella.<br />

Cuando creamos un TextBox, tenemos que<br />

especificar su capacidad, es decir, el número de<br />

caracteres que queremos que albergue cómo<br />

máximo.<br />

Si la capacidad del dispositivo es insuficiente <strong>para</strong><br />

mostrar todo a la vez, la implementación<br />

proporciona un mecanismo de scroll que permite<br />

visualizar todo el texto. 117<br />

Formatos de TextBox<br />

Se puede definir el formato del texto<br />

basándose en las constantes de la<br />

tabla siguiente:<br />

113<br />

115<br />

119<br />

public void commandAction( Command c,Displayable d ) {<br />

if( c == aceptar ) {<br />

StringBuffer buf = new StringBuffer();<br />

boolean[] elementos = new boolean[ lista.size() ];<br />

// Comprobamos los que están marcados o no, rellenando<br />

// el array anterior con el valor booleano de las marcas<br />

lista.getSelectedFlags( elementos );<br />

for( int i=0; i < elementos.length; ++i ) {<br />

if( elementos[i] ) {<br />

if( buf.length() == 0 )<br />

buf.append( "Has seleccionado:\n" );<br />

else<br />

buf.append( ", " );<br />

buf.append( lista.getString( i ) );<br />

}<br />

}<br />

La clase TextBox<br />

La clase TextBox<br />

Pero la capacidad devuelta por la llamada<br />

al constructor de clase puede ser distinta a<br />

la que habíamos solicitado.<br />

De cualquier forma, el método getMaxSize()<br />

devuelve la capacidad máxima que permite<br />

un TextBox ya creado.<br />

El constructor tiene la forma siguiente:<br />

TextBox(String titulo, String texto, int tamaño, int<br />

restricciones)<br />

118<br />

Formatos de TextBox<br />

DECIMAL es una constante incorporada<br />

por el API MIDP 2.0 que permite la<br />

introducción con parte decimal.<br />

Las constantes se pueden cambiar<br />

mediante etiquetas (flags) que indican el<br />

tipo de presentación.<br />

La versión 2.0 del perfil MIDP añade varias<br />

de estas etiquetas a la única que había,<br />

PASSWORD.<br />

120<br />

114<br />

116<br />

34


Diapositiva<br />

121<br />

Diapositiva<br />

123<br />

Diapositiva<br />

125<br />

Diapositiva<br />

127<br />

Etiquetas <strong>para</strong> TextBox<br />

PASSWORD: Hace que los caracteres que se introduzcan no<br />

se muestren como tales sino que sean sustituidos con otros,<br />

generalmente asteriscos.<br />

UNEDITABLE: Indica que el texto no se puede editar.<br />

SENSITIVE: Indica que el texto no debe almacenarse. Se<br />

utiliza, por ejemplo, <strong>para</strong> completar automáticamente una<br />

entrada o <strong>para</strong> indicar que el texto está fuera de límites y no<br />

debe ser guardado.<br />

Etiquetas <strong>para</strong> TextBox<br />

Si no se quiere que haya tipo alguno de<br />

validación de la entrada que realice el<br />

usuario se debe indicar la constante ANY.<br />

Las constantes que indican el tipo de<br />

entrada se pueden combinar mediante el<br />

operador lógico OR (|). Por ejemplo si no se<br />

quiere que sea visible el salario de un<br />

trabajador se pondría la sentencia:<br />

Displayable d = new TextBox(“Salario”, “”, 9,<br />

TextFiel.DECIMAL | TextField.PASSWORD)<br />

Mas sobre TextBox<br />

Los comandos asociados a la caja de texto<br />

son mapeados a las teclas del dispositivo<br />

utilizando métodos de la clase Command y<br />

serán tratados como indique su tipo.<br />

Si no incluyen comandos asociados a la<br />

caja de texto, el usuario no será capaz de<br />

validar las acciones de manipulación del<br />

texto y los cambios se perderán.<br />

Ejemplo de TextBox<br />

public class CajaTexto extends MIDlet implements CommandListener {<br />

private Display pantalla;<br />

private TextBox cajaTexto;<br />

private Command salir;<br />

private Command aceptar;<br />

Se definen: Un Display, un<br />

TextBox (en vez del Form),<br />

y dos Command<br />

Se crea el TextBox<br />

public CajaTexto() {<br />

salir = new Command( "Salir",Command.EXIT,1 );<br />

aceptar = new Command( "Aceptar",Command.OK,1 );<br />

cajaTexto = new TextBox( "Número de teléfono","",10,<br />

TextField.PHONENUMBER );<br />

cajaTexto.setString( "9998887777" );<br />

Se establece texto inicial<br />

cajaTexto.addCommand( salir );<br />

cajaTexto.addCommand( aceptar );<br />

}<br />

127<br />

121<br />

123<br />

125<br />

Etiquetas <strong>para</strong> TextBox<br />

NON_PREDICTIVE: Se usa <strong>para</strong> indicar el<br />

texto que se espera o el formato de la<br />

entrada que se espera en el campo.<br />

INITIAL_CAPS_WORD: Pone en<br />

mayúscula la letra inicial de cada palabra<br />

que se introduce.<br />

INITIAL_CAPS_SENTENCE: Pone en<br />

mayúscula la letra inicial de cada una de las<br />

frases introducidas.<br />

122<br />

Mas sobre TextBox<br />

La zona destinada al contenido inicial<br />

proporciona el medio de entrada de datos al<br />

usuario.<br />

Cuando se crea la caja de texto es<br />

necesario añadir comandos en la zona del<br />

dispositivo destinada a ello, que serán<br />

recogidos por eventos de acción llamando a<br />

los métodos addCommand() y<br />

setCommandListener() de esta clase.<br />

Métodos de la clase TextBox<br />

protected void startApp() {<br />

pantalla = Display.getDisplay( this );<br />

cajaTexto.setCommandListener( this );<br />

pantalla.setCurrent( cajaTexto );<br />

}<br />

protected void pauseApp() {}<br />

protected void destroyApp( boolean flag ) {}<br />

124<br />

126<br />

128<br />

35


Diapositiva<br />

129<br />

Diapositiva<br />

131<br />

Diapositiva<br />

133<br />

Diapositiva<br />

135<br />

public void commandAction(Command c,Displayable d) {<br />

if( c == aceptar ) {<br />

Alert aviso = new Alert( "Número de teléfono" );<br />

aviso.setString( "El número tecleado es:\n"+<br />

cajaTexto.getString() );<br />

aviso.setTimeout( Alert.FOREVER );<br />

pantalla.setCurrent( aviso, pantalla.getCurrent() );<br />

}<br />

else if( c == salir ) {<br />

destroyApp( true );<br />

notifyDestroyed();<br />

}<br />

}<br />

}<br />

La clase Form<br />

Si se oprime aceptar se<br />

muestra el numero<br />

tecleado en un Alert<br />

(modal)<br />

Como se discutió anteriormente un formulario está<br />

constituido por una subclase Form de la clase<br />

Screen, que puede contener cualquier combinación<br />

de componentes de la interfaz de usuario.<br />

Estos componentes pueden ser objetos diversos.<br />

Todos son instanciados de subclases de la clase<br />

Item.<br />

La clase Item<br />

La clase Item es la superclase de todos los<br />

componentes de la interfaz gráfica que son<br />

susceptibles de ser incorporados a un objeto Form.<br />

El número de objetos que podemos insertar en un<br />

formulario es variable pero, teniendo en cuenta el<br />

tamaño de las pantallas de los dispositivos MID, se<br />

recomienda que se número sea pequeño <strong>para</strong><br />

evitar así el scroll que se produciría si insertáramos<br />

demasiados objetos en un formulario.<br />

La clase Item<br />

Un mismo Item no puede estar en más de un<br />

formulario a la vez.<br />

Si, por ejemplo, deseamos usar una misma<br />

imagen en más de un formulario, deberemos<br />

borrar esa imagen de un formulario antes de<br />

insertarla en el que vamos a mostrar por<br />

pantalla.<br />

Si no cumplimos esta regla, se lanzaría la<br />

excepción IllegalStateException.<br />

129<br />

131<br />

133<br />

135<br />

La clase Form<br />

La clase Item<br />

Las subclases de la clase Item, que<br />

pueden formar parte de un formulario<br />

de tipo Form, son las siguientes:<br />

La clase Item<br />

Para referirnos a los Items o componentes de un<br />

formulario usaremos unos índices, siendo 0 el<br />

índice del primer Item y Form.size()-1 el del último.<br />

La secuencia de objetos Item almacenados en un<br />

objeto Form se puede manipular mediante los<br />

métodos insert(), append(), delete(), get(), set(), y<br />

size().<br />

El método size() nos devuelve el número de Items<br />

que contiene un formulario.<br />

Métodos de la clase Form<br />

130<br />

132<br />

134<br />

136<br />

36


Diapositiva<br />

137<br />

Diapositiva<br />

139<br />

Diapositiva<br />

141<br />

Diapositiva<br />

143<br />

La clase Item<br />

Todos los objetos Item tienen una etiqueta de tipo<br />

String que corresponde al título del Item cuando este<br />

aparece en la pantalla del dispositivo.<br />

Un objeto Item, como ya se mencionó, solamente<br />

puede estar asociado a un objeto Form, lo cual<br />

simplifica la implementación, al no tener que<br />

compartir el estado interno de los objetos Item.<br />

El componente TextField<br />

Es similar a la clase TextBox. Las diferencias entre<br />

ambas son:<br />

� Un TextField tiene que ser insertado en un formulario,<br />

mientras que un TextBox puede implementarse por sí<br />

mismo.<br />

� TextField deriva de la clase Item, mientras que TextBox<br />

deriva directamente de Screen, y sus eventos los<br />

controlamos a través de Commands. Por esta razón, los<br />

eventos que produce un TextField los podemos controlar a<br />

través del método ItemStateChanged(Item item), mientras<br />

que en un TextBox los controlamos en el método<br />

commandAction(Command c, Displayable d).<br />

public MidTextField() {<br />

salir = new Command( "Salir",Command.EXIT,1 );<br />

aceptar = new Command( "Aceptar",Command.OK,1 );<br />

formulario = new Form( "Campos de texto" );<br />

Se crean los TextField<br />

tf_numero = new TextField( "Identificador:","12345",10,<br />

TextField.PASSWORD | TextField.NUMERIC);<br />

tf_url = new TextField( "Dirección:","http://www.pj.es",<br />

40,TextField.URL );<br />

tf_email = new TextField( "Email:","carlos@www.pj.es",<br />

40,TextField.EMAILADDR );<br />

tf_notas = new TextField( "Notas:","",50,TextField.ANY |<br />

TextField.INITIAL_CAPS_WORD);<br />

}<br />

public void commandAction( Command c,Displayable d ) {<br />

if( c == aceptar ) {<br />

StringBuffer buf = new StringBuffer();<br />

buf.append( "Id.: "+tf_numero.getString()+"\n" );<br />

buf.append( "Email: "+tf_email.getString()+"\n" );<br />

buf.append( "Url: "+tf_url.getString()+"\n" );<br />

buf.append( "Notas: "+tf_notas.getString()+"\n" );<br />

Alert aviso = new Alert( "Valores asignados:",<br />

buf.toString(),null,AlertType.INFO );<br />

aviso.setTimeout( Alert.FOREVER );<br />

display.setCurrent( aviso,display.getCurrent() );<br />

}<br />

else if( c == salir ) {<br />

destroyApp( true );<br />

notifyDestroyed();<br />

}<br />

}<br />

}<br />

137<br />

139<br />

141<br />

Se concatena el texto<br />

en un StringBuffer<br />

<strong>para</strong> imprimir en un<br />

Alert<br />

143<br />

El componente TextField<br />

Un objeto TextField es un componente que permite editar texto<br />

y puede ser colocado sobre un objeto Form.<br />

Constructor: TextField(String etiqueta, String texto, int<br />

capacidad, int restricciones)<br />

Ejemplo de Form con el Item<br />

TextField<br />

import javax.microedition.midlet.*;<br />

import javax.microedition.lcdui.*;<br />

import javax.microedition.midlet.*;<br />

public class MidTextField extends MIDlet implements CommandListener {<br />

private Display display;<br />

private Form formulario;<br />

private TextField tf_numero;<br />

private TextField tf_url;<br />

private TextField tf_email;<br />

private TextField tf_notas;<br />

private Command salir;<br />

private Command aceptar;<br />

protected void startApp() {<br />

display = Display.getDisplay( this );<br />

formulario.append( tf_numero );<br />

formulario.append( tf_url );<br />

formulario.append( tf_email );<br />

formulario.append( tf_notas );<br />

formulario.addCommand( salir );<br />

formulario.addCommand( aceptar );<br />

formulario.setCommandListener( this );<br />

display.setCurrent( formulario );<br />

}<br />

protected void pauseApp() {}<br />

protected void destroyApp( boolean flag ) {}<br />

Se definen: Un Display, un<br />

Form, cuatro TextField<br />

(que iran en el Form) y<br />

dos Command<br />

Se adicionan los<br />

TextField al Form<br />

El componente ChoiceGroup<br />

Un objeto ChoiceGroup define un grupo<br />

de elementos seleccionables que<br />

pueden incluirse en un objeto Form.<br />

138<br />

140<br />

142<br />

144<br />

37


Diapositiva<br />

145<br />

Diapositiva<br />

147<br />

Diapositiva<br />

149<br />

Diapositiva<br />

151<br />

El componente ChoiceGroup<br />

Este objeto es similar a un objeto de tipo List, pero<br />

solamente soporta los modos de selección<br />

exclusivo y múltiple.<br />

La diferencia mas patente es que List no es una<br />

subclase de Item, de forma que cuando una lista<br />

aparece en pantalla solamente hay un componente<br />

visible, mientras que ChoiceGroup, al poder ser un<br />

objeto susceptible de incluirse en una pantalla de<br />

tipo Form, puede compartir esa pantalla con<br />

cualquier numero de componentes, dentro de los<br />

límites de la memoria disponible.<br />

145<br />

public PreferenciasMid() {<br />

opciones[0] = "Sonido";<br />

opciones[1] = "Video";<br />

opciones[2] = "Seguridad";<br />

opciones[3] = "Otros";<br />

try {<br />

imagenes[0] = Image.createImage( "/img/sonido.png" );<br />

imagenes[1] = Image.createImage( "/img/video.png" );<br />

imagenes[2] = Image.createImage( "/img/seguridad.png" );<br />

imagenes[3] = Image.createImage( "/img/otros.png" );<br />

}catch( IOException e ) {}<br />

Se crea el<br />

ChoiceGroup y se<br />

establece la opcion 3<br />

preferencias = new ChoiceGroup( "Selecciona opción:", como seleccionada<br />

Choice.EXCLUSIVE,opciones,imagenes );<br />

preferencias.setSelectedIndex( 3,true );<br />

formulario = new Form( "Preferencias" );<br />

salir = new Command( "Salir",Command.EXIT,1 );<br />

estado = new Command( "Estado",Command.SCREEN,2 );<br />

}<br />

147<br />

public void commandAction( Command c,Displayable d ) {<br />

if( c == estado ) {<br />

boolean seleccion[] = new boolean[preferencias.size()]; Se concatena el texto<br />

en un StringBuffer<br />

preferencias.getSelectedFlags( seleccion );<br />

<strong>para</strong> imprimir en un<br />

String mensaje = "";<br />

Alert posteriormente<br />

for( int i=0; i < preferencias.size(); i++ ){<br />

mensaje+= preferencias.getString(i) +<br />

(seleccion[i] ? ": seleccionado\n" : ": no seleccionado\n");<br />

}<br />

Alert aviso = new Alert( "Valores<br />

asignados:",mensaje,null,AlertType.INFO );<br />

aviso.setTimeout( Alert.FOREVER );<br />

display.setCurrent( aviso,display.getCurrent() );<br />

}<br />

else if( c == salir ) {<br />

destroyApp( true );<br />

notifyDestroyed();<br />

}<br />

}<br />

149<br />

}<br />

<strong>Unidad</strong> 2. Desarrollo de <strong>Aplicaciones</strong><br />

<strong>Móviles</strong> con J2ME<br />

Contenido:<br />

1. Introducción a las aplicaciones <strong>para</strong> dispositivos<br />

móviles<br />

2. Componentes de J2ME<br />

3. Arquitectura del entorno de ejecución de J2ME<br />

4. Ciclo de vida y componentes básicos de un<br />

MIDlet<br />

5. Componentes avanzados de un MIDlet<br />

6. Almacenamiento persistente: RMS<br />

151<br />

Ejemplo de Form con el Item<br />

ChoiceGroup<br />

import java.io.*;<br />

import javax.microedition.lcdui.*;<br />

import javax.microedition.midlet.*;<br />

public class PreferenciasMid extends MIDlet implements CommandListener {<br />

private Display display;<br />

private Form formulario;<br />

private ChoiceGroup preferencias;<br />

private Command salir;<br />

private Command estado;<br />

private String[] opciones = new String[4];<br />

private Image[] imagenes = new Image[4];<br />

Se definen: Un Display, un<br />

Form, un ChoiceGroup<br />

(que ira en el Form),dos<br />

Command, un arreglo de<br />

String, y un arreglo de<br />

Image.<br />

protected void startApp() {<br />

Se adiciona el<br />

display = Display.getDisplay( this ); ChoiceGroup al Form<br />

formulario.append( preferencias );<br />

formulario.addCommand( salir );<br />

formulario.addCommand( estado );<br />

formulario.setCommandListener( this );<br />

display.setCurrent( formulario );<br />

}<br />

protected void pauseApp() {}<br />

protected void destroyApp( boolean flag ) {}<br />

Notas sobre el componente<br />

ChoiceGroup<br />

La especificación MIDP 2.0 incluye un nuevo tipo <strong>para</strong> la<br />

apariencia del objeto ChoiceGroup que es POPUP.<br />

La apariencia de los objetos de este tipo son de cajas combo,<br />

es decir muestran uno de los elementos de la lista de<br />

selección y un botón <strong>para</strong> indicar que existen mas opciones.<br />

Seleccionando o activando este botón, aparecerá la lista<br />

completa de los elementos seleccionables, permitiendo una<br />

nueva selección por parte del usuario.<br />

preferencias = new ChoiceGroup( "Selecciona opción:",<br />

Choice.POPUP, opciones, imagenes );<br />

preferencias.setSelectedIndex( 3,true );<br />

2.6 Almacenamiento Persistente:<br />

RMS<br />

MIDP proporciona un mecanismo a los<br />

MIDlets que les permite almacenar datos de<br />

forma persistente <strong>para</strong> su futura<br />

recuperación.<br />

Este mecanismo está implementado sobre<br />

una base de datos basada en registros que<br />

llamaremos Record Management System o<br />

RMS (Sistema de Administración de<br />

registros).<br />

146<br />

148<br />

150<br />

152<br />

38


Diapositiva<br />

153<br />

Diapositiva<br />

155<br />

Diapositiva<br />

157<br />

Diapositiva<br />

159<br />

RMS<br />

La información es guardada en el<br />

dispositivo en una zona de memoria<br />

dedicada <strong>para</strong> este propósito.<br />

La cantidad de memoria y la zona asignada<br />

<strong>para</strong> ello dependerá de cada dispositivo.<br />

RMS está implementado en una base de<br />

datos basada en registros.<br />

RMS<br />

Los MIDlets son los encargados de crear<br />

los Record Stores <strong>para</strong> comunicarse con<br />

ellos.<br />

Estos Record Stores quedan almacenados<br />

en el dispositivo y pueden ser accedidos<br />

por cualquier MIDlet que pertenezca a la<br />

misma suite<br />

Propiedades de Record Store<br />

Cada Record Store está compuesto por cero o más<br />

registros.<br />

Un nombre de Record Store es sensible a<br />

mayúsculas y minúsculas y está formado por un<br />

máximo de 32 caracteres UNICODE.<br />

Dentro de una suite no pueden coexistir dos<br />

Record Stores con el mismo nombre.<br />

Si una suite de MIDlets es borrada del dispositivo<br />

MID, todos los Record Stores pertenecientes a esa<br />

suite se borrarán.<br />

Es posible que un MIDlet acceda a un Record<br />

Store creado por otra suite, siempre que ésta dé<br />

permiso <strong>para</strong> ello.<br />

157<br />

Estructura de Record Store<br />

153<br />

155<br />

159<br />

MIDlets y RMS<br />

Acceso a RMS por una suite<br />

Propiedades de Record Store<br />

Un Record Store tal como su nombre indica es un<br />

almacén de registros. Estos registros son la unidad<br />

básica de información que utiliza la clase<br />

RecordStore <strong>para</strong> almacenar datos.<br />

Cada uno de estos registros está formado por dos<br />

unidades:<br />

� Un número identificador de registro (Record ID) que es un<br />

valor entero que realiza la función de clave primaria en la<br />

base de datos.<br />

� Un array de bytes que es utilizado <strong>para</strong> almacenar la<br />

información deseada.<br />

Propiedades de Record Store<br />

Además de un nombre, cada Record Store también<br />

posee otros dos atributos:<br />

� Número de versión: Es un valor entero que se actualiza<br />

conforme vayamos insertando, modificando o borrando<br />

registros en el Record Store. Podemos consultar este<br />

valor invocando al método RecordStore.getVersion().<br />

� Fecha de ultima modificación: Es un entero de tipo long<br />

que representa el número de milisegundos en que se ha<br />

modificado por última vez la zona de almacenamiento.<br />

Este valor lo podemos obtener invocando al método<br />

RecordStore.getLastModified().<br />

154<br />

156<br />

158<br />

160<br />

39


Diapositiva<br />

161<br />

Diapositiva<br />

163<br />

Creación de un Record Store<br />

La clase RecordStore no dispone de ningún<br />

constructor, pero posee el método estático:<br />

static RecordStore openRecordStore(String name, boolean<br />

createIfNeccesary)<br />

Este método nos abre el Record Store con<br />

el nombre pasado como parámetro o nos<br />

crea uno si no existe cuando el parámetro<br />

createIfNeccesary es true.<br />

Manipulación de registros<br />

Una vez creado o abierta la comunicación<br />

con el Record Store, podemos leer, escribir,<br />

modificar o borrar registros a nuestro gusto.<br />

Para ello, usaremos los métodos de la<br />

clase RecordStore<br />

161<br />

163<br />

Métodos generales de Record<br />

Store<br />

Manipulación de registros<br />

162<br />

164<br />

40


<strong>Unidad</strong> III<br />

Diapositiva<br />

1<br />

Diapositiva<br />

3<br />

Diapositiva<br />

5<br />

<strong>Unidad</strong> 3. Programación Bluetooh<br />

con J2ME<br />

Objetivo:<br />

Aprender los conceptos básicos <strong>para</strong><br />

desarrollar aplicaciones con J2ME <strong>para</strong><br />

redes de área personal inalámbrica<br />

(WPAN‟s).<br />

<strong>Unidad</strong> 3. Programación Bluetooh<br />

con J2ME<br />

Contenido:<br />

1. La API Bluetooth<br />

2. La API JABWT<br />

3. Protocolos de envío y recepción de datos<br />

4. Plataformas de desarrollo bluetooth con soporte<br />

Java<br />

5. Desarrollo de aplicaciones móviles <strong>para</strong> una<br />

WPAN<br />

Casos de uso de Bluetooth<br />

Puntos de acceso de voz/datos<br />

Reemplazo de cables<br />

Redes personales ad-hoc<br />

<strong>Unidad</strong> 3. Programación Bluetooh<br />

con J2ME<br />

Contenido:<br />

1. La API Bluetooth<br />

2. La API JABWT<br />

3. Protocolos de envío y recepción de datos<br />

4. Plataformas de desarrollo bluetooth con soporte<br />

Java<br />

5. Desarrollo de aplicaciones móviles <strong>para</strong> una<br />

WPAN<br />

3.1. La API Bluetooth<br />

La tecnología inalámbrica Bluetooth es una<br />

especificación abierta de bajo costo, bajo consumo,<br />

de corto alcance <strong>para</strong> comunicaciones inalámbricas<br />

ad-hoc de voz y datos realizada por el SIG (Special<br />

Interest Group).<br />

Especificación Bluetooth<br />

Al mas alto nivel, la especificación es realmente una<br />

colección de especificaciones:<br />

� Una especificación del nucleo (core) Bluetooth: define la<br />

arquitectura global Bluetooth, términos comunes, y<br />

especificaciónes del controlador y del host.<br />

� Especificaciones de transporte Bluetooth: define que<br />

diferentes medios de transporte pueden ser usados <strong>para</strong><br />

comunicación entre el host y el controlador (p.e. USB).<br />

� Especificaciones de protocolos Bluetooth: describen<br />

protocolos de alto nivel que corren sobre tecnología<br />

inalámbrica Bluetooth (p.e. OBEX).<br />

� Especificaciones de perfiles Bluetooth: describen como las<br />

aplicaciones usan la pila de protocolos.<br />

41


Diapositiva<br />

7<br />

Diapositiva<br />

9<br />

Diapositiva<br />

11<br />

Diapositiva<br />

13<br />

Arquitectura de la pila Bluetooth<br />

La pila de protocolos Bluetooth puede ser dividida en dos<br />

componentes:<br />

� El host Bluetooth, y<br />

� el controlador Bluetooth (ó módulo de radio Bluetooth).<br />

La interfaz Host/Controlador (HCI) provee una interfaz estandarizada<br />

entre el host Bluetooth, y el controlador Bluetooth<br />

Protocolos Bluetooth<br />

(La capa) Radio Bluetooth es la capa mas baja en la<br />

especificación Bluetooth. Esta define los<br />

requerimientos del dispositivo tranceptor Bluetooth<br />

operando en la banda de radio frecuencia ISM de<br />

2.4-GHz.<br />

La banda base y la capa de control de enlace habilita<br />

el enlace físico de radiofrecuencia entre las unidades<br />

Bluetooth realizando conexión.<br />

El protocolo manejador de enlace (LMP) es<br />

responsable de la configuración de enlace entre<br />

dispositivos Bluetooth, administrando y negociando<br />

los tamaños de paquete de banda base.<br />

Perfiles Bluetooth<br />

En adición a los protocolos, el SIG definió los perfiles<br />

Bluetooth.<br />

Un perfil Bluetooth define maneras estándar de usar<br />

protocolos seleccionados y características de<br />

protocolos que habilitan un uso particular.<br />

Un perfil puede ser descrito como una “rebanada”<br />

vertical de la pila de protocolos. Este define opciones<br />

en cada protocolo que son necesarios <strong>para</strong><br />

determinado uso.<br />

Perfiles Bluetooth<br />

Protocolos Bluetooth<br />

Protocolos Bluetooth<br />

La capa HCI provee una interfaz de comandos <strong>para</strong> el<br />

radio, controlador de banda base, y administrador de<br />

enlace. Es una interfaz estandar <strong>para</strong> acceso a las<br />

capacidades de banda base Bluetooth, el estatus del<br />

hardware, y registros de control.<br />

El protocolo de adaptacion y control de enlace lógico<br />

(L2CAP) protege a los protocolos de capas superiores<br />

de los detalles de los protocolos de capas bajas. Este<br />

multiplexa entre las distintas conexiones lógicas<br />

hechas por las capas superiores.<br />

Los protocolos restantes de interés se discutirán a<br />

detalle posteriormente.<br />

Perfiles Bluetooth<br />

Un dispositivo Bluetooth puede soportar uno o mas<br />

perfiles. Los cuatro perfiles “básicos” son:<br />

� Perfil de acceso Genérico (GAP): base de todos los demas<br />

perfiles, define procedimientos genericos<br />

� Perfil de Aplicación de Descubrimiento de Servicios (SDAP):<br />

que describe las operaciones fundamentales <strong>para</strong> el<br />

descubrimiento de servicios de otros dispositivos.<br />

� Perfil de Puerto Serial (SPP): que define los requerimientos<br />

<strong>para</strong> emular conexiones de cable seriales.<br />

� Perfil de intercambio de objetos genéricos (GOEP): que es<br />

un perfil abstracto sobre el cual pueden construirse otros<br />

perfiles concretos.<br />

Perfiles Bluetooth<br />

Los perfiles Bluetooth son jerárquicos. Por ejemplo el<br />

File Transfer Profile es construido sobre GOEP, el cual<br />

depende de SPP, el cual es construido sobre GAP.<br />

Los perfiles básicos –GAP,SDAP,SPP, y GOEP son<br />

conocidos como perfiles de transporte, sobre los<br />

cuales otros perfiles, conocidos como perfiles de<br />

aplicación, pueden ser construidos.<br />

42


Diapositiva<br />

15<br />

Diapositiva<br />

17<br />

Diapositiva<br />

19<br />

Diapositiva<br />

21<br />

<strong>Unidad</strong> 3. Programación Bluetooh<br />

con J2ME<br />

Contenido:<br />

1. La API Bluetooth<br />

2. La API JABWT<br />

3. Protocolos de envío y recepción de datos<br />

4. Plataformas de desarrollo bluetooth con soporte<br />

Java<br />

5. Desarrollo de aplicaciones móviles <strong>para</strong> una<br />

WPAN<br />

La API JABWT<br />

Aparte de el trabajo que envuelve escribir codigo, las<br />

pruebas de interoperabilidad entre dispositivos cuesta<br />

mucho tiempo y dinero <strong>para</strong> las compañias<br />

envueltas. De ahí que un API estándar podría ayudar<br />

a aliviar estos problemas.<br />

De esta forma fue concebida JABWT (Java API for<br />

Bluetooth Wireless Technology) es una especificación<br />

definida a traves de una comunidad de Java<br />

(denominada JCP, Java Community Process) bajo el<br />

nombre de JSR-82 (Java Specification Request 82).<br />

NOTA: Java Community Process coordina la evolución<br />

del lenguaje de programación Java.<br />

Dispositivos considerados por<br />

JABWT<br />

La API JABWT<br />

Algunas de las características de la especificación<br />

JABWT son:<br />

� Requiere solamente las librerias CLDC<br />

� Escalabilidad (<strong>para</strong> correr en la plataforma Java: GCF)<br />

� La definición de la API OBEX es independiente de los<br />

protocolos Bluetooth (a traves del paquete javax.obex)<br />

� Habilidad de las aplicaciones <strong>para</strong> ser clientes y servidores al<br />

mismo tiempo <strong>para</strong> habilitar redes peer-to-peer.<br />

� No provee APIs <strong>para</strong> los protocolos TCS Binary, BNEP,<br />

Audio.<br />

3.2. La API JABWT<br />

Recientemente la comunidad Java reconoció la<br />

importancia de crear una extensión estándar <strong>para</strong> el<br />

lenguaje de programación Java <strong>para</strong> usar con<br />

dispositivos Bluetooth.<br />

La creación de una API estándar <strong>para</strong> Bluetooth fue<br />

necesaria debido a que cada pila de protocolos tenía<br />

su propia API <strong>para</strong> programadores de aplicaciónes.<br />

Estas APIs propietarias obligan a que una aplicación<br />

Bluetooth tenga que ser trasladadas a diferentes pilas<br />

Bluetooth <strong>para</strong> correr sobre diferentes dispositivos.<br />

La API JABWT<br />

La especificación Bluetooth define el comportamiento<br />

“sobre el aire” (over-the-air) <strong>para</strong> asegurar<br />

compatibilidad de dispositivos de diferentes<br />

vendedores.<br />

Sin embargo, la especificación Bluetooth no<br />

estandariza una API de software <strong>para</strong> pilas Bluetooth<br />

<strong>para</strong> que usen aplicaciones Bluetooth.<br />

JABWT ayuda a solucionar este problema al definir el<br />

primer API estándar <strong>para</strong> desarrolladores de<br />

aplicaciones Bluetooth.<br />

La API JABWT<br />

Debido al constante crecimiento del número de<br />

perfiles Bluetooth el JCP decidió proveer soporte<br />

solamente <strong>para</strong> los protocolos y perfiles básicos en<br />

JABWT.<br />

Los protocolos considerados son: OBEX, RFCOMM, y<br />

L2CAP.<br />

Los perfiles considerados (construidos sobre los<br />

protocolos anteriores) son: GAP, SDAP, SPP, y GOEP.<br />

<strong>Unidad</strong> 3. Programación Bluetooh<br />

con J2ME<br />

Contenido:<br />

1. La API Bluetooth<br />

2. La API JABWT<br />

3. Protocolos de envío y recepción de datos<br />

4. Plataformas de desarrollo bluetooth con soporte<br />

Java<br />

5. Desarrollo de aplicaciones móviles <strong>para</strong> una<br />

WPAN<br />

43


Diapositiva<br />

23<br />

Diapositiva<br />

25<br />

Diapositiva<br />

27<br />

Diapositiva<br />

29<br />

3.3. Protocolos de envio y recepción<br />

de datos: RFCOMM<br />

SPP (Serial Port Profile) es el perfil Bluetooth que<br />

realiza una conexión RFCOMM entre dos dispositivos.<br />

SPP es definido como un perfil de bloque de<br />

construcción, es decir que otros perfiles se pueden<br />

construir con SPP como base.<br />

Protocolo RFCOMM<br />

Aun cuando se piensa en redes Bluetooth como una<br />

tecnología inalámbrica, solo un enlace “físico” simple<br />

existen entre dos dispositivos Bluetooth.<br />

Aunque puede haber solo un enlace simple, pueden<br />

existir múltiples conexiones entre los dos dispositivos<br />

sobre este enlace.<br />

Esta situación es similar al mundo de redes<br />

“alambrico”: aunque hay solamente un cable<br />

ethernet entre dos dispositivos, puede existir<br />

múltiples conexiones entre los dos dispositivos.<br />

Niveles de seguridad<br />

Existen cuatro tipos de seguridad Bluetooth:<br />

� Pairing (Emparejamiento)<br />

� Authentication (Autenticación)<br />

� Encryption (Encripción)<br />

� Authorization (Autorización)<br />

Pairing<br />

Protocolo RFCOMM<br />

En términos prácticos, el perfil SPP define como dos<br />

dispositivos Bluetooth establece una comunicación<br />

confiable de dos vias con el protocolo RFCOMM.<br />

El protocolo RFCOMM es una emulación de una<br />

conexión de puerto serial RS-232 entre dos<br />

dispositivos sobre un enlace inalámbrico.<br />

En JABWT la comunicación con un dispositivo remoto<br />

usando RFCOMM es similar a la comunicación sobre<br />

una conexión de socket. En otras palabras, los datos<br />

son enviados entre dispositivos via streams.<br />

Protocolo RFCOMM<br />

Multiples conexiones Bluetooth pueden existir sobre<br />

un enlace Bluetooth simple<br />

Pairing<br />

Pairing es el primer paso en el proceso de seguridad sobre un<br />

enlace Bluetooth.<br />

La primera vez que hay contacto entre dos dispositivos, estos<br />

deben establecer un secreto compartido <strong>para</strong> autenticación y<br />

encripción.<br />

El pairing requiere que el usuario de cada dispositivo introduzca<br />

un código común o PIN en cada dispositivo. El PIN es usado<br />

<strong>para</strong> una autenticacion inicial de ambos dispositivos.<br />

Despues del pairing inicial, un secreto compartido es establecido<br />

y es almacenado dentro del dispositivo Bluetooth <strong>para</strong> permitir<br />

autenticación de ambos dispositivos en el futuro sin necesidad<br />

de pairing.<br />

Authentication<br />

La autenticación verifica la identidad de un dispositivo a otro<br />

usando un esquema de oportunidad y respuesta (Challenge and<br />

response schema).<br />

La autenticacion Bluetooth no autentica usuarios sino que<br />

autentica dispositivos.<br />

44


Diapositiva<br />

31<br />

Diapositiva<br />

33<br />

Diapositiva<br />

35<br />

Diapositiva<br />

37<br />

Encryption<br />

Una vez que el proceso de autenticacion ha sido completado, la<br />

encripción puede ser habilitada.<br />

Niveles de seguridad<br />

Cada nivel de seguridad se construye sobre el nivel previo:<br />

� La autenticación requiere pairing.<br />

� La encripción y autorización requieren autenticación<br />

JABWT forza estos requerimientos. Si la encripción es solicitada<br />

sobre un enlace, y el enlace no ha sido autenticado, la<br />

implementación JABWT autentica el dispositivo remoto antes de<br />

encriptar el enlace.<br />

Protocolos de envio y recepción de datos:<br />

Proceso Device Discovery (DD)<br />

Debido a que el radio Bluetooth es parte de un<br />

dispositivo móvil, un dispositivo Bluetooth debe ser<br />

capaz de localizar dinámicamente a otros dispositivos<br />

Bluetooth cercanos.<br />

En el proceso de descubrimiento de dispositivos<br />

(Device Discovery), el dispositivo Bluetooth local<br />

encuentra los otros dispositivos Bluetooth en el area.<br />

En términología Bluetooth, el descubrimiento de<br />

dispositivos es conocido como inquiry.<br />

Proceso Device Discovery<br />

La especificación Bluetooth tiene definido dos tipos<br />

de enquiries:<br />

� General: usada <strong>para</strong> encontrar todos los dispositivos Bluetooth en<br />

un área, y<br />

� Limitada: usada <strong>para</strong> encontrar todos los dispositivos en un área<br />

que son descubribles por solo un tiempo limitado.<br />

Una analogía de enquiry general es solicitar a toda la<br />

gente de un cuarto decir su nombre.<br />

Una analogía de enquiry limitada es solicitar a toda la<br />

gente de un cuarto decir su nombre solo si ellos son<br />

contadores.<br />

Authorization<br />

Otra opción dentro de la seguridad Bluetooth es la<br />

autorización. Autorización es el proceso de determinar si<br />

una solicitud de conexión desde un dispositivo Bluetooth<br />

específico debe ser concedida.<br />

La especificación Bluetooth tienen también definido el<br />

concepto de dispositivo confiable (trusted device).<br />

Un dispositivo confiable es un dispositivo que<br />

automáticamente se le es concedida autorización cuando<br />

esta es solicitada, es decir, un dispositivo confiable es<br />

autorizado <strong>para</strong> conectarse a cualquier servicio sobre el<br />

dispositivo local (El BCC es el encargado de mantener la<br />

lista de dispositivos confiables).<br />

Programación con el API<br />

Todas comunicación RFCOMM empieza con Connector.open() y<br />

una String de conexión válida. Todas las String de conexión<br />

pasadas al métodos son de la forma:<br />

� {schema}:{target}{<strong>para</strong>ms}<br />

El schema usado por cliente y servidor es: btspp. Los <strong>para</strong>ms<br />

son:<br />

Proceso Device Discovery<br />

Cuando un dispositivo Bluetooth realiza una solicitud<br />

inquiry, los otros dispositivos en el área responden a<br />

la solicitud dependiendo de su modo descubrible<br />

(discoverable).<br />

Estos dispositivos responden con:<br />

� su dirección Bluetooth (Bluetooth address) el cual es su<br />

identificador único de 6 bytes) y<br />

� la clase de registro de dispositivo (class of device record) la<br />

cual describe el tipo de dispositivo Bluetooth y provee una<br />

indicación general de los tipos de servicios disponibles en el<br />

dispositivo.<br />

Proceso Device Discovery<br />

Un telefono celular realiza un enquiry general<br />

45


Diapositiva<br />

39<br />

Diapositiva<br />

41<br />

Diapositiva<br />

43<br />

Diapositiva<br />

45<br />

Proceso Device Discovery<br />

Que dispositivos responden a un inquiry depende del<br />

modo descubrible del dispositivo.<br />

Un dispositivo Bluetooth puede ser:<br />

� General: si responde solo a inquiries generales.<br />

� Limitado: si responde a inquiries generales y limitadas.<br />

� No descubrible: no puede responder al inquiry.<br />

Capacidades del API en DD<br />

El descubrimiento de dispositivos inicia con la<br />

aplicación JABWT especificando el tipo de inquiry a<br />

realizar (general o limitada)<br />

Los dispositivos son encontrados via el evento<br />

deviceDiscovered().<br />

Entonces son devueltos el dispositivo encontrado y la<br />

clase del registro de dispositivo del dispositivo<br />

remoto.<br />

Programación con el API<br />

La clase LocalDevice provee acceso al dispositivo<br />

Bluetooth local.<br />

Solo hay un objeto LocalDevice <strong>para</strong> la<br />

implementación entera JABWT.<br />

El objeto LocalDevice provee métodos de<br />

recuperación de información acerca del dispositivo<br />

local y una puerta de entrada <strong>para</strong> iniciar los<br />

diferentes procesos de descubrimiento.<br />

Acceso al Dispositivo Local<br />

La clase DiscoveryAgent contiene constantes <strong>para</strong><br />

representar los modos:<br />

� Descubrible general (GIAC, General Inquiry Access<br />

Code)<br />

� Descubrible limitada (LIAC, Limited Inquiry Access<br />

Code)<br />

� No descubrible (NOT_DISCOVERABLE)<br />

Proceso Device Discovery<br />

Todos los dispositivos descubribles generales y<br />

limitados responden a un inquiry general<br />

Capacidades del API en DD<br />

La clase del registro de dispositivo consiste de:<br />

1. La clase de servicio principal (major service class): Audio,<br />

telefonía, Información,….<br />

2. La clase de dispositivo principal (major device class):<br />

Computadora, Telefono, Punto de acceso de red,<br />

periférico, de Imagen…..<br />

3. La clase de dispositivo secundario (minor device class):<br />

Camara, escaner, impresora,…. (los cuales pertenecen a la<br />

clase de dispositivo principal “de Imagen”)<br />

Acceso al Dispositivo Local<br />

LocalDevice.getLocalDevice(): recupera el<br />

objeto LocalDevice.<br />

getBluetoothAddress(): devuelve la dirección<br />

del dispositivo.<br />

getFriendlyName(): devuelve el nombre del<br />

dispositivo o devuelve null si el nombre no pudo ser<br />

recuperado.<br />

getDiscoverable(): devuelve el modo<br />

descubrible actual del dispositivo local.<br />

Acceso al Dispositivo Local<br />

getDeviceClass(): devuelve la clase de registro<br />

del dispositivo . Devuelve null si no es recuperada.<br />

setDiscoverable(): solicita un modo<br />

descubrible diferente. Este toma el modo descubrible<br />

como argumento. El modo puede ser:<br />

� DiscoveryAgent.GIAC<br />

� DiscoveryAgent.LIAC<br />

� DiscoveryAgent.NOT_DISCOVERABLE<br />

El método devuelve true si se realiza el cambio, de<br />

otro modo devuelve false.<br />

46


Diapositiva<br />

47<br />

Diapositiva<br />

49<br />

Diapositiva<br />

51<br />

Diapositiva<br />

53<br />

Acceso al Dispositivo Local<br />

getProperty(): recupera información adicional de<br />

las capacidades del radio y pila Bluetooth. Este<br />

devuelve el valor de la propiedad como una string.<br />

Device Discovery (DD) Simple<br />

JABWT provee capacidades de descubrimiento de<br />

dispositivos y servicios via la clase DiscoveryAgent<br />

y la interfaz DiscoveryListener.<br />

Cada dispositivo tiene un objeto DiscoveryAgent.<br />

Este objeto provee métodos <strong>para</strong> iniciar búsquedas<br />

de dispositivos y servicios.<br />

La interfaz DiscoveryListener es usada por<br />

DiscoveryAgent <strong>para</strong> pasar dispositivos y servicios<br />

de regreso a la aplicación tan pronto como son<br />

encontrados.<br />

Device Discovery (DD) Simple<br />

La interfaz DiscoveryListener es la otra parte<br />

compleja del descubrimiento de dispositivos y<br />

servicios en JABWT.<br />

Esta es implementada por una aplicación <strong>para</strong> recibir<br />

registros de dispositivos y servicios tan pronto como<br />

son descubiertos.<br />

La interfaz también provee una aplicación con una<br />

notificación cuando el inquiry o búsqueda de servicio<br />

ha sido completada.<br />

Device Discovery (DD) via Inquiry<br />

Antes que una aplicación pueda solicitar un inquiry,<br />

esta debe implementar la interfaz<br />

DiscoveryListener.<br />

Esta interfaz requiere que dos métodos sean<br />

implementados:<br />

� deviceDiscovered(): Método usado <strong>para</strong> pasar los dispositivos remotos<br />

encontrados en el inquiry de regreso al MIDlet.<br />

� inquiryCompleted(): Método que verifica que el inquiry completó<br />

exitosamente.<br />

Propiedades disponibles a traves de<br />

LocalDevice.getProperty()<br />

Device Discovery (DD) Simple<br />

El objeto DiscoveryAgent es recuperado del<br />

dispositivo local via el método<br />

LocalDevice.getDiscoveryAgent()<br />

Métodos y argumentos usados por<br />

DiscoveryAgent<br />

retrieveDevices(): Método de la clase<br />

DiscoveryAgent. Devuelve la lista de dispositivos<br />

recuperados dependiendo de su argumento:<br />

� Si el argumento es DiscoveryAgent.PREKNOWN devuelve<br />

la lista de dispositivos pre-conocidos.<br />

� Si el argumento es DiscoveryAgent.CACHED devuelve la<br />

lista de dispositivos descubiertos (via un inquiry previo).<br />

Inicio de Inquiry<br />

Para iniciar un inquiry se debe utilizar el método<br />

startInquiry().<br />

Este método toma, como argumento, el tipo de<br />

inquiry y una implementación de la interfaz<br />

DiscoveryListener. Los tipos definidos pueden<br />

ser:<br />

� DiscoveryAgent.GIAC: <strong>para</strong> un inquiry general.<br />

� DiscoveryAgent.LIAC: <strong>para</strong> un inquiry limitado.<br />

El método startInquiry() devuelve true si el<br />

inquiry es iniciado. Devuelve false si un código de<br />

acceso válido es dado pero el código no es<br />

soportado.<br />

47


Diapositiva<br />

55<br />

Diapositiva<br />

57<br />

Diapositiva<br />

59<br />

Diapositiva<br />

61<br />

Inicio de Inquiry<br />

Despues de iniciar el inquiry usando<br />

startInquiry() JABWT devuelve dispositivos a la<br />

aplicación via eventos deviceDiscovered().<br />

Un evento de este tipo ocurre cada vez que un<br />

dispositivo Bluetooth es encontrado por el radio<br />

Bluetooth.<br />

El evento deviceDiscovered() provee el objeto<br />

RemoteDevice (da la direccion Bluetooth del<br />

dispositivo remoto) y un objeto DeviceClass<br />

asociado al primero (da la clase de dispositivo) cada<br />

vez que el evento ocurre.<br />

Inquiry completado<br />

Para notificar a la aplicación que el inquiry ha sido<br />

completado, JABWT adiciono el evento<br />

inquiryCompleted().<br />

Este evento provee la razón por la cual un inquiry<br />

finalizó como un argumento del método:<br />

� DiscoveryListener.INQUIRY_COMPLETED: Si el inquiry<br />

finalizó normalmente.<br />

� DiscoveryListener.INQUIRY_TERMINATED: Si el<br />

inquiry fue cancelado por la aplicación usando el método<br />

cancelInquiry().<br />

� DiscoveryListener.INQUIRY_ERROR: Si ocurrió un<br />

error durante el procesamiento del inquiry.<br />

Notas adicionales sobre el Inquiry<br />

El inquiry es iniciado con el método startInquiry()<br />

incluido en el método startApp(), asi que esto ocurre<br />

cada vez que el MIDlet se active.<br />

Si el inquiry es realizado en el constructor del MIDlet, este<br />

solo es realizado cuando el MIDlet es creado.<br />

Los métodos deviceDiscovered() e<br />

inquiryCompleted() deben ser implementados<br />

debido a que se implementa la interfaz<br />

DiscoveryListener.<br />

Dado que el usuario puede salir del MIDlet antes que el<br />

inquiry finalice se debe cancelar el inquiry en el método<br />

commandAction (en el comando EXIT).<br />

Clases del Service Discovery<br />

Clase UUID<br />

� Esta clase encapsula enteros sin signo que pueden ser de<br />

16, 32 ó 128 bits de longitud. Estos enteros se usan como<br />

un identificador universal cuyo valor representa un atributo<br />

del servicio.<br />

DataElement<br />

� Esta clase contiene varios tipos de datos que un atributo de<br />

servicio Bluetooth puede usar. Algunos de estos son:<br />

� String<br />

� boolean<br />

� UUID<br />

� Enteros con signo y sin signo, de uno, dos, cuatro o seis bytes de<br />

longitud<br />

� secuencias de cualquiera de los tipos anteriores.<br />

Cancelación de Inquiry<br />

Una aplicación podría querer cancelar un inquiry una vez<br />

que encuentre un dispositivo Bluetooth específico o si la<br />

aplicación es pausada o destruida.<br />

El método cancelInquiry() cancela un inquiry.<br />

Para prevenir que una aplicación cancele el inquiry de otra<br />

aplicación, el método cancelInquiry() toma un<br />

<strong>para</strong>metro, el objeto DiscoveryListener usado<br />

cuando el inquiry fue iniciado.<br />

El método devuelve true si el inquiry fue cancelado.<br />

Devuelve false si el inquiry no esta asociado al<br />

DiscoveryListener dado, así que no se cancela el<br />

inquiry.<br />

Descubrimiento de dispositivos via Inquiry<br />

Proceso Service Discovery<br />

La clase DiscoveryAgent provee de métodos <strong>para</strong><br />

buscar servicios en un dispositivo servidor Bluetooth<br />

e iniciar transacciones entre el dispositivo y el<br />

servicio.<br />

Este API no da soporte <strong>para</strong> buscar servicios que<br />

estén ubicados en el propio dispositivo<br />

Clases del Service Discovery<br />

Interfaz ServiceRecord<br />

� Esta interfaz define el Service Record de Bluetooth, que<br />

contiene los pares (atributo ID, valor).<br />

� El atributo ID es un entero sin signo de 16 bits, y valor es de<br />

tipo DataElement.<br />

� Además, esta interfaz tiene un método populateRecord()<br />

<strong>para</strong> recuperar los atributos de servicio deseados (pasando<br />

como parámetro al método el ID del atributo deseado).<br />

48


Diapositiva<br />

63<br />

Diapositiva<br />

65<br />

Diapositiva<br />

67<br />

Diapositiva<br />

69<br />

Clases del Service Discovery<br />

Interfaz DiscoveryListener<br />

� Esta interfaz permite a una aplicación especificar un listener<br />

que responda a un evento del tipo Service Discovery o<br />

Device Discovery.<br />

� Cuando un nuevo servicio es descubierto, se llama al<br />

método servicesDiscovered(), y cuando la transacción ha<br />

sido completada o cancelada se llama a<br />

serviceSearchCompleted().<br />

Clases del Service Discovery<br />

ServiceRecord<br />

� Un ServiceRecord describe un servicio Bluetooth a los<br />

clientes.<br />

� Está compuesto de unos “cuantos” atributos de servicio. El<br />

SDP del servidor mantiene una base de datos de los<br />

ServiceRecords.<br />

� Un servicio run-before-connect (la aplicación se ejecuta sin<br />

esperar a que haya una conexión establecida) añade su<br />

ServiceRecord a la SDDB llamando a acceptAndOpen().<br />

� El ServiceRecord provee suficiente información a un<br />

cliente SDP <strong>para</strong> poder conectarse al servicio Bluetooth del<br />

dispositivo servidor.<br />

Registro de servicio<br />

En muchos casos los registros de servicio son<br />

realizados automáticamente y son suficientes, asi que<br />

la aplicación servidor no necesita realizar otra acción.<br />

El siguiente ejemplo muestra una implementación<br />

JABWT realizando el registro automático de servicio:<br />

Connector.open("btspp://localhost:68EE141812D211D78EE“ +<br />

"D00B0D03D76EC;name=SPPEx");<br />

Registro de servicio<br />

Las responsabilidades de una aplicación servidora<br />

Bluetooth son:<br />

1. Crear un Service Record que describa el servicio ofrecido por la<br />

aplicación.<br />

2. Añadir el Service Record al SDDB del servidor <strong>para</strong> avisar a<br />

los clientes potenciales de este servicio.<br />

3. Registrar las medidas de seguridad Bluetooth asociadas a un<br />

servicio.<br />

4. Aceptar conexiones de clientes que requieran el servicio ofrecido<br />

por la aplicación.<br />

5. Actualizar el Service Record en el SDDB del servidor si las<br />

características del servicio cambian.<br />

6. Quitar o deshabilitar el Service Record en el SDDB del<br />

servidor cuando el servicio no está disponible<br />

Registro de servicio<br />

El SDDBRecord es un registro de servicio en la base<br />

de datos SDP del servidor. No es directamente<br />

accesible por una aplicación JABWT.<br />

Estos registros de servicio permiten a los clientes<br />

encontrar los servicios y hacer una conexión al<br />

servidor.<br />

Clases del Service Discovery<br />

LocalDevice<br />

� Esta clase provee un método getRecord() que la aplicación<br />

servidora puede usar <strong>para</strong> obtener el ServiceRecord.<br />

� Una vez modificado, puede ser puesto en la SDDB llamando<br />

al método notifier.acceptAndOpen() o updateRecord()<br />

de LocalDevice.<br />

Registro de servicio<br />

Esto genera un registro como el siguiente:<br />

Servidor modificando su Registro de<br />

servicio<br />

49


Diapositiva<br />

71<br />

Diapositiva<br />

73<br />

Diapositiva<br />

75<br />

Diapositiva<br />

77<br />

<strong>Unidad</strong> 3. Programación Bluetooh<br />

con J2ME<br />

Contenido:<br />

1. La API Bluetooth<br />

2. La API JABWT<br />

3. Protocolos de envío y recepción de datos<br />

4. Plataformas de desarrollo bluetooth con soporte<br />

Java<br />

5. Desarrollo de aplicaciones móviles <strong>para</strong> una<br />

WPAN<br />

Impronto Simulator y DK<br />

Impronto Simulator y DK (Development Kit), parte del kit<br />

de desarrollo <strong>para</strong> software bluetooth de la compañia<br />

Rococo (http://www.rococosoft.com) usa interfaces de<br />

programación de aplicaciones Java estándar (APIs<br />

JABWT).<br />

Esto debido a que las APIs Java/Bluetooth estandarizadas<br />

simplifican los protocolos de desarrollo Bluetooth<br />

complicados y ayudan a traer tecnología inalámbrica mas<br />

rápida y facil al mercado con un ahorro de tiempo y<br />

dinero.<br />

Rococo es un miembro del grupo experto JSR82<br />

desarrollando estándares <strong>para</strong> Java y Bluetooth y es un<br />

miembro asociado del SIG (Grupo de interes especial)<br />

Bluetooth.<br />

Avetana Bluetooth<br />

Avetana Bluetooth es una implementación de JSR-82<br />

de la empresa Avetana (http://www.avetanagmbh.de)<br />

que provee funcionalidades Bluetooth al<br />

software Java de una manera estandarizada.<br />

Suporta los perfiles: SDP, L2CAP, BTSPP, OBEX.<br />

Está disponible <strong>para</strong> las plataformas Windows (98SE-<br />

XP SP2), MacOS X, Linux y WM 2003SE – WM5.<br />

BlueCove<br />

BlueCove es una implementación JSR-82 de Google<br />

(http://code.google.com/p/bluecove/) con interfaces con<br />

Mac OS X, WIDCOMM, BlueSoleil y la pila Bluetooth de<br />

Microsoft en Windows XP SP2 y actuales.<br />

Originalmente fue desarrollado por Intel y actualmente se<br />

mantiene con investigadores voluntarios.<br />

BlueCove se ejecuta sobre cualquier maquina virtual Java<br />

desde la versión 1.1 sobre Windows Mobile, Windows XP,<br />

Windows Vista, y Mac OS X.<br />

3.4 Plataformas de desarrollo<br />

bluetooth con soporte Java<br />

Actualmente podemos encontrar tecnología de desarrollo<br />

bluetooth con soporte Java no solamente <strong>para</strong> móviles,<br />

sino con soporte <strong>para</strong> computadoras personales que<br />

habilitan la interacción con aplicaciones móviles.<br />

Desde este punto de vista, nos referimos al término<br />

“Plataformas de desarrollo” como implantaciones de pilas<br />

Bluetooth con soporte <strong>para</strong> el lenguaje Java.<br />

Entre las plataformas de desarrollo o implementaciones<br />

Bluetooth/Java actualmente utilizadas se encuentran:<br />

� Impronto Simulator y DK de Rococo Software<br />

� Avetana Bluetooth<br />

� BlueCove<br />

Beneficios de Impronto<br />

Simula un entorno JSR82 completo sin hardware o pilas<br />

Bluetooth.<br />

Permite a los desarrolladores probar y configurar<br />

aplicaciones antes de desarrollar sobre hardware<br />

Bluetooth real.<br />

Reduce el tiempo de desarrollo de aplicaciones<br />

Soporta la plataforma Java 2 Estándar y la plataforma<br />

Java 2 Micro Edition.<br />

100% Java puro<br />

Crea aplicaciones Bluetooth en Java sobre las plataformas<br />

Windows o Windows Mobile.<br />

Libre <strong>para</strong> uso no comercial<br />

Beneficios de Avenata<br />

El software está basado en las pilas de protocolos<br />

bluetooth mas difundidas y no usa hardware o<br />

software bluetooth especial.<br />

El desarrollo de aplicaciones java con bluetooth llega<br />

a ser mas rápido, barato e independiente de<br />

plataforma.<br />

Beneficios:<br />

� BlueCove funciona<br />

como una capa<br />

superior de las<br />

pilas Bluetooth y<br />

el Sistema<br />

Operativo <strong>para</strong><br />

soportar<br />

aplicaciones<br />

compatibles con<br />

JSR-82 sin<br />

necesidad de<br />

hardware o<br />

software especial.<br />

� Tiene licencia<br />

bajo GNU General<br />

Public Licence.<br />

50


Diapositiva<br />

79<br />

Diapositiva<br />

81<br />

Diapositiva<br />

83<br />

<strong>Unidad</strong> 3. Programación Bluetooh<br />

con J2ME<br />

Contenido:<br />

1. La API Bluetooth<br />

2. La API JABWT<br />

3. Protocolos de envío y recepción de datos<br />

4. Plataformas de desarrollo bluetooth con soporte<br />

Java<br />

5. Desarrollo de aplicaciones móviles <strong>para</strong> una<br />

WPAN<br />

Desarrollo de aplicaciones móviles<br />

<strong>para</strong> una WPAN<br />

A diferencia de las redes de área local inalámbricas<br />

(WLAN), una conexión hecha a través de una WPAN<br />

involucra muy poca o nula infraestructura o conexiones<br />

directas hacia el mundo exterior.<br />

Este tipo de tecnología también procura hacer un uso<br />

eficiente de recursos, por lo que se han diseñado<br />

protocolos simples y lo más óptimos <strong>para</strong> cada necesidad<br />

de comunicación y aplicación.<br />

Una WPAN puede entenderse como una cápsula personal<br />

de comunicación alrededor de una persona. Dentro de<br />

dicha cápsula, que se mueve en la misma forma en que lo<br />

hace una persona, los dispositivos personales se pueden<br />

conectar entre ellos.<br />

<strong>Aplicaciones</strong> de WPANs<br />

Nos podríamos preguntar ¿Qué aplicaciones es posible<br />

desarrollar con dispositivos <strong>para</strong> WPANS?<br />

El IEEE 802.15 está diseñado <strong>para</strong> ser ocupado en una<br />

amplia gama de aplicaciones, incluyendo :<br />

� Control y monitoreo industrial;<br />

� Seguridad pública, como la detección y determinación de la<br />

localización de personas en lugares de desastres;<br />

� Medición en automóviles, como el monitoreo de la presión en las<br />

llantas;<br />

� Tarjetas o placas inteligentes;<br />

� Agricultura de precisión, como medición del nivel de humedad en el<br />

suelo, pesticida, herbicida, niveles de pH.<br />

Sin embargo las mayores oportunidades de desarrollo del<br />

IEEE 802.15 están en la automatización del hogar<br />

3.5 Desarrollo de aplicaciones<br />

móviles <strong>para</strong> una WPAN<br />

Actualmente la tecnología WPAN (Redes de área<br />

personal inalámbrica) es adecuada <strong>para</strong> el uso con<br />

dispositivos móviles que funcionan con baterías (tales<br />

como telefonos celulares, asistentes personales PDA‟s<br />

o cámaras digitales) dado su bajo consumo de<br />

energía.<br />

La característica principal de este tipo de redes es<br />

que enfocan sus sistemas de comunicaciones a un<br />

área típica de 10 a 100 metros a la redonda que<br />

envuelve a una persona o a algún dispositivo ya sea<br />

que esté en movimiento o no.<br />

Grupos de estudio de WPAN<br />

Para satisfacer las diferentes necesidades de<br />

comunicación dentro de un área personal la IEEE divide<br />

los grupos de estudio en cuatro grupos de trabajo que se<br />

encargan del desarrollo de estándares:<br />

� El 802.15.1, que realiza el estándar basado en las especificaciones<br />

del SIG de bluetooth<br />

� El 802.15.2, que desarrolló un modelo de coexistencia entre las<br />

WLAN y WPAN, así como a<strong>para</strong>tos que las envuelven<br />

� El 802.15.3, que trabaja <strong>para</strong> publicar un estándar nuevo de alta<br />

velocidad y bajo consumo <strong>para</strong> WPANs<br />

� El grupo de trabajo T4 <strong>para</strong> 802.15.4, que investiga y desarrolla<br />

soluciones que requieren baja transmisión de datos , duración de<br />

baterías de meses e incluso años, y baja complejidad.<br />

<strong>Aplicaciones</strong> de WPANs<br />

En una casa, podemos considerar varias<br />

posibilidades de mercado como:<br />

� Juegos interactivos entre dispositivos como celulares o<br />

Agendas electrónicas (PDA‟s);<br />

� Comunicación del celular con teclados, joisticks<br />

inalámbricos;<br />

� A<strong>para</strong>tos electrónicos como radios, televisores, controles<br />

remotos, y un control universal <strong>para</strong> controlar todos los<br />

anteriores;<br />

� Automatización del hogar , como calefacción, ventilación,<br />

aire acondicionado, iluminación, seguridad y control de<br />

objetos como ventanas, cortinas, puertas, y cerraduras;<br />

� Monitoreo de salud, incluyendo sensores, monitores y<br />

diagnósticos;<br />

51


Diapositiva<br />

85<br />

<strong>Aplicaciones</strong> de WPANs<br />

En una casa, podemos considerar varias<br />

posibilidades de mercado como:<br />

� Juegos interactivos entre dispositivos como celulares o<br />

Agendas electrónicas (PDA‟s);<br />

� Comunicación del celular con teclados, joisticks<br />

inalámbricos;<br />

� A<strong>para</strong>tos electrónicos como radios, televisores, controles<br />

remotos, y un control universal <strong>para</strong> controlar todos los<br />

anteriores;<br />

� Automatización del hogar , como calefacción, ventilación,<br />

aire acondicionado, iluminación, seguridad y control de<br />

objetos como ventanas, cortinas, puertas, y cerraduras;<br />

� Monitoreo de salud, incluyendo sensores, monitores y<br />

diagnósticos;<br />

<strong>Aplicaciones</strong> de unidad a desarrollar:<br />

I. Aplicación Cliente Servidor via Bluetooth<br />

denominado "Servicio de Verificacion de<br />

password“<br />

II. Aplicación Cliente Servidor vía Bluetooth<br />

denominado "Servicio de creación de lista"<br />

III. Aplicación Cliente Servidor vía Bluetooth<br />

denominado "Servicios Bluetooth desde<br />

aplicación estándar Java"<br />

52


<strong>Unidad</strong> IV<br />

Diapositiva<br />

1<br />

Diapositiva<br />

3<br />

<strong>Aplicaciones</strong> <strong>Móviles</strong> <strong>para</strong><br />

WPAN’s<br />

M.C. Maximiliano Canché Euán<br />

M.C. Erika Llanes Castro<br />

M.C. Michel García García<br />

M.C. Cinhtia Gonzalez Segura<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

Diapositiva<br />

5 ¿Qué es .NET?<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

Microsoft .NET Framework = .NET<br />

� Entorno de desarrollo multilenguaje diseñado por<br />

Microsoft <strong>para</strong> simplificar la construcción,<br />

distribución y ejecución de aplicaciones <strong>para</strong><br />

Internet<br />

Tres componentes<br />

� CLR: Common Language Runtime (máquina<br />

virtual)<br />

� MSIL: Microsoft Intermediate Language (código<br />

intermedio)<br />

� Biblioteca de clases .NET y ASP.NET (<strong>para</strong> crear<br />

aplicaciones y aplicaciones web)<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Objetivo:<br />

Diseñar, crear y ejecutar aplicaciones<br />

móviles en un entorno de desarrollo<br />

visual y empleando un dispositivo PDA<br />

con Sistema Operativo Windows Mobile.<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

Compilación<br />

El lenguaje intermedio es común <strong>para</strong><br />

todos los lenguajes de .NET y será el que<br />

ejecute la máquina virtual<br />

Programa<br />

escrito en<br />

Visual Basic<br />

Compilador<br />

en Visual C# Compilador<br />

en Visual C++ Compilador<br />

en Visual J# Compilador<br />

Código<br />

intermedio en<br />

MSIL<br />

Máquina<br />

virtual CLR<br />

53


Diapositiva<br />

7 Ejecución final<br />

Diapositiva<br />

9<br />

Diapositiva<br />

11<br />

La máquina virtual posee un recolector<br />

de basura (elimina objetos no<br />

referenciados)<br />

Compiladores JIT (Just In Time, al<br />

instante)<br />

� Traductores del código intermedio a código<br />

nativo <strong>para</strong> cada arquitectura soportada<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

Nuevo proyecto<br />

Aplicación Windows Form<br />

Diapositiva<br />

13 Código fuente<br />

Al hacer doble clic sobre el botón se<br />

crea el método del botón con el código:<br />

MessageBox.Show("Hola " +<br />

txtNombre.Text, "Saludo")<br />

• Ejecutar y probar el programa<br />

Desarrollo de aplicaciones<br />

Entorno de desarrollo (compilación)<br />

� .Net Framework SDK disponible en<br />

www.microsoft.com/downloads<br />

Editor de programas<br />

� Bloc de notas<br />

� Microsoft Visual Studio<br />

Versiones gratuitas<br />

� Visual Basic Express<br />

� SQL Expresss<br />

� Visual Web Developer Express<br />

Visual Studio .NET<br />

Actividad: Aplicación “Hola<br />

mundo”<br />

Crear un formulario, incluir<br />

� Label<br />

� Group Box<br />

� TextBox (txtNombre)<br />

� Button (btnSaludo)<br />

Modificar las propiedades necesarias <strong>para</strong><br />

obtener la apariencia deseada<br />

Declaración de variables<br />

Dim nombre As String<br />

Tipos de datos<br />

� Double<br />

� Integer<br />

� String<br />

� Boolean<br />

� Byte<br />

� Char<br />

� Date<br />

� Long<br />

� etc. Ver lista completa en:<br />

http://msdn.microsoft.com/eses/library/47zceaw7(VS.80).aspx<br />

54


Diapositiva<br />

15 Comentarios<br />

Diapositiva<br />

17<br />

„ Este es un comentario<br />

REM este es otro comentario<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

Diapositiva<br />

19 Ventanas de depuración<br />

Variables locales<br />

Inspección 1<br />

Ventana inmediato<br />

� Permite ejecutar código al momento<br />

Diapositiva<br />

21 Formulario Splash<br />

Propiedades<br />

� Name: frmSplash<br />

� ControlBox: False<br />

� FormBorderStyle: None<br />

� StartPosition: CenterScreen<br />

Incluir<br />

� Label: Sistema ejemplo VB .NET<br />

� Imagen (libre, ajustar al formulario)<br />

� Control Timer (Enabled: true, Interval: 1000)<br />

con código: Me.Dispose()<br />

Actividad<br />

Hacer un programa que devuelva el<br />

resultado de la expresión (b 2 -4ac)/2a<br />

Debe pedir los valores de a, b y c<br />

Mostrar los valores con un mensaje<br />

como el siguiente:<br />

Errores y depuración<br />

Puntos de interrupción <strong>para</strong> depurar<br />

Control de la ejecución<br />

Valores instantáneos de variables<br />

Menú Depurar (inspección rápida, etc.)<br />

Desarrollo de aplicaciones<br />

Hacer una aplicación que permita<br />

autentificar a un usuario en el sistema,<br />

crear los siguientes formularios:<br />

� frmSplash (momentánea al iniciar la<br />

aplicación)<br />

� frmAcceso (<strong>para</strong> usuario y contraseña)<br />

� frmMenu (con las opciones del Sistema )<br />

� Principal – Procesos – Ayuda<br />

� Salir<br />

Formulario Acceso<br />

Propiedades<br />

� Name: frmAcceso<br />

txtNombre<br />

txtPwd<br />

55


Diapositiva<br />

23 Formulario inicial<br />

En las propiedades del proyecto, establecer<br />

el frmAcceso como inicial:<br />

Diapositiva<br />

25 Formulario Menú<br />

Propiedades<br />

� Name: frmMenu<br />

� IsMdiContainter: True<br />

� Text: Sistema Principal del Ejemplo<br />

� WindowState: Maximized<br />

Agregar<br />

� MenuStrip<br />

Diapositiva<br />

27 Ejercicio<br />

Diapositiva<br />

29 Recordatorio<br />

Código de “Salir” : End<br />

Hacer la pantalla de “Acerca de” y<br />

llamarla desde el menú del sistema<br />

� Nombre: frmAcercade<br />

� Elementos: Label, GroupBox, Button, etc.<br />

Pueden usar el AboutBoxForm pero<br />

modificándole todo: texto e imagen.<br />

Desarrollo en .NET<br />

Compilación y depuración de<br />

aplicaciones<br />

Desarrollo de la aplicación ejemplo<br />

� Autentificación<br />

� Pantalla de inicio<br />

� Menú principal<br />

Control de varios formularios<br />

Agregar un módulo inicio.vb<br />

En propiedades del proyecto, poner a<br />

“Inicio” como objeto de inicio<br />

En frmAcceso agregar:<br />

Modificar frmAcceso<br />

En el código del botón Aceptar llamar al<br />

menú del sistema<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

Calculadora<br />

Agregar una calculadora que reciba 2<br />

valores numéricos y dependiendo de la<br />

opción seleccionada, devuelva la suma,<br />

resta, multiplicación o división.<br />

56


Diapositiva<br />

31 Formulario Calculadora<br />

Agregar:<br />

Diapositiva<br />

33 Código<br />

Diapositiva<br />

35 Ejercicio<br />

� 3 cuadros de texto<br />

� 4 radio botones<br />

� un botón<br />

� Una etiqueta “-”<br />

Diapositiva<br />

37 Recordatorio<br />

Agregar la calculadora como una opción<br />

del menú <strong>para</strong> que el módulo pueda ser<br />

ejecutado desde el sistema ejemplo<br />

Aplicación Ejemplo<br />

� ToolStrip<br />

� Catálogo de puestos (Base de datos)<br />

Código<br />

Principal<br />

Uso de Try - Catch<br />

Para manejar excepciones y controlar la<br />

ejecución del programa aún en<br />

situaciones no deseadas<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

Formulario Empleados<br />

Agregar un nuevo WindowsForm<br />

� Nombre: frmEmpleados<br />

� Text: Catálogo de empleados<br />

57


Diapositiva<br />

39 Funcionamiento del formulario<br />

Añadir el comando en el menú y probar<br />

su ejecución<br />

Establecer frmEmpleados como<br />

elemento de inicio en las propiedades<br />

del proyecto<br />

Agregar el código al formulario y a sus<br />

botones, como se muestra a<br />

continuación<br />

Diapositiva<br />

41 Más código del formulario<br />

Diapositiva<br />

43<br />

Agregar registro<br />

Imports System.Globalization '<br />

<strong>para</strong> la fecha y hora<br />

Código del formulario<br />

Ejecución del formulario<br />

Buscar registro<br />

58


Diapositiva<br />

45<br />

Modificar registro<br />

Diapositiva<br />

47 Otra forma de hacerlo<br />

Diapositiva<br />

49<br />

Desde: Orígenes de datos<br />

� Arrastrando toda la tabla se crea el Grid<br />

� Arrastrando campo por campo se crea el<br />

formulario completo<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

Diapositiva<br />

51 Proyecto Smart Device<br />

Eliminar registro<br />

Tarea<br />

Crear los formularios funcionales <strong>para</strong><br />

manejar el catálogo de cada tabla de la<br />

BD<br />

� Ya están las de empleados y usuarios<br />

� Sólo falta la de puestos<br />

Compact Framework<br />

Funciones limitadas respecto al<br />

Framework<br />

Espacio limitado al desarrollar <strong>para</strong><br />

dispositivos móviles<br />

<strong>Aplicaciones</strong><br />

� Ricas: Acceso local a datos<br />

� Delgadas: Acceso remoto a BD<br />

<strong>Unidad</strong> 4. Programación Bluetooh<br />

con Visual Basic .NET<br />

Contenido:<br />

1. Fundamentos de desarrollo en .NET<br />

2. El proceso de desarrollo y compilación de una aplicación<br />

en .NET<br />

3. Tratamiento de errores y herramientas de depuración<br />

4. Desarrollo de aplicaciones con VB .NET<br />

5. Acceso a datos con Microsoft .NET Framework 2.0<br />

6. Introducción a la programación de dispositivos móviles<br />

7. Desarrollo de aplicaciones <strong>para</strong> dispositivos móviles<br />

59


Diapositiva<br />

53 Formulario principal<br />

Nombre: frmServicios<br />

Text: Formulario de servicios<br />

Agregar un Panel<br />

� Nombre: panTop<br />

� Width: 240 (en Size)<br />

� Height: 24<br />

� Back Color: IndianRed<br />

Etiqueta en el panel<br />

� Nombre: lblDate<br />

� Width: 120<br />

� Height: 16<br />

� X: 112 (en Location)<br />

� Y: 8<br />

Diapositiva<br />

55 Ejecución de la aplicación<br />

Diapositiva<br />

57 Agregar los demás controles<br />

Apariencia deseada:<br />

Código del formulario<br />

Doble clic <strong>para</strong> editar el Load<br />

� lblDate.Text = DateTime.Now.ToString()<br />

Cambiar el formulario de inicio a<br />

frmServicios (en las propiedades del<br />

proyecto) y ejecutarlo<br />

Controles del formulario<br />

Agregar un TabControl con las pestañas<br />

TabUser y TabCar:<br />

Para crear las pestañas Clic en la<br />

propiedad TabPages (Colección)<br />

� Cambiar Name y Text de cada Tab<br />

Navegación entre formularios<br />

Agregar un nuevo formulario<br />

frmDescripProblem<br />

60


Diapositiva<br />

59 Código <strong>para</strong> vincularlos<br />

En el btnOK del frmServicios<br />

Código del btnSave del<br />

frmDescripProblem<br />

Diapositiva<br />

61 Otros tipos de aplicaciones<br />

<strong>Aplicaciones</strong> de oficina (calculadora,<br />

diccionario, etc.)<br />

Manejo local de Bases de datos<br />

Manejo remoto de Bases de datos<br />

(sincronización con el dispositivo móvil)<br />

Manejo de datos a través de un Servicio<br />

Web<br />

Ejecución del formulario<br />

¡Listo!<br />

¿Preguntas o comentarios?<br />

Fecha <strong>para</strong> entrega de proyecto final.<br />

61


Prácticas<br />

<strong>Unidad</strong> I<br />

Práctica 1.1.<br />

Objetivo: El estudiante lea y analice diversos casos de estudio en donde la solución<br />

más eficaz son las redes inalámbricas.<br />

Introducción:<br />

Las redes inalámbricas son aquellas que se comunican por un medio de transmisión no<br />

guiado (sin cables) mediante ondas electromagnéticas. Tienen ventajas como la rápida<br />

instalación de la red sin la necesidad de usar cableado, permiten la movilidad y tienen<br />

menos costos de mantenimiento que una red convencional. Las redes inalámbricas y<br />

alámbricas tienen sus nichos de mercado bien definidos y cada una tiene sus ventajas y<br />

desventajas.<br />

El material que necesitas <strong>para</strong> esta práctica es:<br />

1. Hojas impresas con los casos de estudios<br />

Realiza las siguientes actividades:<br />

1. Leer el caso de estudio en binas o de manera individual<br />

2. Compartir con los compañeros de lo que se trata el caso y decir porque las redes<br />

inalámbricas fueron la mejor solución.<br />

62


Caso de Estudio 1<br />

Caso de Estudio 2<br />

63


Caso de Estudio 3<br />

64


Práctica 1.2<br />

El objetivo de esta práctica es que el estudiante investigue una de las tecnologías<br />

utilizadas en redes de área personal y transmita esta experiencia a los compañeros.<br />

Introducción:<br />

Existe en la actualidad una gran diversidad de soluciones inalámbricas como son:<br />

HomeRF, RFID, WiFi, Bluetooth, Infrarrojos y Zig Bee entre otros, conocer sus<br />

características, bondades y limitantes de cada una de estas tecnologías nos permitirá<br />

ofrecer soluciones más rentables en el mercado inalámbrico de corto alcance.<br />

El material que necesitas <strong>para</strong> esta práctica es:<br />

1. Computadora conectada a Internet<br />

Realiza las siguientes actividades:<br />

1. Investigar en sitios importantes y confiables información sobre una de las<br />

tecnologías <strong>para</strong> redes inalámbricas de área personal.<br />

2. Pre<strong>para</strong>r una presentación de no más de 10 minutos con la información obtenida<br />

65


Práctica 1.3<br />

El objetivo de esta práctica es que el alumno analice las bondades y limitaciones de las<br />

tecnologías: Infrarrojo y Bluetooth.<br />

Introducción:<br />

Dado que las dos tecnologías proporcionan conexión sin cable de bajo alcance muchos nos<br />

preguntamos si ambas tecnologías podrían sobrevivir o si una es mejor que la otra. En esta<br />

práctica pretendemos discernir las ventajas y desventajas de cada una de estas tecnologías y<br />

examinar los beneficios de cada una <strong>para</strong> así demostrarnos que ambas son fundamentales<br />

en el mercado y que ninguna puede satisfacer totalmente las necesidades de los usuarios.<br />

El material que necesitas <strong>para</strong> esta práctica es:<br />

1. Hojas impresas con el articulo “IrDA versus Bluetooth”<br />

Realiza las siguientes actividades:<br />

1. Leer el artículo “IrDA versus Bluetooth” y compartir lo que más les llamó la<br />

atención de la lectura con respecto a la com<strong>para</strong>ción entre ambas tecnologías.<br />

66


Esta com<strong>para</strong>ción permite discernir las ventajas e<br />

inconvenientes de cada una de las tecnologías que<br />

dominaran el futuro sin cables.<br />

A primera vista podrá parecer que las tecnologías<br />

de IrDA y Bluetooth se complementan la una a la<br />

otra en el mercado. Los análisis de la industria se<br />

han preguntado abiertamente si ambas tecnologías<br />

pueden sobrevivir, dado que las dos proporcionan<br />

la conexión sin cable de bajo alcance. Pero si se<br />

examinan los beneficios de cada tecnología, se<br />

puede observar que tanto Bluetooth como IrDA<br />

son fundamentales <strong>para</strong> el mercado.<br />

Cada tecnología tiene sus ventajas y desventajas, y<br />

ninguna puede completar todas las necesidades de<br />

los usuarios. De hecho Bluetooth y IrDA juntas,<br />

crean un avance importante en la historia de la<br />

conexión sin cable de bajo alcance.<br />

¿Qúe es IrDA?<br />

La IrDA, Asociación de datos por infrarrojos,<br />

especifica tres standards de comunicación por<br />

infrarrojos:<br />

-La IrDA-Data<br />

-IrDA control<br />

-Un nuevo emergente standard llamado ALr<br />

-En este documento se analiza el IrDA Data y su<br />

relación con el Bluetooth. Para este propósito, con<br />

IrDa nos referimos al standard de IrDA-Data.<br />

-En general, IrDa se usa <strong>para</strong> proporcionar<br />

tecnología de conexión sin radio <strong>para</strong> a<strong>para</strong>tos que<br />

normalmente usarían cables <strong>para</strong> su conexión,<br />

IrDA es un punto a punto, estrecho ángulo (30º<br />

conos), un standard de conexión de datos diseñado<br />

<strong>para</strong> operar en una distancia de 0 a 1 metro y a una<br />

velocidad de 9600 bps a 16 Mbps<br />

Como características generales del IrDA podemos<br />

señalar:<br />

-Comprobada conexión mundial universal sin<br />

cable.<br />

-Base instalada de más de 50 millones de<br />

unidades.<br />

-Amplio abanico de plataformas de soporte<br />

hardware y software.<br />

-Diseño de recambios <strong>para</strong> cables point-to-point.<br />

-Adaptación compatible con futuros standards.<br />

-Cono de ángulo estrecho de 30º en una aplicación<br />

point-and-shoot (sin interferencias con otros<br />

equipos eléctricos y bajo un nivel de seguridad<br />

<strong>para</strong> los a<strong>para</strong>tos estáticos).<br />

IrDA versus Bluetooth<br />

-Alto grado de datos; 4Mbts en la actualidad y 16<br />

Mbts en desarrollo.<br />

El uso del IrDa consiste en transmitir datos por los<br />

siguientes a<strong>para</strong>tos:<br />

- Notebook, desktop y handheld <strong>para</strong> PCs<br />

- Impresoras<br />

- Teléfonos<br />

- Módems<br />

- Cámaras<br />

- A<strong>para</strong>tos de acceso a LAN<br />

- Equipo médico industrial<br />

- Relojes<br />

Con una instalación mundial de más de 50<br />

millones de unidades y creciendo un 40%<br />

anualmente, IrDA está ampliamente disponible en<br />

ordenadores personales periféricos, sistemas fijos<br />

y a<strong>para</strong>tos de todo tipo.<br />

En suma, el amplio uso y la aceptación de los<br />

standards IrDA y sus robustas soluciones, han<br />

acelerado la adopción de las especificaciones de<br />

IrDa por parte de otras organizaciones de<br />

standards.<br />

La adopción universal y la implementación a nivel<br />

mundial de las especificaciones IrDA, garantiza<br />

un puerto universal de hardware y una rápida y<br />

emergente interoperatividad de software.<br />

¿Qué es Bluetooth?<br />

Bluetooth es una propuesta de especificación de<br />

radiofrecuencia por transmisión de corto alcance,<br />

transmisión de datos de punto a multipunto.<br />

Bluetooth puede transmitir a través de objetos<br />

sólidos no metálicos. Su cable de unión nominal<br />

es de 10 cm a 10 m en teoría, pero se puede<br />

extender a 100 m mediante el incremento de<br />

transmisión de energía.<br />

Basado en un bajo coste, en la unión de radio de<br />

corto alcance y facilitada por las conexiones adhoc<br />

<strong>para</strong> los entornos de conexión móvil y fija.<br />

Las características generales del Bluetooth<br />

incluyen:<br />

-Opera en una banda 2.4 GHz de la Industria<br />

Científica Médica (ISM).<br />

-Usa la frecuencia de salto FH, con espectro<br />

extendido el cual divide la banda de frecuencia en<br />

un número de canales de salto. Durante la<br />

67


conexión, los transmisores de radio saltan de un<br />

canal a otro de forma aleatoria.<br />

-Soporta más de ocho a<strong>para</strong>tos en una piconet (<br />

dos o más unidades de Bluetooth comparten un<br />

canal).<br />

-Construido con seguridad interna.<br />

-Sin línea de señal de transmisión entre carteras y<br />

maletines.<br />

-Omnidireccional.<br />

-Contiene servicios sincrónicos y asincrónicos; de<br />

fácil integración de TCP-IP.<br />

-Reguladas por gobiernos internacionales<br />

Bluetooth permitirá a los usuarios conectarse a un<br />

amplio rango de ordenadores y a<strong>para</strong>tos de<br />

telecomunicación sin necesidad de comprar,<br />

llevar, o conectar cables.<br />

Proporciona oportunidades <strong>para</strong> rapidez,<br />

conexiones ad-hoc, y en el futuro, la posibilidad<br />

de automáticas e inconscientes conexiones entre<br />

a<strong>para</strong>tos.<br />

La eficiencia de la energía de la radiotecnología,<br />

puede usarse en muchos de los mismos servicios<br />

que usa IR:<br />

- Teléfonos<br />

- Módems<br />

- A<strong>para</strong>tos de acceso LAN<br />

- Servidores<br />

- Notebook, desktop, y handheld <strong>para</strong> PC<br />

Bluetooth permite a los a<strong>para</strong>tos portátiles la<br />

conexión y la comunicación sin cable vía corto<br />

alcance, y las redes ad-hoc.<br />

Es una interface universal de radio en la<br />

frecuencia de banda 2.45 GHz y que ha<br />

conseguido el soporte de Ericsson, Nokia, IBM,<br />

Toshiba, Intel, y otros muchos productores.<br />

Para funcionar con unas bases a nivel mundial,<br />

Bluetooth necesita una frecuencia de radio de libre<br />

licencia y abierta a cualquier radio. la banda ISM<br />

2.45 GHz, satisface estos requerimientos aunque<br />

debe adaptarse a las interferencias de los pequeños<br />

monitores, a las de los mandos de garajes,<br />

teléfonos sin cables, microondas, que también<br />

usan la misma frecuencia.<br />

<strong>Aplicaciones</strong> IrDa y Bluetooth sobrepuestas<br />

Muchas de las aplicaciones definidas por IrDA<br />

son también definidas por Bluetooth. Ahora bien,<br />

hay situaciones y condiciones donde el IrDA se<br />

adapta mejor a hora de la transmisión de datos y<br />

viceversa.<br />

IrDA y Bluetooth consideran el intercambio de<br />

datos como una función imprescindible.<br />

El intercambio de datos puede ser tan simple<br />

como empujar una tarjeta de negocios desde un<br />

móvil a un PDA, o tan sofisticado como la<br />

sincronización de la información personal entre un<br />

PDA y un PC.<br />

Bluetooth y IrDA especifican estas aplicaciones,<br />

así como el intercambio de datos. Ambos usan la<br />

misma capa de protocolo (OBEX) <strong>para</strong><br />

implementar estas aplicaciones.<br />

Es la intención de IrDA y Bluetooth, utilizar las<br />

mismas aplicaciones de intercambio de datos<br />

cuando sea apropiado. Usando el mismo nivel de<br />

protocolo superior, es posible una única aplicación<br />

<strong>para</strong> poner en funcionamiento a Bluetooth y IrDA.<br />

Podría parecer que si IrDA y Bluetooth pueden<br />

contener las mismas aplicaciones por qué dos<br />

tecnologías.<br />

La respuesta radica en el hecho de que cada<br />

tecnología tiene sus más y sus menos.<br />

Afortunadamente los muchos escenarios en los<br />

que IrDA se queda corto, son aquellos en los que<br />

Bluetooth se excede y al revés.<br />

Un escenario de intercambio común de datos es<br />

uno en el que se producirá el intercambio en un<br />

espacio contenido en otros equipos.<br />

Un ejemplo es el intercambio electrónico de la<br />

tarjeta de negocios. Dos personas se encuentran<br />

<strong>para</strong> intercambiarse tarjetas de negocio face to<br />

face en una amplia sala de conferencias. Muchos<br />

otros llevan a<strong>para</strong>tos sin cable que también se<br />

encuentran en la habitación, posiblemente<br />

intentando hacer lo mismo.<br />

Esta es la situación en la que el IrDA es más<br />

amplio. El bajo alcance del estrecho ángulo de<br />

IrDA, permite al usuario desear, en un estilo de<br />

point-and-shoot en recipiente intencionado. La<br />

cercana proximidad de la otra persona, es natural<br />

en un situación de intercambio de tarjetas de<br />

negocios, mientras es señado de un a<strong>para</strong>to a otro.<br />

El limitado ángulo del IrDA permite a otros<br />

desarrollar una actividad similar sin interferencias.<br />

El corto alcance y el estrecho ángulo del IrDA<br />

68


proporciona una forma simple de seguridad y un<br />

uso natural.<br />

Esta misma situación es una debilidad <strong>para</strong><br />

Bluetooth. Con sus características<br />

omnidireccionales, tiene problemas <strong>para</strong> descubrir<br />

el recipiente de intención. No permite al usuario<br />

señalar simplemente al recipiente de intención.<br />

Un a<strong>para</strong>to Bluetooth puede realizar una<br />

operación de descubrimiento de consumición de<br />

tiempo, que encontrará a muchos de los otros<br />

a<strong>para</strong>tos en la habitación. La cercana proximidad<br />

del recipiente de intención no ayudará. El usuario<br />

estará obligado a elegir entre un listado de<br />

a<strong>para</strong>tos descubiertos.<br />

Elegir el a<strong>para</strong>to adecuado, probablemente<br />

requerirá información especial de la otra persona,<br />

por ejemplo, la dirección del a<strong>para</strong>to de 48 bits, o<br />

el apodo. Además Bluetooth tiene capacidades<br />

multipunto y de esta forma utiliza los mecanismos<br />

de seguridad <strong>para</strong> prevenir el acceso sin<br />

autorización.<br />

Los dos usuarios intentando realizar un<br />

intercambio de tarjetas, usando Bluetooth<br />

necesitarían tomar además, medidas de seguridad.<br />

En otras situaciones de intercambio de datos es la<br />

mejor elección.<br />

La habilidad de Bluetooth <strong>para</strong> penetrar objetos<br />

sólidos y su capacidad de movilidad máxima en la<br />

piconet, permite aplicaciones de intercambio de<br />

datos que son imposibles o difíciles con la IrDA.<br />

Por ejemplo con Bluetooth una persona podría<br />

sincronizar el teléfono con un PC sin sacarlo del<br />

bolsillo. Esto no es posible con el IrDA. La<br />

capacidad omnidireccional de Bluetooth permite<br />

la sincronización al comienzo cuando el teléfono<br />

está introducido en el rango del PC.<br />

El uso del Bluetooth <strong>para</strong> la sincronización no<br />

requiere que el teléfono permanezca en una<br />

localización fija. Si la persona lleva el teléfono en<br />

el bolsillo, la sincronización se puede producir<br />

mientras se mueve. Con el IrDA, el teléfono se<br />

puede colocar en la localización adecuada y<br />

permanecer estático mientras la sincronización se<br />

ejecuta.<br />

Acceso a LAN<br />

Una importante característica del Bluetooth y el<br />

IrDA es la habilidad de la conexión sin cable a un<br />

a<strong>para</strong>to, a una amplísima red. Como no hay<br />

requerimientos de señal de línea <strong>para</strong> los a<strong>para</strong>tos<br />

de Bluetooth, sirve muy bien este tipo de<br />

aplicación. Los usuarios del Bluetooth tienen un<br />

alto nivel de flexibilidad cuando usan un punto de<br />

acceso LAN incluido en las premisas en<br />

com<strong>para</strong>ción con el IrDA.<br />

La capacidad del multipunto del Bluetooth<br />

permite a múltiples equipos compartir el medio de<br />

forma eficiente, pero el área potencial de debilidad<br />

del Bluetooth cuando se com<strong>para</strong> con el IrDA es<br />

la ejecución.<br />

La banda agregada del Bluetooth está limitada a 1<br />

Mbps mientras el IrDA soporta 4 Mbps, con 16<br />

Mbps en desarrollo.<br />

El IrDA especifica el protocolo de IrLAN<br />

mediante la conexión de un a<strong>para</strong>to IrDA a una<br />

red mundial. Los requerimientos del IrDA <strong>para</strong> la<br />

señal de línea y distancias máximas de 1 metro,<br />

deben tenerse en cuenta cuando se instalan los<br />

a<strong>para</strong>tos de acceso del IrLAN. Además una vez<br />

que el IrDA está conectado al LAN debe<br />

permanecer relativamente estático.<br />

Dial-up y aplicaciones de voz<br />

Emulando una conexión EIA/TIA 232 entre un<br />

portátil y un móvil <strong>para</strong> establecer una conexión<br />

dial-up a Internet, es de uso común, hoy día, el<br />

IrDA.<br />

Una conexión de IrDA funciona muy bien con<br />

este tipo de aplicaciones y además es una<br />

aplicación dentro de los objetivos de Bluetooth.<br />

Una de las ventajas primarias del Bluetooth es que<br />

el usuario puede dejar el móvil enganchado a su<br />

cinturón y en su bolsillo y moverse alrededor del<br />

dial-up.<br />

La tecnología Bluetooth no requiere que el<br />

teléfono esté al lado del a<strong>para</strong>to como el IrDa.<br />

En cuanto a las aplicaciones de voz, una primitiva<br />

característica de las especificaciones del Bluetooth<br />

es la sincronización de los canales de voz.<br />

Bluetooth tiene la habilidad de reservar un ancho<br />

de banda <strong>para</strong> llevar los datos digitarles de voz.<br />

Bluetooth puede soportar tantas como tres<br />

conversaciones duplex de voz con un piconet.<br />

Un componente <strong>para</strong> las especificaciones de los<br />

infrarrojos de las comunicaciones móviles IrMC<br />

69


incluye RTCON lo que es una especificación <strong>para</strong><br />

la transmisión de datos de voz dúplex soble una<br />

unión de IrDA.<br />

RTCON consume la completa amplitud de banda<br />

de 115.2 Kbps, así que la unión de IrDA<br />

multiplexionando otros datos, no está permitida.<br />

IrDA trabaja bien en este tipo de aplicaciones si<br />

ambos lados de la unión están en posiciones fijas<br />

en relación al otro, La aplicación más común<br />

incluye a un teléfono móvil colocado en un manos<br />

libres del coche.<br />

Aspectos de seguridad<br />

La naturaleza direccional del IR tiene una bajo<br />

nivel de seguridad porque requiere una línea<br />

directa entre transmisor y receptor.<br />

Sin embargo es posible introducirse en una<br />

conversación detectando la luz reflectada e<br />

introduciéndose en el ruido ambiental de los<br />

alrededores.<br />

El IrDA no tiene capacidad de seguridad a un<br />

nivel de conexión como el Bluetooth, en su lugar<br />

confía en un nivel de protocolo mayor y mayores<br />

aplicaciones <strong>para</strong> proporcionar autentificación y/o<br />

encriptación. Como el Bluetooth es unidireccional<br />

y puede ser monopolizado por un a<strong>para</strong>to detector<br />

desde cualquier dirección incluyendo espacios<br />

escondidos.<br />

Bluetooth dirige esta aplicación proporcionando<br />

autentificación y encriptación en su protocolo de<br />

banda básico.<br />

La autentificación se basa en un reto de protocolo<br />

de respuesta, utilizando una clave secreta (palabra<br />

de paso, pasword o pin).<br />

Ambas tecnologías deben contener la misma clave<br />

y así el protocolo permite a cada a<strong>para</strong>to<br />

autentificar al otro.<br />

Después de que los a<strong>para</strong>tos son autentificados es<br />

posible la autentificación de la transmisión <strong>para</strong><br />

incrementar la seguridad.<br />

RF e IrDA: costes de implementación<br />

La implementación del IrDA en un a<strong>para</strong>to <strong>para</strong><br />

los consumidores es simple ya que los productores<br />

tienen paquetes IR completamente integrados.<br />

Los controladores IrDA también son simples. Los<br />

productores de a<strong>para</strong>tos pueden conseguir una<br />

estupenda solución por más o menos 1 dólar<br />

americano.<br />

El coste de integrar el IR puede no llegar a los 2<br />

dólares americanos.<br />

Como los a<strong>para</strong>tos Bluetooth aún no están<br />

ampliamente disponibles, es difícil estimar los<br />

costes de su implantación en un a<strong>para</strong>to.<br />

Las estimaciones iniciales son de 20 dólares <strong>para</strong><br />

los a<strong>para</strong>tos de primera generación y de cinco<br />

dólares <strong>para</strong> los futuros.<br />

Las tecnologías IR y RF están aún sin regularizar<br />

pero lo concerniente a la seguridad de los diodos<br />

láser y los LEDS, el IEC-825-1, estándar de<br />

seguridad, fue recientemente llamado a incluir<br />

todos los transmisiones de base LED.<br />

Las actuales especificaciones IrDA están también<br />

en las guías IEC, pero hay que andarse con<br />

cuidado porque las nuevas especificaciones IrDA<br />

con mayor rango y amplitud de banda están a<br />

punto de crearse.<br />

Se necesitarán unas especificaciones <strong>para</strong> ser<br />

veraces contra los estándares IEC.<br />

Como una tecnología RF, Bluetooth está sujeto a<br />

los grupos mundiales de regulación.<br />

La gran mayoría del mundo, reconoce y permite el<br />

uso sin licencia de a<strong>para</strong>tos de banda ISM 2.45<br />

GHz.<br />

España, Francia y Japón, tienen cuestiones<br />

alrededor del Bluetooth que están siendo tratadas,<br />

aunque es improbable que estas cuestiones se<br />

resuelvan antes de la instauración del Bluetooth.<br />

Breve resumen<br />

En resumen se puede decir, que las tecnologías<br />

IrDA y Bluetooth proporcionan implementaciones<br />

complementarias <strong>para</strong> intercambio de datos y<br />

aplicaciones de voz. Para algunos a<strong>para</strong>tos el tener<br />

uno u otro será la mejor solución de a<strong>para</strong>tos sin<br />

cable de onda corta. Para otros, la elección de<br />

elegir uno u otro estará basada en las aplicaciones<br />

e intención de uso de los modelos.<br />

La historia de la tecnología de la comunicación de<br />

la transmisión de corto alcance sin cable aún está<br />

siendo escrita y el IrDA y el Bluetooth serán las<br />

mayores fuerzas de dirección de esta área.<br />

70


Práctica 1.4<br />

El objetivo de esta práctica es que el alumno implemente alguna aplicación existente<br />

<strong>para</strong> redes inalámbricas de área personal y que ocupe tecnología bluetooth<br />

Introducción:<br />

Los dispositivos móviles están avanzando a una velocidad sorprendente y el software<br />

móvil avanza igualmente rápido. Este panorama móvil emergente abrirá una amplia<br />

gama de posibilidades comerciales a las empresas en el espacio móvil y de igual manera<br />

propicia la demanda de los desarrolladores de software <strong>para</strong> dispositivos móviles, es por<br />

ello que es urgente pre<strong>para</strong>rnos ante estos retos.<br />

En esta práctica se busca que el alumno explore la gran variedad de aplicaciones con<br />

tecnología bluetooth existentes <strong>para</strong> WPANS lo cual le permitirá crear posteriormente<br />

soluciones novedosas <strong>para</strong> estas redes.<br />

El material que necesitas <strong>para</strong> esta práctica es:<br />

1. Computadora con conexión Internet<br />

2. Módulos USB bluetooth <strong>para</strong> las computadoras<br />

3. El dispositivo indicado con tecnología bluetooth <strong>para</strong> implementar su aplicación<br />

Realiza las siguientes actividades:<br />

1. Investigar y descargar alguna aplicación de la Internet <strong>para</strong> redes inalámbricas de<br />

área personal que ocupe tecnología bluetooth<br />

2. Implementar la aplicación<br />

3. Pre<strong>para</strong>r una presentación de cómo se usa la aplicación<br />

4. Hacer un demo del funcionamiento de su aplicación<br />

71


<strong>Unidad</strong> II<br />

Práctica 2.1.<br />

Objetivo: Instalar correctamente y familiarizarse con el kit de desarrollo y los IDE’s más utilizados<br />

<strong>para</strong> realizar aplicaciones móviles usando J2ME.<br />

1. Instalar el Kit de desarrollo de aplicaciones Java. Descargar última versión desde el sitio<br />

http://www.java.sun.com/ o instalar desde el CD del paquete. El archivo de instalación en el CD<br />

es el siguiente:<br />

a) jdk-6u6-windows-i586-p.exe (Versión del kit de java <strong>para</strong> Sistema Operativo Windows).<br />

2. Instalar y configurar el IDE Eclipse y su plugin <strong>para</strong> Programación Móvil. Descargar última<br />

versión desde el sitio http://www.eclipse.org o instalar desde el CD del paquete. Los archivos<br />

en el CD son los siguientes:<br />

a) netbeans-6.1-ml-mobility-windows.exe (Version de Netbeans <strong>para</strong> Sistema Operativo<br />

Windows) ó netbeans-6.1-ml-mobility-linux.sh (Version de Netbeans <strong>para</strong> Sistema<br />

Operativo Linux)<br />

b) sun_java_wireless_toolkit-2_5_2-windows.exe (Versión del plugin <strong>para</strong> Sistema<br />

Operativo Windows) ó sun_java_wireless_toolkit-2_5_2-linux.bin (Versión del plugin<br />

<strong>para</strong> Sistema Operativo Linux)<br />

3. Instalar y configurar el IDE Netbeans y su plugin del Wireless Toolkit. Descargar última versión<br />

desde el sitio http://www.netbeans.org.<br />

a) eclipse-SDK-3.3.2-win32.exe (Version de Eclipse <strong>para</strong> Sistema Operativo Windows)<br />

b) eclipseme.feature_1.7.9_site.exe (Version del plugin <strong>para</strong> Sistema Operativo Windows)<br />

72


Práctica 2.2<br />

Objetivo: Desarrollar aplicaciones móviles básicas usando J2ME.<br />

4. Considere el siguiente código de MIDlet:<br />

import javax.microedition.midlet.*;<br />

import javax.microedition.lcdui.*;<br />

public class CmdListener extends MIDlet implements CommandListener{<br />

private Display pantalla;<br />

private Form formulario = null;<br />

private Command activar;<br />

private Command salir;<br />

}<br />

public CmdListener(){<br />

pantalla = Display.getDisplay(this);<br />

formulario = new Form("Uso de botones CmdListener");<br />

salir = new Command("Salir",Command.EXIT,0);<br />

activar = new Command("Activar",Command.SCREEN,1);<br />

}<br />

public void startApp() {<br />

formulario.addCommand(salir);<br />

formulario.addCommand(activar);<br />

formulario.setCommandListener(this);<br />

pantalla.setCurrent(formulario);<br />

}<br />

public void pauseApp() {<br />

}<br />

public void destroyApp(boolean unconditional) {<br />

formulario = null;<br />

pantalla = null;<br />

notifyDestroyed();<br />

}<br />

public void commandAction(Command c, Displayable d){<br />

if (c == salir){<br />

destroyApp(true);<br />

}<br />

}<br />

Crear un MIDlet basado en el código anterior que adicione un evento en el botón activar. Este<br />

evento debe enviar a un segundo formulario (crear formulario nuevo), el cual debe contener un<br />

aviso y un botón llamado regresar <strong>para</strong> volver al primer formulario.<br />

5. Crear un MIDlet que contenga lo siguiente:<br />

a) Un formulario de bienvenida con un botón salir, y que además contenga dos botones<br />

(adicionales a salir) los cuales conduzcan a 2 diferentes formularios que muestre una<br />

imagen cada uno (desarrollar eventos <strong>para</strong> cada uno).<br />

73


Práctica 2.3<br />

Objetivo: Desarrollar aplicaciones móviles avanzadas usando J2ME.<br />

6. Realizar un MIDlet que contenga una lista implícita con tres opciones:<br />

1) Alerta Modal<br />

2) Alerta No Modal<br />

3) Forma con imagen.<br />

Las dos primeras opciones mostrará la alerta deseada <strong>para</strong> después regresar a la lista<br />

implícita.<br />

La tercera opción debe enviar a una forma que muestre una imagen y deberá tener el<br />

boton “regresar”, el cual mostrará de nuevo la lista implícita.<br />

7. Realizar un MIDlet llamado ListaDiversa que contenga una lista exclusiva con tres<br />

opciones:<br />

1) Alerta Modal<br />

2) Alerta No Modal<br />

3) Forma con imagen.<br />

Las dos primeras opciones mostrará la alerta deseada <strong>para</strong> después regresar a la lista.<br />

La tercera opción debe enviar a una forma que muestre una imagen y deberá tener el<br />

boton “regresar”, el cual mostrará de nuevo la lista.<br />

8. Un “número palíndromo” es una cadena numérica que es igual leída al derecho y al revés.<br />

[Por ejemplo “121”]<br />

Realizar un MIDlet que acepte en un TextBox una cadena numerica.<br />

Comprobar e imprimir en un ALERT si la cadena numerica dada es o no un “número<br />

palíndromo”. [Sugerencia: Usar el método charAt (pos) de un objeto String.]<br />

9. Realizar un MIDlet que solicite en un TextBox un numero x entre 1 y 5.<br />

Posteriormente se creara un formulario con x-TextFields, es decir si se proporciono x= 3,<br />

se creara un formulario con tres TextField y se solicitara el nombre de cada etiqueta (en<br />

total tres).<br />

Finalmente se creara un formulario con x-TextFields con los nombres de etiquetas<br />

proporcionadas en el paso anterior.<br />

74


Práctica 2.4<br />

Objetivo: Desarrollar aplicaciones móviles avanzadas usando J2ME con RMS.<br />

10. Realizar un MIDlet que realice las funciones de una agenda personalizada. Los datos que<br />

requiere la persona deben estar en almacenamiento persistente usando RMS. Los<br />

componentes gráficos mínimos a utilizar son los siguientes:<br />

4) Form<br />

5) Command<br />

6) ChoiceGroup<br />

7) TextField<br />

8) Alert<br />

9) DataField<br />

10) Image<br />

Los componentes adicionales como Gauge, StringItem, etc, son opcionales.<br />

La aplicación debe contener al menos cinco datos de una persona considerando los tipos<br />

de datos numéricos, cadenas, y fechas. La información que el usuario proporcione se debe<br />

conservar aún y la agenda se cierre y se abra en otro momento. Utilizar RMS <strong>para</strong> el<br />

almacenamiento persistente.<br />

75


<strong>Unidad</strong> III<br />

Práctica 3.1<br />

Objetivo: Describir los componentes básicos de la API JABWT.<br />

11. Leer el capítulo 3 (High-Level Architecture) del libro “Bluetooth Application Programming with<br />

Java APIs Essentials Edition” de Thompson, Timohy (Editorial Morgan Kaufmann Publishers,<br />

2008) y responde los siguientes enunciados:<br />

a) ¿JABWT es dependiente de CLDC y MIDP?¿De que forma?<br />

b) Describe el modelo cliente/servidor Bluetooth con una gráfica y explica<br />

c) Enlista las funciones del Bluetooth Control Center.<br />

12. Leer, analizar y ejecutar las aplicaciones HelloServer y HelloClient del capítulo 3 (High-<br />

Level Architecture) del libro “Bluetooth Application Programming with Java APIs Essentials<br />

Edition” de Thompson, Timohy (Editorial Morgan Kaufmann Publishers, 2008). Enlistar los<br />

nombres de las clases y funciones utilizadas por cada ejemplo. Enlistar de forma se<strong>para</strong>da las<br />

clases y funciones comunes.<br />

76


Práctica 3.2<br />

Objetivo: Describir las funciones de las clases básicas de los protocolos de envío y recepción de la<br />

API JABWT.<br />

13. Leer, analizar y ejecutar las aplicaciones EchoClient y EchoServer del capítulo 4<br />

(RFCOMM) del libro “Bluetooth Application Programming with Java APIs Essentials Edition” de<br />

Thompson, Timohy (Editorial Morgan Kaufmann Publishers, 2008). Enlistar los nombres de las<br />

clases y funciones utilizadas por cada ejemplo. Enlistar de forma se<strong>para</strong>da las clases y<br />

funciones comunes.<br />

14. Leer, analizar y ejecutar la aplicación BluetoothInfoMIDlet del capítulo 6 (Device Discovery)<br />

del libro “Bluetooth Application Programming with Java APIs Essentials Edition” de Thompson,<br />

Timohy (Editorial Morgan Kaufmann Publishers, 2008). Enlistar los nombres de las clases y<br />

funciones utilizadas en el ejemplo.<br />

15. Leer, analizar y ejecutar la aplicación DiscoveryMIDlet del capítulo 6 (Device Discovery) del<br />

libro “Bluetooth Application Programming with Java APIs Essentials Edition” de Thompson,<br />

Timohy (Editorial Morgan Kaufmann Publishers, 2008). Enlistar los nombres de las clases y<br />

funciones utilizadas en el ejemplo.<br />

16. Leer, analizar y ejecutar la aplicación DiscoveryMIDlet del capítulo 7 (Service Discovery)<br />

del libro “Bluetooth Application Programming with Java APIs Essentials Edition” de Thompson,<br />

Timohy (Editorial Morgan Kaufmann Publishers, 2008). Enlistar los nombres de las clases y<br />

funciones utilizadas en el ejemplo.<br />

17. Leer, analizar y ejecutar la aplicación DefaultBtsppRecordMIDlet del capítulo 7 (Service<br />

Discovery) del libro “Bluetooth Application Programming with Java APIs Essentials Edition” de<br />

Thompson, Timohy (Editorial Morgan Kaufmann Publishers, 2008). Enlistar los nombres de las<br />

clases y funciones utilizadas en el ejemplo.<br />

18. Leer, analizar y ejecutar las aplicaciones de descubrimiento de servicios del artículo del<br />

sitio http://www.todosymbian.com/secart43.html. Las clases que involucran descubrimiento de<br />

servicios son: SPPServidorMIDlet, SPPServidor, SPPClienteMIDlet , y SPPCliente. Enlistar los<br />

nombres de las clases y funciones utilizadas en cada ejemplo.<br />

77


<strong>Unidad</strong> IV<br />

Práctica 4.1<br />

Objetivo: Crear una aplicación “Hola Mundo” en VB .NET<br />

19. Crear un nuevo proyecto en VB .NET <strong>para</strong> una aplicación que lea el nombre del usuario en<br />

un cuadro de texto y despliegue un saludo cordial que contenga la frase “Hola nombre”. Es<br />

decir, si el usuario teclea “Juan” el saludo dirá “Hola Juan”.<br />

El formulario principal debe poseer una apariencia similar al de la siguiente figura:<br />

Deberás emplear los siguientes controles:<br />

� Label<br />

� TextBox<br />

� GroupBox<br />

� Button<br />

Ejecuta la aplicación <strong>para</strong> probar su funcionamiento. Posteriormente, en una segunda ejecución,<br />

crea un punto de interrupción <strong>para</strong> depurar la ejecución y observar los valores que toman las<br />

variables así como las herramientas de inspección que proporciona el entorno de desarrollo.<br />

78


Práctica 4.2<br />

Objetivo: Crear una aplicación que realice “Cálculos algebraicos” en VB .NET<br />

20. Crear un nuevo proyecto en VB .NET <strong>para</strong> una aplicación que lea los valores de tres<br />

variables llamadas “a”, “b” y “c”, y devuelva el resultado de la expresión (b2-4ac)/2a. El<br />

programa deberá mostrar el resultado de la operación con un mensaje como el de la siguiente<br />

figura:<br />

Ejecútalo y una vez que funcione correctamente modifícalo <strong>para</strong> que continúe pidiendo los valores<br />

de a, b y c hasta que el usuario decida no seguir haciendo cálculos. Puedes emplear el ciclo que<br />

desees y modificar la pantalla de resultados <strong>para</strong> que muestre cuáles fueron los valores<br />

introducidos, además del resultado calculado.<br />

Finalmente, modifica la pantalla <strong>para</strong> que en vez de pedir los valores de a, b y c muestre cuadros<br />

de texto como coeficientes de un polinomio de segundo grado (ecuación cuadrática), el resultado<br />

será, por supuesto, el valor de la variable desconocida (x).<br />

79


Práctica 4.3<br />

Objetivo: Agregar una pantalla accesible desde el menú principal<br />

21. Agregar al proyecto un nuevo formulario en el que despliegues tus datos por ser el autor<br />

del sistema ejemplo que estás desarrollando. Puedes hacerlo empleando un formulario en<br />

blanco o con la plantilla AboutBoxForm, solamente que si usas la plantilla deberás modificar el<br />

texto y la imagen que se despliegan por defecto. Si no empleas la plantilla deberás emplear<br />

varios elementos tales como Label, GroupBox, Button, etc. Una vez concluida la pantalla<br />

guárdala con un nombre que siga la convención de la nomenclatura <strong>para</strong> formularios, por<br />

ejemplo: frmAcercade. Finalmente, crea la llamada <strong>para</strong> que pueda ser ejecutada desde el<br />

menú principal del sistema.<br />

80


Práctica 4.4<br />

Objetivo: Crear una calculadora y hacerla accesible desde el menú principal<br />

22. Crea un nuevo formulario que permita realizar cualquiera de las 4 operaciones aritméticas<br />

básicas: suma, resta, multiplicación y división. Debes incluir al menos los siguientes controles:<br />

3 cuadros de texto, 4 radio botones, 1 etiqueta. En la siguiente figura se muestra una<br />

sugerencia de la vista que puede tener la pantalla:<br />

Deberás asegurarte que la ejecución no falle con la división entre cero e incluso si el usuario teclea<br />

letras en vez de números. Finalmente, deberás agregar al formulario como una opción más del<br />

menú principal del sistema ejemplo.<br />

81


Práctica 4.5<br />

Objetivo: Crear una aplicación con acceso a datos de una Base de Datos<br />

23. Empleando la forma de acceso a datos sin utilizar líneas de código, debes crear las<br />

pantallas <strong>para</strong> leer, agregar, modificar, buscar y eliminar datos en las tablas del sistema,<br />

obteniendo pantallas similares a las que se muestra en la siguiente figura.<br />

Debes crear una pantalla (formulario) por cada tabla de la base de datos: empleados, puestos y<br />

usuarios.<br />

82


Bibliografía<br />

1. Thompson, Timohy. Bluetooth Application Programming with Java APIs Essentials<br />

Edition. Morgan Kaufmann Publishers. 2008.<br />

2. Hopkins, Bruce. Bluetooth for Java. Apress. 2003.<br />

3. Kammer, David. Bluetooth Application Developers Guide. Syngress. 2003<br />

4. Quintas, Agustin. J2ME: Java 2 Micro Edition. Alfaomega/Ra-Ma. 2004.<br />

5. Feng, Yu. Wireless Java Programming with J2ME. SAMS. 2001.<br />

6. Prasad, Ramjee. WLANs and WPANs towards 4G Wireless. 2003.<br />

7. Ceballos, Fco. Javier. Microsoft Visual Basic .NET Curso de programación. Alfaomega<br />

& Ra-Ma. 2008.<br />

8. Firtman, Maximiliano. Desarrollos <strong>Móviles</strong> con .NET. MP Ediciones. 2005.<br />

9. MSDN. Getting Started with Visual Studio .NET and the Microsoft .NET Compact<br />

Framework. Microsoft Corp. EUA, 2004.<br />

83

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!