UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES DEARAGÓN .. DESARROLLO DE APLICACIONES PARA CONOCER INFORMACIÓN SOBRE LA UBICACIÓN DE OBJETOS EN DISPOSITIVOS MÓVILES .. T E S S QUE PARA OBTENER El TíTULO DE: INGENIERO EN COMPUTACiÓN • P A' E S E NT A : CARLOS OMAR CHÁ VEZ SÁNCHEZ ASESOR: ING. ALEJANDRO RENÉ GONZÁLEZ PONCE MÉXICO, 2005. UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. Agradecimientos Agradezco en forma especial a Alejandro González y Liliana Hernandez, quienes depositaron en mi su confianza y amistad. Sin duda alguna, sus consejos, experiencia, y sobre todo, su apoyo y paciencia, contribuyeron para llevar al término este trabajo. A mi Madre, por su amor, por su sacrificio y dedicación que ha puesto en su vida para que sus hijos tengan una educación y todas las oportunidades para salir adelante, por su apoyo incondicional y su fortaleza para enfrentar los momentos difíciles. A mi Padre, por su valioso ejemplo de esfuerzo, trabajo y constancia para el éxito de las metas. A mis hermanos, quienes han vivido conmigo mis ilusiones, mis desganas, mis tristezas y mis alegrías, mostrando en todo momento una paciente comprensión y un constante apoyo. Ya todos aquellos familiares y amigos que han sido parte de mi vida. A mis padres ... índice IntroduccieType == IrmLoadEvent){ /* Carga el elemento Form *' } lormld = eventP·>data.frmLoad.formID; IrmP = FrmlnitForm(lormld); FrmSetActiveForm(lrmP); /* * Coloca el manejador de eventos para cada elemento Form. El * manejador del Form activo actual es llamado por FrmHandleEvent * cada vez que recibe un evento *' switch'(lormld){ case MainForm: 11 ... FrmSetEventHandler(lrmP, MainFormHandleEvent); break; 11 .. , agrega el resto de los manejadores para cada elemento Form utilizado 11 .. . retum true; return lalse; Figura 6. 6 Código de la rutina AppHandleEvent de la aplicación de ejemplo. Para poder proveer manipulación específica del elemento Form, FrrnDlspatchEvent llama al manejador de dicho elemento, el cual ya fue previamente configurado mediante AppHandleEvent, antes de llamar a FrrnHandleEvent, sí el manejador devuelve true, indicando que un evento fue 'atendido, éste ya no es procesado, y por lo contrario, si devuelve false, indicando que no fue atendido el evento, frmDlspatchEvent llamará a FrmHandleEvent, el cual, como se mencionó arriba, proveerá de la funcionalidad estándar para dicho evento, .. Capítulo 6. Estructura de una aplicación. 103 6.5 Manejadores de eventos de los elementos Form AppHanéJleEvent además de inicializar y hacer activo al elemento Form actual, es el encargado de agregar la función para la manipulación de eventos del Form, lo cual consigue mediante el llamado de la rutina FrmSetEventHandler. Cada manipulador de eventos de un Form es una función callbacK independiente y específica a cada Form, la cual es provista por el programador (Figuras 6.7, 6.8, 6.9 Y 6.10). Una vez colocada dicha función para manipulación de eventos, el sistema operativo le delega todos los eventos que no son atendidos por el sistema mismo, o por el manejador de eventos de menú. 7 Una función ca/lback es un código ejecutable, el cual es pasado como un parámetro a otro código para su posterior ejecución. Capítulo 6. Estructura de una aplicación. Boolean MainFormHandleEvent(EventType ' eventP) ( Boolean handled = false; FormType' IrmP; switch (eventP->eType){ } case frmOpenEvent: break; l' frmP = FrmGetActiveFormO; r , dibuja el MainForm en pantalla , la funcionalidad es la misma para lo otros Forms '/ FrmDrawForm(frmP); MainFormlnit(frmP); handled = true; , atiende los eventos generados sobre en el menú , la funcionalidad es la misma para lo otros Forms '/ case menuEvent: break; switch (eventP->data.menu.itemID){ case AboutMenu: break; 11 ... muestra el AboulForm handled = true; case ctlSelectEvent: l' break; , atiende los eventos generados sobre los botones , la funcionalidad es la misma para lo otros Forms '/ switch (eventP->data.ctISelect.controIlD){ case Button1 MainForm: break; break; FrmGotoForm(MapaForm); handled = true; case Button2MainForm: FrmGotoForm(EstacionesForm); handled = true; case Button3MainForm: break; FrmGotoForm(RutaForm); handled = true; retum handled; Figura 6. 7 Código del manejador de eventos para el Form inicial llamado MainForm. • 104 Capítulo 6. Estructura de una aplicación. Boolean EstacionFormHandleEvent(EventPtr eventP) { Boolean handled = lalse; FormPtr IrmP = FrmGelActiveForm(); switch (eventP->eType) { case IrmOpenEvent: ) break; /1 .. . inicializa y dibuja de EstacionForm handled = true; case menuEvent: break; // ... procesa los eventos del menú handled = true; case ctlSelectEvent: break; // ... procesa los eventos del los botones handled = true; case tblSelectEvent: r • Precesa los eventos de la lista de estaciones ./ // .. . obtiene la estación seleccionada // ... abre la vista para mostrar los detalles de la estación handled = true; break; case sclRepeatEvent: r break; • procesa los eventos de la barra de desplazamiento ./ /1 .. . recorre la lista de estaciones hacia arriba o hacia abajo handled = true; retum handled; Figura 6. 8 Código del manejador de eventos para el Form que muestra la lista de las estaciones, llamado EstacionesForm. • 105 Capítulo 6. Estructura de una aplicación. Boolean DetallesEstacionFormHandleEvent(EventPtr eventP) { Boolean handled = false; FormPlr frmP = FrmGetActiveFormO; switch (eventP->eType) { case frmOpenEvent: } break; 1/ ... inicializa y dibuja de EstacionForm handled = true; Case menuEvent: break; 1/ .. . procesa los eventos del menÚ handled = true; Case ctlSelectEvent: break; switch (eventP->data.ctlSelect.controIlD) { case ButtonUbicarDetallesEstacionForm: 1/ ... abre la vista para mostrar la ubicación de la estación handled = true; break; // ... procesa los eventos sobre los botones restantes case sclRepeatEvent: l' break; , procesa los eventos de la barra de desplazamiento ' / 1/ .. . recorre el texto, describiendo la estaciones, hacia arriba o hacia abajo handled = true; retum handled; Figura 6. 9 Código del manejador de eventos para el Form que muestra los detalles de las estaciones llamado DetrallesEstacionesForm • 106 Capítulo 6. Estructura de una aplicación. Boolean MapaFormHandleEvent(EventPtr eventP) ( Boolean handled = false; FormPtr frmP = FrmGetActiveForm(); switch (eventP->eType) { case frmOpenEvent: break; 11 ... inicializa y dibuja de EstacionForm handled = true; case menuEvent: break; 11 ... procesa los eventos del menú handled=true; case ctlSelectEvent: break; 11 ... procesa los eventos del los botones handled = true; case penDownEvent: 11 .. . verifica si el evento fue generado dentro del área del mapa handled = true; break; case penMoveEvenU 11 ... verifica si el evento fue generado dentro del área del mapa 11 ... realiza los desplazamientos del mapa handled = true; break; case penUpEvent: 11 ... verifica si el evento fue generado dentro del área del mapa break; retum handled; 11 ... realiza una búsqueda con las coordenadas del origen del evento 11 ... si la búsqueda arroja alguna región, 11 ... entonces, se muestra su nombre 11 ... Y si el área del nombre de la región es seleccionada, 11 ... entonces. abre la vista para mostrar los detalles de la estación handled = true; Figura 6. 10 Manejador de eventos para el Form que muestra la ubicación de las estaciones, llamado MapaForm. • 107 B) Capítulo 6. Estructura de una aplicación. 108 6.6 Descripción de la aplicación de ejemplo En esta sección se describen las distintas vistas por las que se puede navegar al hacer uso de la aplicación referente a servicios basados en su ubicación sobre el sistema de transporte metro de la ciudad de México, y de las cuales en la sección anterior se mostró como éstas manipulan los eventos generados en el elemento Form que las describe. 6.6.1 Instalación Inicialmente, la aplicación debe ser instalada en el dispositivo PalmOS, haciendo uso del software ofrecido por el proveedor, el cual viene de fábrica con el dispositivo, o que puede ser descargado desde http://www.palmone.com/us/supportlpalmdesktop.htm/(Figura 6.11). A) L Inslatll 001 l!l User: ¡,,,,,# @ Fiel.) bled beIow wiI be instale Todos: Figura 6. 16 Vista del Forrn EstacionesForrn de la aplicación del metro de la ciudad de México mostrada en el emulador de un dispositivo PalmOS. Se pueden observar las estaciones del metro listadas por orden alfabético. 6.6.3.3 Detalles de las estaciones _ Acatitla _ Aculco _ Agricola Oriental _Allende _Apatlaco _ Aquiles Ser don _Aragon _ Atlalilco _Auditorio Ira:!. ~~ ... I ? En la vista de EstacionesForm, al seleccionar algún elemento de la lista, es decir, al escoger una estación (Figura 6.17.A), se lanza la vista del Form llamado DetallesEstacionForm, la cual muestra detalles de la estación seleccionada (Figura 6.17.B). A) B) I@ifilti C-_.I>Ii~"""::""'~oslUl~Mr-u-er-to----?) Bolderas _ Bellas Artes _ Bondojito Figura 6. 17 VISta del Forrn EstacionesEstacionesForrn de la aplicación del metro de la ciudad de México mostrada en el emulador de un dispositivo PalmOS. Se pueden observar los detalles de la estación. Lineas: - Linea 1: Observo1:orio- Pan1:i1:lan - Linea 3: Indios Vedes- Universidad ( Ubicar) ? .. Capítulo 6. Estructura de una aplicación. 112 En ésta vista, también se muestra una opción, etiquetada como 'Ubicar', la cual al ser seleccionada, lanza la vista del MapaForm donde se muestra la ubicación de dicha estación en el mapa, como arriba se- menciona. Por lo que el servicio de localización de estaciones del metro provee de dos distintos tipos de búsquedas en esencia, ya sea mediante el ingreso textual de la estación (buscando su nombre), ó mediante su localización visual, utilizando el mapa de las líneas del metro, para conocer su ubicación geográfica en la ciudad, así como sus accesos (calles, ejes o avenidas principales cercanas). Las vistas para las opciones restantes, etiquetadas 'Ruta', 'Información' y 'Ayuda', sirven para mostrar rutas entre estaciones, información y descripción del sistema de transporte metro de la ciudad de México e información sobre el uso de la aplicación, respectivamente. • Conclusiones En este trabajo s~ describió el proceso de desarrollo para la implementación de servicios basados en su ubicación (LBS) en dispositivos móviles, particularmente PDAs, utilizando la plataforma PalmOS, como una herramienta para proveer acceso rápido a servicios mediante el uso de información textual y visual de dichos servicios, para conocer sus detalles y su ubicación, respectivamente. Para muchas aplicaciones, la utilización de referencias visuales y de razonamiento espacial, es altamente benéfico, ya que con ello se aventajan sobre otras, al proveer de una interacción más natural, al permitir que el usuario localice información de la forma más apropiada para él. En dichos sistemas el usuario no necesita un conocimiento exacto de determinado servicio o información, lo cual es una restricción común en sistemas de información semejantes utilizados en dispositivos móviles. Además, la interacción llega a ser más robusta al tener inherentemente, con el mapeo de la información, zonas bien definidas de información, lo cual permite que los errores en el manejo de inconsistencias en la información ingresada por parte del usuario, sean minimizados, además de evitar que haya mal interpretaciones. El uso de servicios basados en su ubicación, ayuda a clarificar distintos tipos de situaciones, al requerir más información, necesaria para resolver los problemas debido a la ambigüedad existente cuando ésta es semejante. Al final, se presentó un ejemplo basado en el sistema de transporte colectivo, metro, de la ciudad de México, mostrando así el uso y la importancia de dichos sistemas implementados sobre dispositivos móviles, aplicados a una de las necesidades más • comunes por el requerimiento de información departe de la gente de la ciudad de México; por ejemplo, saber la ubicación de determinada estación, trasbordos, calles cercanas determinada estación, información de las líneas del metro, planeación de rutas, estimaciórrde tiempos, etc. • Glosario BOxB6: backlit: También xB6, nombre genérico de la arquitectura de microprocesadores desarrollados primero por In tel. Actualmente Intel se refiere a xB6 como IA32, abreviación de Intel Architecture de 32 bit. También backlight, se refiere a las pantallas que son iluminadas hacia atrás, es decir la luz es transmitida opuesta al reflejo. bash shell: También llamado interprete de línea de comandos, provee la tradicional interfaz de usuario para sistemas UNIX, donde el usuario dirige la operación de la computadora introduciendo comandos en texto al shell para realizar tareas. La analogía del shell de UNIX, en Windows, es el programa conocido como command.cbm. Basic: beam: De sus siglas en ingles Beginner's AII-purpose Symbolic Instruction Codeo Desarrollado por John Kemeney y Thomas Kurtz a mediados de 1960, en Dartmounth College. Basic es uno de los primeros y mas simples lenguajes de programación de alto nivel, por lo que, durante 1970, fue el principal lenguaje de programación usado para enseñanza. Método de transmisión de datos, tales como programas, números telefónicos, entre dos PDAs vía infrarrojo bit: Abreviación del ingles binary digit, que significa la unidad mas pequeña de información de una maquina. Un solo bit puede almacenar solo uno de dos valores: ° ó 1 . Bluetooth: Tecnología de interconexión inalámbrica de radio de corto alcance, y de bajo costo. Bluetooth permite, a los dispositivos pequeños, conectarse a otros en un rango de 10 metros. byte: Abreviación del termino en ingles binary, una unidad de almacenamiento capaz de contener un solo carácter. Normalmente un byte es igual a 8 bits. C: Lenguaje de programación, de bajo nivel, estandarizado, desarrollado en 1970, en Bells Labs, por Ken Thompson y Dennis Ritchie, para uso sobre sistemas UNIX. Actualmente se ha extendido a otros sistemas operativos, y es uno de los lenguajes de programación mas usados. C++ : Lenguaje de programación de alto nivel, desarrollado por Bjarne Stroustrup en Bell Labs. C++ agrega funcionalidad orientada o objetos a su predecesor, C. earaeter: En computación, carácter se refiere a cualquiersímbolo(letras, números, etc.) que requiere solo un byte para su almacenamiento. código fuente: Instrucciones de programa en su forma original, es decir, cualquier serie de instrucciones. escritas en algún lenguaje de programación. código objeto: Nombre que se le da al código producido por un compilador compilador: Programa que traduce código fuente en código objeto. eradle: Cygwin: Base sobre la cual se posa el PDA, y permite el intercambio de información entre ésta y la PC. Es una colección de herramientas gratuitas originalmente desarrolladas por Cygnus Solutions, para permitir que las distintas versiones de Windows se comporten como un sistema UNIX. depurar: Se refiere a la localizaCión y eliminación de errores en un programa de computadora. drag and drop : Se refiere a la acción o soporte de poder presionar sobre un objeto y arrastrarlo hacia o sobre otro objeto. Los pasos implicados durante el proceso son: Presionar, y mantener abajo, el botón del mouse, para tomar el objeto Arrastrar (drag) el objeto a la ubicación deseada Soltar (drop) el objeto, liberando el botón emulador: Duplicación de las funciones de un sistema en un sistema diferente, de tal forma que el segundo sistema da la apariencia de comportarse como el primer sistema. enlazador: Traducción del ingles de linker. Es un programa que toma el código objeto, resultado de la compilación, y lo ensambla para producir un programa ejecutable. Graffiti : Software de reconocimiento de escritura usado en PDAs basadas en PalmOS. Graffiti también corre sobre PocketPC, donde es llamado reconocedor de bloques (Block Recongnizer') Graffiti writing area : Es el área de escritura ubicada el la parte baja de un PDA. Está dividida en dos secciones. La de el lado izquierdo es para la escritura de letras, y la de el lado derecho es para la escritura de números. La escritura es realizada con el stylus. handheld: Dispositivo portátil lo suficientemente pequeño para ser mantenido en la mano. Aunque son muy convenientes para transportar, estos dispositivos no reemplazan a las computadoras portátiles debido a lo pequeño de su teclado y pantalla. Los más populares son los diseñados para proveer funciones PIM. hardware : Termino usado en computación para referirse a objetos tangibles, como discos, pantallas, teclados, impresoras, tarjetas, etc. Hotsync: Internet: intérprete: Java: kernel: Método de intercambio o de respaldo de datos entre el PDA y una PC a través de un puerto serial o conexión usa. Conjunto de redes de computadoras interconectadas, las cuales comparten información unas con otras. Lenguaje de programación en el cual los programas pueden ser ejecutados en su forma fuente por el interprete. Lenguaje de programación de alto nivel, orientado a objetos, creado por James Gosling, en Sun Microsystems, en 1991 . Java fue originalmente llamado Oak, y diseñado para dispositivos handheld. Oak no fue exitoso por lo que en 1995 se le cambio el nombre a Java y se modifico el lenguaje para adaptarse al creciente Internet. Modl!lo central de un sistema operativo. Es la parte del sistema operativo que se carga primero, y se mantiene en memoria principal. Normalmente el kernel es el responsable de la gestión de memoria, gestión de procesos y tareas, y de la gestión de disco. lenguaje de programación: Técnica de comunicación estandarizada para expresar instrucciones a una computadora. Es un conjunto de reglas gramaticales (sintácticas y semánticas) usadas para definir programas de computadora. Mac: También Macintosh, conocida actualmente simp!emente como Mac, es la familia de computadoras personales fabricadas por Apple Computer, Inc. Lanzada en 1984, fue la primer computadora en popularizar la interfaz gráfica de usuario( GUf), en su tiempo, un desarrollo revolucionario en el computo de escritorio. . I make: Programa de computo que automatiza el proceso de compilación de un programa. Un programa normalmente consiste de varios archivos, de los cuales un programador normalmente utiliza unos cuantos de estos a la vez. La ejecución de make recompilará únicamente los archivos que necesitan actualizarse (archivos modificados desde la ultima vez que se compiló o que dependen de archivos modificados), lo cual es mucho mas rápido, que recompilar el programa completo cada vez. Memory Stick : Formato de dispositivo de almacenamiento de datos de memoria flash removibles, creado por Sony, para uso en sus propios dispositivos. multitarea: Habilidad del sistema operativo para la gestión de tareas, donde se le dedica a cada tarea (programa) pequeños lntervalos de tiempo de CPU, lo cual permite cambiar de un programa a otro tan rápido que da la apariencia de ejecutar todos al mismo tiempo. MP3 : MPEG: multihi/o: Algoritmo de compresión de audio, capaz de reducir altamente la cantidad de datos requeridos para reproducir audio, el cual suena como una reproducción fiel del audio original sin comprimir. Termino con el cual se hace referencia a la familia de compresión de video digital estándar Habilidad del sistema operativo para ejecutar distintas partes de un programa, llamadas hilos, simultáneamente. multimedia: Uso de la computadora para presentar texto, gráficos, video, animación y audio de una forma integrada. open source : Termino usado normalmente para referirse a un programa del cual su código 'fuente esta disponible al publico en general, para uso y/o modificación de su diseño original libre de cargo. PalmOS: Pascal : PDA : plug-in: Sistema operativo hecho por PalmSouree, Ine. para PDAs fabricados por varias comercializadoras. Lenguaje de programación de alto nivel, desarrollado por Niklaus Wirth en 1970. Pascal es conocido por su afinidad para técnicas de programación estructurada, por lo que es muy popular como lenguaje de enseñanza. Abreviación de Asistente Digital Personal en ingles. Dispositivo handheld que combina funciones de computo, telefonía, Internet y de red. A diferencia de las computadoras portátiles, los PDAs son generalmente basados en lápiz (pen-based) , usando el stylus (también lápiz óptico) en vez de un teclado como dispositivo de entrada, lo cual significa que incorporan técnicas de reconocimiento de escritura. Modulo de hardware o software que agrega una característica o servicio a un programa o sistema mayor. Poeket PC : PDA que opera con el sistema operativo Windows CE. Generalmente son los dispositivos poco más grandes en comparación a los demás PDAs. QVGA: RAM: ROM : script: También Quarter VGA. Término usado para una pantalla de computadora con una resolución de 320x240 píxeles. Las pantallas QVGA son más frecuentemente vistas en teléfonos móviles y PDAs. Tipo de memoria que puede ser accedida aleatoriamente, es decir, un byte de la memoria puede ser accedido sin tocar los bytes anteriores. Tipo de memoria en la cual los datos han sido pregrabados. Una vez que los datos han sido escritos en la memoria, éstos no pueden ser removidos y únicamente pueden ser leídos. También macro o archivo por lotes (batch file) . Es una lista de comandos que pueden ser ejecutados sin interacción del usuario. serial : Tipo de transferencia de datos, en la cual la transmisión de éstos se realiza de un bit a la vez. simulador: Termino usado para referirse a la habilidad de un programa o dispositivo para imitar a otro programa o dispositivo. La simulación intenta representar ciertas características de la conducta de un sistema físico o abstracto mediante la conducta de otro sistema. software: stylus: subrutina: UNIX : VGA: Wi-Fi : Windows: Se refiere a uno o mas pr<;>gramas de computadora y datos contenidos en el área tle almacenamiento· de una computadora para un propósito determinado. Instrumento de escritura parecido a un lápiz, usado para escribir sobre un PDA, o handheld, para introducir datos. Sección de un programa que realiza una tarea en particular. El termino subrutina es sinónimo de procedimiento, función y rutina. Sistema operativo multiusuario y multitarea, originalmente desarrollado por Bell Labs a inicios de 1970. Sistema estándar para pantallas de computadora desarrollado por IBM en 1987. Conjunto de estándares para redes de área local inalámbricas, el cual permite que las computadoras y dispositivos inalámbricos, como los PDAs, se conecten a Internet. Familia de sistemas operativos comerciales para computadoras personales. Dicha familia fue inicialmente introducida en 1985 por Microsoft, y eventualmente ha llegado a dominar el mercado mundial de computadoras personales. Igual que Mac, Windows provee de una interfaz de usuario gráfica. Windows CE : Sistema operativo diseñado por Microsoft para trabajar sobre PDAs. Referencias [1] Laberge, Robert, 2003. Building PDA databases (or wireless and móbije development. Wiley. 265 p. [2] Rhodes, Neil, 2001. Palm OS Programming: The developer's guide, Second edition. O'Reilly, UK. 704 p. [3] Foster, Lonnon, 1996. Palm OS Programming bible, Second edition. Wiley. [4] Jamsa, Kris, . Instant Palm OS application. Osborne. [5] Jamsa, Kris, . Palm OS developer's guide. Osborne. [6] Bhatia, Vikram, 2002. Palm OS Programming: Professional projects. PremierePress. [7] Giguere, Eric, 1999. Palm database programming: The complete developer's guide. Wiley [8] Wilding-McBride, Darly, 2003. Java development on PDA's: building applications for PocketPC and Palm. Addison Wesley. 256 p. [9] Baker, Jeff, 1997. Windows CE application programming. Macmillan Computer Publishing. [10] Laurini, Robert, 1992. Fundamentals of spatial information systems. Academic. London. 680 p. [11] Unwin, D., 1981. Introductory Spatial Analysis. Methuen, London. [12] Haining, Robert, 2003. Spatial data analysis: Theory and practice. Cambridge University, Cambridge. 432 p. [13] Upton, G.J.G. and B. Fingleton, 1985. Spatial Data Analysis by Example, Vol 1: Point Pattern and Quantitative Data. Wiley, New York. [14] Gupta, Uma, 2000. Introduction to information systems. Prentice Hall. New Jersey. 428 p. [15] Kernigan, Brian, 1988. The C programming language: Prentice Hall. New Jersey. [16) Date, C. J., 2003. An introduction to database systems. Pearson education, Boston. 983p. [17) Contreras Gamboa, Jorge A., 2002. Manipulación de códigos de barras por medio de una Palm en una institución bancaria. E.N.E.P. Aragón, U.N.A.M. México, D.F. Tesis de Licenciatura. [18) Christopher Bey, Elly Freeman, Dwayne Mulder, and Jeañ Ostrem. Palm OS SDK Reference. Palm Computing, Inc. 2000. [19] Christopher Bey, Elly Freeman, and Jean Ostrem. Palm OS Programmer's Companion. Palm Computing, Inc. 2000. [20] Gary Hillerson. Palm OS Programming Development Tools Guide. Palm Computing, Inc. 2000. [21] CodeWarrior: Palm OS Tutorial for Windows, 3Com Co. 1999. [22) CodeWarrior: Targeting Palm OS, Metrowerks Inc. 1999. [23) Steve Mann & Ray Rischpater, Advanced Palm Programming. Wiley Computer Publishing, 2001. [24) http://www.palm.comldevzone/ [25] Hermann, Fabian, 2003. Interactive maps on mobile, location-based systems: design solutions and usability testing. Proceedings of 10th Int. Conf. on Human computer interaction (HCllnternationaI2003), vol. 3, Crete, Grece, June 2003, pp. 1258-1262.