Al igual que cualquier otro sistema, Windows CE necesita que los desarrolladores creen aplicaciones para los distintos dispositivos de la plataforma Pocket PC. En este artículo le mostramos las herramientas disponibles para ello.

Realmente el paquete de herramientas de desarrollo ofrecido por Microsoft no tiene como objetivo sólo a la plataforma Pocket PC, ya que pueden ser usadas también para la creación de aplicaciones que tengan como objetivo las plataformas Palm-size PC y Handheld PC, predecesoras de Pocket PC. Dicho paquete de herramientas no se ejecuta en el dispositivo móvil, sino en un sistema corriente de sobremesa. Con él se efectuaría la edición, compilación y depuración de proyectos que, finalmente, se transferirán al dispositivo móvil para efectuar la instalación definitiva.

Estamos hablando del paquete de herramientas que podríamos denominar oficial, al ser el ofrecido por Microsoft. Existen, no obstante, otros productos de desarrollo, de carácter comercial, que pueden instalarse y utilizarse desde el propio Pocket PC. Uno de los más conocidos es NS Basic/CE, con el cual podemos desarrollar programas tanto en el dispositivo móvil como en el equipo de sobremesa. Si quiere más información sobre este producto recurra a la sede nsbasic.com/ce.

El paquete de herramientas que nos facilita Microsoft se denomina Microsoft eMbedded Visual Tools y cuenta con muchas ventajas respecto a otros productos. Para empezar, podemos conseguir el CD-ROM con este paquete de manera gratuita, simplemente solicitándolo a Microsoft. En él, además, están integradas versiones para Windows CE de dos de los entornos más usados en el área de desarrollo: Visual C++ y Visual Basic.

Microsoft eMbedded Visual Tools
Como acaba de decirse, este producto es el paquete de herramientas oficial para el desarrollo de aplicaciones en Windows CE y, por tanto, para Pocket PC. Podemos obtenerlo directamente de la sede de Microsoft, en la URL www.microsoft.com/mobile/developer/BeginnerDev/tools.asp.

Si contamos con una conexión a Internet lo suficientemente rápida y barata, algo no muy habitual en nuestro país, podemos descargar directamente el producto tras un breve proceso de registro. Así, sin coste alguno más que el tiempo de conexión, podremos tener de forma inmediata el contenido del CD-ROM y la correspondiente clave para efectuar la instalación. Si disponemos de un módem V.90, que es lo habitual, el proceso de descarga podría llevarnos más de doce horas. En caso de que no nos sea posible descargar el producto, siempre podemos solicitar el envío en CD-ROM a cambio del coste de manipulación y transporte.

Una vez disponemos del CD-ROM o el archivo equivalente, el proceso de instalación no se diferencia del de cualquier otro producto. Basta con seguir las instrucciones en pantalla para instalar cuatro elementos diferentes: Microsoft eMbedded Visual Tools, Windows Platform SDK for Pocket PC, Windows CE Platform SDK (HPC Pro) y Windows CE Platform SDK (Palm-size PC 1.2). Tenemos, por tanto, las herramientas de desarrollo visual, compuestas de Visual C++ y Visual Basic, y los paquetes de desarrollo necesarios para los tres tipos de dispositivos en el mundo Windows CE.

Para efectuar la instalación completa del conjunto de herramientas necesitaremos un equipo con un procesador Pentium, al menos 32 megabytes de RAM y hasta 720 megabytes de espacio en disco. En cuanto al sistema operativo, lo ideal es disponer de Windows NT 4.0 o bien Windows 2000. Esto nos permitirá efectuar la depuración de la aplicación usando el correspondiente emulador de dispositivo. En Windows 9x podremos utilizar los entornos de desarrollo, pero no será posible la ejecución de los emuladores y, por tanto, no podremos depurar las aplicaciones.

Por último, conviene decir que tanto los entornos de Visual Basic y Visual C++ ediciones eMbedded como la documentación y los emuladores se encuentran en inglés. No nos consta que existan versiones en castellano u otros idiomas.

Microsoft eMbedded Visual Basic
La forma más sencilla de crear aplicaciones para Windows CE, independientemente de que la plataforma sea Pocket PC o una de sus predecesoras, consiste en utilizar Visual Basic. El entorno de Microsoft eMbedded Visual Basic es básicamente el mismo que conocen los usuarios habituales de Visual Basic, si bien el número de componentes disponibles y tipos de proyectos es inferior.

En la Figura 1 puede ver el entorno completo de Microsoft eMbedded Visual Basic, con su paleta de componentes a la izquierda, el diseñador de formularios en la parte central, el gestor de proyectos arriba a la derecha y la ventana de propiedades debajo. La metodología de trabajo es, básicamente, la misma de su hermano mayor, Visual Basic para Windows, pudiendo arrastrar y soltar componentes, editar propiedades y codificar métodos asociados a eventos.

Figura 1. Entorno de desarrollo de Visual Basic para Windows CE, con su paleta de componentes, diseñador de formularios y ventana de propiedades

Cada vez que iniciemos un nuevo proyecto aparecerá, como en Visual Basic 6.0, una ventana con múltiples iconos representando los tipos de proyecto disponibles. En este caso (véase la Figura 2) tenemos cuatro opciones: crear una aplicación Windows CE sin formulario o bien una aplicación con ventana para Palm-size, Pocket PC o HPC Pro. Si elegimos el primer elemento, para crear una aplicación sin formularios, aparecerá una segunda ventana en la que deberemos especificar la plataforma de destino para la aplicación. Esta ventana es la mostrada en la Figura 3.

Figura 2. Desde Visual Basic podemos crear cuatro tipos de proyecto diferentes, dependiendo de si tendrán o no formularios y la plataforma de destino

Figura 3. En caso de que elijamos crear una aplicación sin ventanas, deberemos indicar posteriormente si la aplicación se ejecutará sobre un Pocket PC, un Palm-size o un HPC Pro.

En cuanto al lenguaje propiamente dicho, este Visual Basic embebido es una versión recortada del Visual Basic corriente o, si lo prefiere, una versión ampliada de VBScript. Los tipos de datos están limitados, como en VBScript. Es posible crear funciones y procedimientos y usar las habituales construcciones de lenguaje para gestionar el flujo de ejecución, pero no existen otras posibilidades propias de su hermano mayor.

Microsoft eMbedded Visual Basic no genera código directamente ejecutable, sino un código intermedio que, posteriormente, es necesario interpretar durante la ejecución. De esta forma se obtienen archivos de código realmente pequeños. Cada dispositivo donde deseemos usar las aplicaciones contará con ese intérprete o runtime que, dependiendo del tipo de procesador que tenga el dispositivo, se encargará de generar el código ejecutable correspondiente.

“Hola mundo” con eMbedded Visual Basic

Por tradición, la primera aplicación que todo programador escribe al probar una nueva plataforma o herramienta de desarrollo es el típico programa “Hola mundo”. Veamos cuáles serían los pasos para producir dicho programa utilizando el entorno de Visual Basic para Windows CE. Los puntos más destacables del proceso serían los siguientes:

Iniciamos Microsoft eMbedded Visual Basic y, en la ventana que aparece, seleccionamos el elemento Windows CE for the Pocket PC project, creando así un nuevo proyecto para un Pocket PC.
Editamos la propiedad Caption del formulario que ha aparecido, introduciendo el valor Hola mundo.
Insertamos en el mencionado formulario tres controles: un Label, un TextBox y un Button, diseñando una interfaz como la de la Figura A.

Figura A. Entorno de Visual Basic con la interfaz de nuestro programa y el código asociado al botón

Hacemos doble clic sobre el botón e introducimos, en el método recién creado, la sentencia MsgBox “Hola “ + Text1.Text.
Seleccionamos el dispositivo de emulación, en la lista que hay en la parte superior del entorno, y pulsamos F5 para ejecutar la aplicación. Aparecerá el emulador y podremos ver el programa en funcionamiento, como en la Figura B.

Figura B. El programa ejecutándose en el emulador de Pocket PC

Microsoft eMbedded Visual C++
El otro entorno de desarrollo que encontraremos en el paquete de herramientas es el de Visual C++, una edición embebida con prácticamente las mismas posibilidades de Visual C++ 6.0 y pocas limitaciones. Una de ellas es la inexistencia de excepciones C++. El entorno en sí, como se aprecia en la Figura 4, es prácticamente idéntico al de Visual C++ 6.0, contando con una vista jerárquica de clases, un editor de código y editores de recursos.

Figura 4. Entorno de desarrollo de Visual C++ para Windows CE, con la vista jerárquica de clases, el editor de código y el editor de recursos trabajando sobre un cuadro de diálogo.

En este caso no contamos con un entorno RAD (Rapid Application Development), al estilo de Visual Basic, sino con un IDE (Integrated Development Environment) más o menos clásico desde el que podemos crear componentes, librerías de enlace dinámico y estático y aplicaciones con y sin ventanas. Exceptuando el editor de cuadros de diálogo, no obstante, el resto del trabajo lo efectuaremos editando código.

Como se aprecia en la Figura 5, el número y tipo de proyectos posibles es superior a lo disponible en Visual Basic. Observe, asimismo, que podemos generar código nativo para distintas familias de procesadores. En la parte inferior derecha de la ventana correspondiente al asistente para creación de aplicaciones, Figura 5, podemos marcar las plataformas de destino. En principio podemos generar código para Intel ARM, MIPS, Hitachi SH3 y SH4 y x86.

Figura 5. El asistente para la creación de nuevas aplicaciones de Visual C++ nos permite crear distintos tipos de proyectos y para varias plataformas distintas.

Con Visual C++ embebido podemos crear componentes COM y controles ActiveX usando la ATL (Active Template Library), así como controles ActiveX con las MFC (Microsoft Foundation Classes). También podemos usar las MFC para diseñar aplicaciones con interfaz y librerías de enlace dinámico conteniendo funciones. Por último, también es posible crear aplicaciones Windows CE o Pocket PC típicas sin recurrir a las MFC ni la ATL.

El compilador incluido en Microsoft eMbedded Visual C++ es capaz de generar código altamente optimizado para varias familias de procesadores distintas. Esto significa que obtendremos aplicaciones pequeñas y, al tiempo, mucho más rápidas que las generadas por Microsoft eMbedded Visual Basic. Son, no obstante, dos entornos diferentes dirigidos a dos tipos de usuarios o fines distintos: con Visual Basic es posible desarrollar de manera fácil y muy rápida, mientras que con Visual C++ se obtiene código más rápido y optimizado. Es lo mismo que ocurre con las versiones mayores de estos dos entornos, Visual Basic 6.0 y Visual C++ 6.0.

Instalar aplicaciones en el dispositivo móvil

El fin último del proceso de desarrollo de una aplicación para Windows CE es, lógicamente, su instalación y uso en un dispositivo que use dicho sistema, no la ejecución en un emulador. La transferencia de la aplicación es un proceso bastante sencillo. Suponiendo que deseásemos instalar y ejecutar en nuestro Compaq iPaq el pequeño programa escrito en el recuadro “Hola mundo” con eMbedded Visual Basic, los pasos a dar serían los cinco descritos a continuación:

Usando la opción Make del menú File de Visual Basic generamos el código objeto de nuestro proyecto, creándose un archivo con extensión .vb.
Iniciamos Microsoft ActiveSync y pulsamos el botón Explorar, abriendo así una ventana en la que estamos accediendo al contenido del dispositivo. Nos movemos hasta la carpeta Archivos de programa.
Desde el Explorador de Windows tomamos el archivo .vb citado antes y lo arrastramos hasta la ventana abierta por ActiveSync.
En este momento ya tenemos instalado en el Pocket PC la aplicación, no tenemos más que usar el Explorador de archivos del dispositivo móvil para localizarla.
Para ejecutar el programa basta con pulsar sobre él. El funcionamiento debería ser idéntico al experimentado en el emulador.

Entornos de depuración

Uno de los problemas que plantea el desarrollo, en una determinada plataforma, de aplicaciones que se ejecutarán en otra distinta es el proceso de depuración. Con las herramientas citadas estaremos trabajando sobre Windows 9x, NT o 2000, pero realmente estamos creando aplicaciones para alguna versión de Windows CE y, posiblemente, con un procesador distinto.

Windows CE es una versión de Windows que cuenta con el núcleo de la conocida como Win32 API, el conjunto de funciones que permiten a los desarrolladores efectuar diversas tareas. Existen servicios, no obstante, que no están disponibles en un Pocket PC y sí lo están en Windows Me. También puede ocurrir lo contrario, encontrando en un dispositivo móvil servicios específicos para este tipo de máquinas que no tienen sentido en un equipo de sobremesa.

Figura 6. Aspecto del emulador de Windows CE Palm-size ejecutándose sobre Windows 2000. Observe el botón Start y la barra de tareas en la parte inferior

No es posible, por tanto, ejecutar las aplicaciones generadas por estas herramientas en nuestro equipo de sobremesa para así poder depurarlas. Existen dos alternativas: la depuración remota o el uso de emuladores. Trabajando en Windows NT 4.0 SP5 o Windows 2000 la mejor opción es la segunda, ya que Microsoft eMbedded Visual Tools incorpora emuladores para las tres plataformas Windows CE disponibles.

Figura 7. Los dispositivos Handheld cuentan con pantallas más grandes y un escritorio similar al de Windows 9x, con un área que aloja iconos de acceso.

Los emuladores de dispositivos Palm-size, Handheld y Pocket, a los que corresponden las imágenes de la Figura 6, Figura 7 y Figura 8, respectivamente, no sólo nos servirán para depurar las aplicaciones que estamos desarrollando. También podremos instalar definitivamente dichas aplicaciones y utilizarlas sin necesidad de tener que buscar un dispositivo físico. Es una buena alternativa para experimentar con las distintas clases de dispositivos sin, por ello, tener que adquirirlos.

Figura 8. El emulador de Pocket PC simula un dispositivo de este tipo en el interior de una ventana Windows.

A la hora de ejecutar una aplicación desde el entorno de desarrollo que estemos usando, Visual Basic o Visual C++ para Windows CE, podemos seleccionar de una lista desplegable, en la parte superior, el dispositivo que deseamos utilizar. Éste puede ser un dispositivo físico, al que se transferirá la aplicación previamente, o bien el emulador que corresponda. En la Figura 9 puede ver la mencionada lista en Visual Basic, y en la Figura 10 su equivalente en Visual C++.

Figura 9. Cuando vayamos a ejecutar una aplicación escrita con Visual Basic para Windows CE podemos elegir entre un dispositivo físico o un emulador.

Figura 10. Además de código para procesaroes específicos de dispositivos, con Visual C++ también podemos generar código x86 para su uso en emuladores.

Cómo crear un acceso en el botón Inicio

Al igual que ocurre en Windows Millennium y Windows 2000, los dispositivos Pocket PC cuentan en su interfaz de usuario con unos puntos predeterminados para el alojamiento de accesos directos a las aplicaciones. El menú desplegado al pulsar el botón Inicio es uno de ellos, y la carpeta conocida como Programas otro.

Instalar un acceso directo en cualquiera de esos puntos es un proceso que, básicamente, consta tan sólo de dos pasos, dados desde la carpeta que abre el botón Explorar de Microsoft ActiveSync:

Figura E. Creamos un acceso directo en la carpeta correspondiente al del botón inicio

1. Buscar el programa del que se desea crear un acceso directo, en este caso sería HolaMundo.vb de la carpeta Archivos de programa, pulsar el botón secundario del ratón sobre él y elegir la opción Copiar.

2. Abrir la carpeta en la que se desea crear el acceso directo, por ejemplo Windows\Menú Inicio, y pulsar nuevamente el botón secundario del ratón eligiendo en este caso la opción Pegar acceso directo. Es el paso representado en la Figura E, mientras que en la Figura F puede ver el menú ya con el acceso instalado.

Figura F. En esta imagen puede ver el Compaq iPaq mostrando el menu asociado al botón inicio y habiéndose seleccionado el enlace HolaMundoVB.

Servicios disponibles
Como se indicaba anteriormente, Windows CE es una versión de 32 bits de Windows que, consecuentemente, utiliza el mismo núcleo Win32 existente en las versiones de escritorio de dicho sistema operativo. Existen, no obstante y como es lógico, diferencias notables entre un equipo de escritorio y un dispositivo móvil.

Los sistemas de escritorio disponen de grandes cantidades de memoria y unidades de almacenamiento con mucho espacio, mientras que en un dispositivo móvil nos encontramos, generalmente, con el caso totalmente opuesto. Por ello es lógico que en estos últimos se persiga la eficiencia en cuanto a ocupación de memoria respecta, no implementando servicios que no tendrían mucho sentido en un Pocket PC.

Complementariamente, en Windows CE existen servicios específicos para dispositivos móviles que no encontraremos en Windows 9x, NT o 2000. Son servicios que tienen que ver con la funcionalidad propia de este tipo de máquinas. La versión de Windows CE que más se asemeja a los Windows de escritorio, al tiempo que incorpora más funcionalidad adicional, es la 3.0, usada en los Pocket PC. A la hora de crear aplicaciones que necesitan acceder a datos, por ejemplo, en Windows CE contamos con ADOCE (ADO for Windows CE), equivalente a los ADO (Active Data Objects) que encontramos en cualquier otro Windows.

No existe una versión de DirectX para Windows CE pero, a cambio, sí tenemos la GAPI (Game Application Programming Interface), un conjunto de funciones con una funcionalidad similar pero para Pocket PC. Instalado el motor de GAPI en nuestro dispositivo y los archivos de desarrollo en nuestro equipo de sobremesa, podremos crear aplicaciones que accedan directamente a la pantalla y los botones del Pocket PC.

Los Pocket PC disponen de un conjunto de funciones específicas, conocidas como Today API, inexistentes en otras versiones de Windows. Con dichas funciones es posible agregar elementos a la página Hoy que aparece por defecto al conectar un Pocket PC. De forma similar, existen funciones para controlar la grabadora de voz o el reconocimiento de escritura.

Todos estos servicios y los controles disponibles para el desarrollador son descritos en la referencia que es incluida, en formato de ayuda HTML, junto con los entornos de desarrollo.

Concluyendo
Podemos resumir diciendo que, gracias a las Microsoft eMbedded Visual Tools, actualmente es posible crear cualquier tipo de aplicación para Windows CE y, más concretamente, para Pocket PC. Estas aplicaciones pueden ser desde interfaces de usuario para trabajar con bases de datos hasta juegos con un uso intensivo de gráficos. Este paquete de herramientas contiene básicamente todo lo que necesitamos y, además, podemos obtenerlo sin coste alguno.

Si somos programadores y conocemos Visual Basic o Visual C++, realmente no hay excusa alguna para no comenzar a crear aplicaciones para la plataforma Pocket PC hoy mismo.

En el futuro parece que la plataforma Microsoft .NET tendrá una importante repercusión sobre el desarrollo para los Pocket PC. Cuando esté disponible la edición Compact Framework de dicha plataforma para Windows CE, será posible utilizar el futuro Visual Studio.NET para crear aplicaciones para cualquier versión de Windows, no siendo precisas herramientas como las Microsoft eMbedded Visual Tools.

Francisco Charte es profesor de informática y autor de diferentes libros sobre lenguajes y sistemas de información.