Aplicaciones Móviles para WPAN's - Unidad Multidisciplinaria ...
Aplicaciones Móviles para WPAN's - Unidad Multidisciplinaria ...
Aplicaciones Móviles para WPAN's - Unidad Multidisciplinaria ...
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