Vous êtes sur la page 1sur 25

Aplicaciones Móviles

El problema

En la mayoría de los sistemas corporativos existen procesos que a pesar del grado tecnológico se siguen haciendo de
manera informal, provocando que la información almacenada en la base de datos central no sea del todo correcta o no
esté ingresada en tiempo y forma.

Nos estamos refiriendo por ejemplo al vendedor que toma las órdenes de compra en papel, y recién al final del día o la
semana ingresa esa orden en el sistema. Esto puede traer un gran número de problemas, como vender productos que
no están en stock, vender productos con un precio no actualizado, no poder actualizar los datos del cliente en tiempo
real, etc.,además de que se debe realizar el ingreso de datos dos veces una al realizar la venta y otra a la hora de
agregarlo al sistema. En esta segunda instancia nos podemos topar con problemas como datos insuficientes...
Este es solo un ejemplo de los problemas que tiene no tener nuestros sistemas cuando no estamos en nuestra oficina.
Dependiendo del dominio de la aplicación es probable que existan un gran número más de problemas.

La solución

La solución al problema planteado anteriormente es poder acceder a nuestros sistemas hasta cuando no estamos en
nuestras oficinas.
Las alternativas fueron evolucionando atadas al desarrollo tecnológico.
Una solución que comenzó a ser utilizada es tener Laptops con sistemas "satélite" del sistema centralizado para luego
enviar esos datos al sistema central.
El problema principal de utilizar Laptop es que muchas veces el ciclo de uso de la aplicación tiene que ser ágil
(pensemos en un visitador médico que tiene 3 o 4 minutos para ver al médico entre pacientes) y prender un Laptop,
esperar que cargue el sistema operativo y la aplicación para dar de alta la venta es un proceso costoso.
Por otro lado muchas veces es necesario poder tener la aplicación al alcance de la mano, pensemos por ejemplo en una
toma consumo, el cargar un Laptop en su recorrido es inimaginable.

Con el desarrollo tecnológico evolucionan los pocket PC's de ser simple agendas a ser dispositivos con todo el potencial
de ejecutar aplicaciones potentes. En particular aquellos que corren sistemas operativos de la familia de Windows
Mobile .
Es en este marco que Microsoft libera el Compact Framework un Framework reescrito para estos dispositivos, capaz de
interpretar aplicaciones .NET.

Aprovechando esto es que nace el generador .NET Mobile, un generador especifico para generar aplicaciones móviles
para el Compact Framework

Características

El generador .NET Mobile genera código C# interpretable por el Compact Framework, donde las aplicaciones son con
interfaz win.
Soporta todas las ventajas de las aplicaciones GeneXus con esta interfaz, como son el consumo de Webservices, el uso
de Bussines Components, SDT´s, Multiidioma, etc.

Base de Datos

Las aplicaciones móviles rara vez son aplicaciones en si mismas independientes del resto de los sistemas, sino que
suelen ser satélites de sistemas centralizados. De todas formas es necesario poder almacenar datos de manera local o
poder ver datos de sistemas centralizados. (Más adelante veremos el problema de Sincronización ).

El generador .NET Mobile puede trabajar con la base de datos local SQL Server CE base de datos que corre en el
dispositivo, o acceder a una base de datos centralizada como es SQL Server.
A medida que existan providers ADO para conectarse a otras bases de datos se irán agregando al generador.

Conectividad

Los dispositivos cuentan con varios mecanismos de comunicación por los cuales el dispositivo se conecta a una red,
pudiendo transferir archivos, consumir WebServices de la red, o cualquier cosa que se pueda hacer en esa red.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 1 de 25
www.genexus.es
Requerimientos de desarrollo

Introducción

Para poder utilizar el generador .NET Mobile es necesario tener instalado ciertos requerimientos de Software. Dicho
Software debe instalarse en un orden establecido para que todo funcione correctamente.

Generador .NET Mobile

El generador .NET Mobile si bien genera código C#, el mismo difiere del código generado en las aplicaciones .NET ya
que utiliza como base el .NET Compact Framework. Esto implica que sea necesario tener instalado GeneXus 9.0 , y el
generador .NET Mobile.

ActiveSync 3.7 o superior

Este programa es utilizado para establecer la comunicación entre el dispositivo/emulador con la PC de desarrollo.
Se puede descargar gratuitamente del siguiente link
El sistema operativo Windows Mobile 5.0 requiere el activesync 4.0 o superior.

Visual Studio .NET 2003

El Visual Studio .NET 2003 trae incorporado todas las clases necesarias para manejar aplicaciones móviles. Si bien no es
utilizado directamente, si se usa un conjunto de dll's que no son distribuibles.

SDK de plataforma de desarrollo

Cada dispositivo cuenta con un SDK (Software Developer Kit) particular, dependiendo del tipo de dispositivo.
En caso de trabajar con Windows Mobile 2003, se puede descargar el SDK for Windows Mobile 2003-based Pocket PCs

Emulador

En caso de no contar con un dispositivo conectado a la PC para prototipar, se puede trabajar con emuladores. Los
emuladores son máquinas virtuales que corren en la PC las cuales podemos utilizar tal cual el dispositivo.
Existen un emulador dependiendo de cada plataforma de desarrollo (Windows CE 2002, Windows Mobile 2003,
SmartPhone? , etc)
Para trabajar con el SDK mencionado anteriormente se puede bajar el emulador Emulator Images for Windows Mobile
2003 Second Edition software for Pocket PC

SQL Server CE versión 2.0

En caso de trabajar utilizando la sincronización de SQL Server, es necesario tener instalado la siguiente actualización del
mismo, para poder usar el Internet Information Server como mecanismo de publicación de datos.
Se puede obtener del siguiente link y se debe seleccionar la versión correspondiente con el Service Pack de SQL Server
que se tenga instalado en el servidor.

Consideraciones

Es importante tener presente que los requerimientos de Software listados anteriormente deben instalarse en el orden
prefijado.
Esto es:

1. ActiveSync? 3.7 o superior


2. Visual Studio .NET 2003
3. SDK de la plataforma de desarrollo
4. Emulador

En caso de ser necesario reinstalar uno de los componentes se deberá reinstalar también los siguientes.
Por ejemplo, si se reinstala el ActiveSync? , será necesario reinstalar el Visual Studio, el SDK y el emulador.
En caso de que no se haga esto, al momento de prototipar tendremos problemas a la hora de transferir archivos al
emulador o al dispositivo.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 2 de 25
www.genexus.es
Si a pesar de haber instalado los componentes en orden, a la hora de conectarse con el emulador se presenta el
siguiente mensaje: "One or more files from the Emulator for Windows CE installation is missing. Please reinstall
Emulator for Windows CE and try again."
Se debe a que no se tiene instalado el "Virtual PC Application services". Para corroborarlo, hacer clic derecho Mi PC,
Propiedades ->Hardware ->"Device Manager"
En caso de no tenerlo instalado se debe instalar corriendo el setup que se encuentra en:
<VSROOT>CompactFrameworkSDKConnectionManagerBinDriverInstallSmart Devices Emulator.msi

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 3 de 25
www.genexus.es
Arquitectura

Introducción

A la hora de construir una aplicación móvil, es necesario definir como va a ser la arquitectura de la misma. Con esto nos
referimos a que por lo general las aplicaciones móviles no son el núcleo de la aplicación en si mismo, si no una forma
de entrada o consulta de datos. Por lo tanto, va a ser necesario definir como vamos a trabajar con estos módulos del
sistema y como se van a integrar con nuestra sistema existente.

Entorno de desarrollo

Una pregunta común al comenzar a trabajar con aplicaciones móviles es como debo estructurar mi base de
conocimiento.
En la mayoría de los casos, vamos a partir de un sistema ya existente, en el cual teníamos resuelta la toma de datos
por algún modulo del sistema, ya sea Win o Web, con cierta lógica asociada que quisiéramos reutilizar.
Existen distintas alternativas que podemos manejar:

Un nuevo modelo asociado al generador .NET Mobile

En la mayoría de los casos no nos va a servir, pues, si nuestra base de conocimiento tiene un modulo de entrada de
datos que podemos reutilizar, también tiene muchas cosas que no queremos tener en nuestro modelo móvil.
Por ejemplo, nuestro sistema de entrada de datos podría simplemente utilizar 3 tablas, mientras que la base de
conocimiento tiene muchas más. No tiene sentido crear esta cantidad de tablas en el Pocket PC cuando solo usamos 3.
Sin embargo parece muy util cuando se utiliza replicación de SQL Server como veremos más adelante.

Una nueva base de conocimiento

Quizás esta sea la mejor opción, pues podemos quedarnos solo con aquello que necesitamos.
Consiste en crear una nueva base de conocimiento con aquellos objetos que vamos a utilizar en la aplicación móvil.
Tenemos dos alternativas, consolidar los objetos de la KB centralizada y recortarlos, o rehacer los objetos en nuestra
nueva KB.

Ejemplo

Con el fin de ilustrar la forma de plantear el entorno de desarrollo, veamos el siguiente ejemplo:

Se tiene una sistema dedicado a administrar servicios técnicos de PC's. El sistema consiste en manejar a partir de
requerimientos de entrada, pedidos de services, asociarlos a un técnico, el cual va a realizar el service al cliente y al
retornar registra el resultado del mismo.
Dicho sistema se tiene instalado en el local de donde parten los técnicos, y tradicionalmente se les presenta una planilla
con los services que debe realizar en cada turno. El Técnico al retornar de su turno, debe ingresar los datos que rellenó
en la planilla en el sistema.
Para manejar esta realidad se tiene un sistema con las siguientes transacciones:

Issue: Para manejo de los incidentes reportados por los clientes, y asignación del empleado que lo va a atender.

Employes: Manejo de empleados que hacen Service técnico

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 4 de 25
www.genexus.es
Customer: Datos de los clientes de la empresa

Assist: Transacción paralela a la Issue donde el empelado registra los datos del incidente luego de atenderlo.

Con estas 4 transacciones podemos modelar de forma sencilla el manejo de incidentes, asignación de empleados y
registro de clientes.

Ahora queremos darle a cada técnico un Pocket PC, de forma de cargar en el Pocket cada una de los incidentes que
debe atender, así como los datos necesarios para que lo atienda.
Aquí nos surge una pregunta, ¿realmente necesitamos toda la información que tiene el sistema central?
No nos sirve de nada tener todos los datos de todos los empleados, por ejemplo, ya que es algo que no voy a requerir.

Lo que vamos a hacer es consolidar las transacciones en una nueva KB y luego vamos a eliminar la transacción de
empleados y recortar datos innecesarios de las restantes.
El resultado final es la siguiente estructura:

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 5 de 25
www.genexus.es
Issue: Se elimina referencia al empleado, así como la descripción de Cliente (por un tema de diseño de pantallas, como
veremos mas adelante)

Customer: Solo nos quedamos con los datos de los clientes que nos interesan visto desde el punto de vista del
técnico. No tiene sentido manejar la fecha de pago, o la dirección de cobro

Assist: Permanece incambiada.

Nótese entonces que hacemos dos recortes:


1 - Eliminamos transacciones que no nos interesan
2 - Eliminamos atributos dentro de transacciones que no nos interesan.

Esto se debe a que si bien los dispositivos móviles son computadoras, los recursos son limitados y debemos intentar
recortar lo más posible la aplicación para tener solo aquellas cosas que necesitamos realmente.

Aún no definimos como vamos a comunicar el sistema centralizado con el sistema móvil. Tampoco como vamos a
estructurar los form de la aplicación, eso lo veremos mas adelante.

Conclusión

A la hora de construir un sistema móvil se tiene que tener presente que en la mayoría de los casos este se debe
integrar con un sistema central y que no nos va a interesar tener todo el sistema central en nuestro dispositivo.
Como alternativa podemos definir una nueva base de conocimiento importando solo aquello que necesitamos.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 6 de 25
www.genexus.es
Creación y configuración del modelo

Introducción

A continuación se verá como configurar un modelo .NET Mobile. Teniendo en cuenta que se crearon las estructuras
definidas en el paso anterior.

Wizard New Model

Al crear un nuevo modelo se presenta el wizard new model para definir las opciónes de configuración del modelo

Paso 1

Model Name: Nombre del Modelo


Language:Se debe seleccionar .NET Mobile
User Interface:Win (única opción)
DBMS :SQL Server|SQL Server CE
Target Path :Directorio del Modelo

Notar que las bases de datos disponibles son SQL Server CE que corre dentro del dispositivo y SQL Server. En este
último caso se debe garantizar conectividad de la aplicación sobre la base de datos.

Paso 2

Considerando que se selecciona SQL Server CE (en caso de seleccionar SQL Server los restantes pasos son similares al
generador .NET)

Database name: Nombre de la base de datos (GeneXus la crea si no existe en el dispositivo)


Database Password: Password de la base de datos
Declare referencial integrity: No/Yes
Client side validation:Yes/No

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 7 de 25
www.genexus.es
Compact Framework assemblies directory: Directorio del VisualStudio? .Net con las clases utilizadas por los
programas generados. En caso de estar trabajando con Windows en ingles y Visual Studio en ingles, se encuentran en:
C:\Program Files\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE

Paso3

Compiler:Compilador de .NET, es el mismo que en caso del generador .NET (csc.exe) y se encuentra en el directorio
del framework

Otras propiedades específicas

Device Installation Directory

Directorio donde se instalará el programa en el dispositivo/Emulador.


Se debe indicar a partir de la raíz del dispositivo (por ejemplo \MyPrograms )
Por defecto se instalan en \Program Files
Se debe escribir de la forma \Storage Card\Datos.sdf siendo la extensión sdf opcional.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 8 de 25
www.genexus.es
Ejecución

Introducción

Al momento de ejecutar, GeneXus brinda herramientas de instalación en el dispositivo/emulador.


Veremos como funcionan estas herramientas y como se debe proceder en caso de querer instalar a mano una
aplicación.

Ejecución desde GeneXus

Antes de ejecutar una aplicación o una reorganización es necesario instalar en el emulador/dispositivo el SQL Server CE.
Instalar SQL Server CE

Ejecución de Reorganizaciones

Al momento de ejecutar una reorganización se presenta la siguiente ventana:

La misma nos muestra los emuladores instalados en el PC, así como los dispositivos conectados.
Seleccionando el emulador/dispositivo elegido para ejecutar y con el botón de Deploy & Run se copia todo lo necesario
al emulador/dispositivo y se ejecuta en el mismo. En caso de utilizar la opción del botón Deploy e crean los paquetes
para transferir al dispositivo en formato CAB en la carpeta bin del modelo.
En el caso de utilizar Deploy & Run la ventana mostrará información de lo que está haciendo:

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 9 de 25
www.genexus.es
Como se indica en este paso se debe consultar el dispositivo/emulador que debe estar pidiendo confirmación para
continuar con la instalación y ejecución. Notar que la reorganización es igual a los otros generadores GeneXus

Ejecución de los programas generados

Al igual que la reorganización, para ejecutar una aplicación al hacer el Execute desde GeneXus , se presentará una
ventana similar a la ya vista.

La diferencia es el TAB "Files to deploy" que nos permite agregar archivos adicionales para instalar así como imágenes
u otros archivos adicionales, pudiendo seleccionar la carpeta origen en el PC y destino en el Pocket PC.

La usar el botón Deploy & Run se arma el archivo CAB y se transfiere al Pocket ejecutando la aplicación.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 10 de 25
www.genexus.es
Ejecución Manual

Ver la sección Instalación de Aplicaciones

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 11 de 25
www.genexus.es
Diseño de Formularios

Introducción

Uno de los temas más críticos en el desarrollo de una aplicación móvil es el diseño de los formularios. Tenemos dos
diferencias fundamentales con respecto a una aplicación de escritorio; primero el tamaño de la pantalla, que nos limita
sobre la cantidad de información que podemos desplegar o pedir, la otra es como resolver de forma ágil el ingreso de
datos.

Tamaño de pantalla

La mayoría de los Pocket PC del mercado tienen una pantalla de 240 x 320 pixeles, lo que nos limita considerablemente
con respecto a cuanto contenido podemos tener en una ventana.
A modo de ejemplo, esta es la diferencia en proporción entre una ventana 800x600 y una 240x320

Los SmartPhone? tienen pantallas aún más chicas, por lo que se hace critico el buen aprovechamiento del espacio.

Para poder ver en GeneXus las guías que nos muestran el tamaño de pantalla deseado es necesario definir en el
archivo model.ini de la KB en la sección Preferences lo siguiente

Preferences
CustomScreenLineX=240
CustomScreenLineY=268

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 12 de 25
www.genexus.es
De esta forma se ve el editor de GeneXus de la siguiente forma:

Entrada de datos

Tenemos que tener presentes que generalmente el dominio de aplicaciones móviles tiene como usuario aquel que
realiza la actividad del negocio. Con esto nos referimos por ejemplo a la fuerza de venta, los toma consumos, la
realización de pedidos, la consulta de datos remota, etc. Por lo tanto, es vital para el buen uso de esta tecnología la
agilidad de la aplicación.
Existen varias maneras de ingresar datos en un dispositivo móvil:

Teclado por Software [[2611 )

Es el mas lento de los métodos de ingreso(*), consiste en que cuando el foco esta situado en un campo editable se
muestra en la parte inferior de la pantalla un teclado. Los botones son bastante pequeños deben cliquearse con el
Mouse (lápiz o puntero). Además tiene como contra que se pierde parte de la pantalla ya que el teclado la tapa.

Al entrar en un campo editable, el teclado se presenta automáticamente, esto es configurable en la propiedad del
modelo:
Simple Input Panel Activation que acepta los valores Auto (comportamiento descrito anteriormente) o No, en este
último caso se debe seleccionar el teclado por software a mano.

Se debe buscar alternativas para minimizar la entrada de datos por este medio

(*) Existen otras alternativas por software como son el reconocedor de caracteres donde uno dibuja el carácter y el
sistema operativo lo selecciona comparado con un patrón almacenado. Dicho método suele ser más lento e inexacto
que el teclado

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 13 de 25
www.genexus.es
Teclado por Hardware

Algunos dispositivos traen integrado un teclado por el cual se puede hacer el ingreso de datos, así como también
existen teclados que se pueden conectar a los dispositivos que no tienen. Si bien es una forma sencilla de ingresar los
datos, no es tampoco de las más rápidas, aunque es más rápida que el teclado por software. Además la mayoría de los
aparatos no tienen teclados incorporados, solo aquellos robustos que suelen ser mas caros.

Lápiz o Mouse

Sin duda la forma más rápida de interactuar con la aplicación Se tiene un lápiz que al hacer clic en la pantalla simula el
clic del Mouse y dejando el lápiz presionado simula el clic derecho. En el diseño de los formularios vamos a intentar
utilizar al máximo posible el lápiz, o en algunos casos inclusive podemos mostrar botones tan grandes que los
seleccionemos con el dedo para ahorrar tiempo.
Si bien es el mecanismo utilizado con el teclado por software [[2611 vamos a intentar interactuar directamente con la
aplicación no por medio del teclado.

Consideraciones de diseño

Teniendo presente los puntos descritos anteriormente, hay un conjunto de consideraciones a la hora de desarrollar una
aplicación:

Sugerencia de datos

A la hora de pedir información al usuario, debemos tener presente el dominio de información que el usuario puede
ingresar, y en caso que sea posible sugerir ese dato o facilitar la forma de ingreso.
Por ejemplo, a la hora de pedir el sexo de una persona, perfectamente podemos utilizar un combobox o un checkbox,
de esa forma no se tendrá que digitar nada, sino hacer clic. Lo mismo podemos hacer con algún rango limitado de
datos, por medio de combos dinámicos, campos suggest, o prompts.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 14 de 25
www.genexus.es
Date picker

Una alternativa al ingresar datos tipo Date es hacer clic y dejando presionado el lápiz aparece un calendario sonde se
puede seleccionar la fecha/hora.

Calculadora

De la misma forma que el calendario se puede invocar a la calculadora en los campos numéricos.

Botones

Es recomendable el uso de botones no muy chicos y que sea claro su uso. Hay que tener presente que esto puede
ocupar mucho espacio en pantalla, y si el caso lo amerita se puede remplazar la etiqueta del botón con una imagen, la
misma ocupa menos espacio y puede emitir un claro mensaje.
Por ejemplo en este caso se ve como se remplazaron todos los botones con imágenes:

En este caso el tamaño de los botones es significativo ya que esto permite utilizar el lápiz tanto como el dedo.
Si se desea cambiar las imágenes de los botones de la transacción se deben modificar las propiedades del
grupo:Transaction configuración:

• Add button bitmap


• Update button bitmap
• Confirm button bitmap
• Delete button bitmap

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 15 de 25
www.genexus.es
Menús

Es una practica común el uso del objeto menú, pues ahorra mucho espacio en pantalla. El uso es similar al uso en
aplicaciones Windows, la única diferencia es que se visualiza en la esquina inferior izquierda y no arriba. En la práctica
es muy útil poder definir opciones en el menú, y la mayoría de las aplicaciones para Pocket PC aprovechan esto.

Tabs controls

Una característica del Windows CE es que al abrir una ventana en una aplicación la misma queda en memoria. Por lo
tanto, cuantas más ventanas tenga una aplicación mas memoria consumirá relentizando el sistema.
Una solución común es el uso de Tabs control, ocultando el mismo tab y pasando a la siguiente página en un evento.
Es muy práctico en particular para wizard de ingreso o visualización de datos donde se debe pasar por varias ventanas.
Además tiene la ventaja que no carga un nuevo objeto en memoria.

Tamaño de grillas

Por lo general al usar una grilla, nos va a pasar que es mucha la información que queremos mostrar para el ancho de la
pantalla. Una práctica usual es mostrar solo la información mas descriptiva de la grilla, y por medio de un botón ir a una
ventana de display cuyo único objetivo sea mostrar completa la información de esa línea.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 16 de 25
www.genexus.es
Sincronización

Introducción

Uno de los factores críticos entorno al desarrollo de aplicaciones móviles es como sincronizar los datos desde la base de
datos central hacia las bases de datos de los dispositivos.
Existen varios factores a tener en cuenta a la hora de sincronizar de los cuales muchos van a estar relacionados con el
dominio de la aplicación.
Vamos a analizar los mecanismos técnicos de sincronización y como pueden ser implementados de cada lado. También
veremos las facilidades que el SQL CE aporta para sincronizar con SQL Server directamente.

Conectividad

Un factor a tener en cuenta a la hora de implementar un mecanismo de sincronización es la conectividad de la cual se


dispone.
Los dispositivos móviles funcionan de manera similar a una PC, pueden ser parte de una red asignándole un IP. Vamos
a "ver" la red cuando estemos conectados a la base del dispositivo conectado a una PC, o si el mismo lo permite
podemos conectarnos a una red inalámbrica. Ver mecanismos de comunicación
Siendo parte de la red podemos "ver" el resto de las máquinas y eso es algo que vamos a utilizar a la hora de la
sincronización.
Pero que pasa si no estoy en el rango de la lan y quiero sincronizar información con la base central? Una forma es
utilizar Internet como red y publicar los mecanismos de sincronización en la web. Para que un dispositivo se pueda
conectar a Internet se debe tener contratado un servicio con el proveedor de Internet para dispositivos móviles, y el
aparato debe tener ya sea un MODEM integrado o anexarle uno.

Mecanismos de sincronización

Web Services

Un mecanismo sencillo de implementar es el de enviar/recibir información por medio de webservices. Lo que hacemos
es definir desde el lado de la base centralizada webservices y consumirlos desde el dispositivo. Este mecanismo puede
ser utilizado tanto desde la LAN como desde Internet y nos permite tener cierta flexibilidad con la información ya que
podemos controlar por programación que información vamos a ingresar a la base de datos.
No importa el lenguaje o la base de datos en el que generemos la base centralizada, siempre podemos sincronizar.
Ver mas...

Sincronización SQL CE - SQL Server

SQL Server y SQL CE traen mecanismos nativos para sincronizar tablas.


Básicamente lo que se hace es publicar algunas tablas de la base centralizada (que debe ser SQL Server) por medio de
IIS.
Ver mas...

Data View

La plataforma Net Mobile permite utilizar como base de datos tanto SQL CE como SQL Server. Podríamos definir las
tablas de la aplicación móvil en SQL CE y algunas en SQL Server y acceder a las mismas por medio de un Data View.
Esto nos permitiría por medio de un procedimiento GX copiar datos directamente desde una tabla a la otra.
Ver mas...

Otros mecanismos

Se pueden implementar otros mecanismos más artesanales, como ser la transferencia de archivos (XML, CSV, TXT, etc)
a los dispositivos, y hacer la lectura y actualización de la base. El mecanismo de transferencia de los archivos podría ser
FTP, o recibir el mismo por email en el dispositivo.
Ver mas...

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 17 de 25
www.genexus.es
Impresión

Introducción

Muchos sistemas móviles requieren la impresión, ya sea para facturas, boletas, recibos, etc...
Existen un conjunto de impresoras "móviles" que se conectan a los dispositivos vía conexión serial directa con el
aparato o por medios inalámbricos (Infrarojo, Bluetooh, etc)
Es posible imprimir con estos dispositivos por medio de una aplicación .NET Mobile aunque no se pueden visualizar
los mismos en pantalla

Se diferencian 2 casos, los reportes modo texto y los reportes modo gráfico.

Reportes Modo Texto

Los reportes modo texto pueden ser impresos en cualquier clase de impresora, sea modo texto o no.
Muchas veces no necesitamos grandes opciones de formato, lo que transforma a este tipo de reportes los mas sencillos
de utilizar.
El único requerimiento es que en el caso de usar InfraRojo? para conectarse a la impresora se debe tener en el sistema
operativo el Printer port driver.

La operativa es hacer un reporte modo texto, al imprimir muestra un dialogo de selección de impresora o archivo, en
caso de ser archivo el mismo queda con extensión txt.

Reportes Modo Gráfico

El caso de los reportes modo gráfico es un poco más complejo que los reportes modo texto, por lo que vale la pena
analizar previamente si realmente son necesarios o se pueden suplantar por reportes modo texto.

Printer API

A diferencia de Windows, no hay un estándar definido dentro del sistema operativo Mobile para la impresión modo
gráfico (a diferencia de modo texto que se manda el buffer a la impresora directamente).
Por esta razón existen productos de terceros que implementan la interfaz entre las aplicaciones y la impresora.
La idea no es seleccionar un único producto como interfaz, sino presentar un esquema lo suficientemente flexible de
manera que se pueda incorporar cualquier herramienta de terceros.
Como ejemplo el generador trae incorporado como sería la implementación con Printer CE

Printer CE

Printer CE es un producto de Fieldsoftware


Es necesario descargar las dll's del siguiente link
- PrinterCE.NetCF.dll
- PrCE_NetCF.dll
Copiándolas al directorio \bin del modelo y llevándolas al directorio de ejecución del dispositivo por medio del
deployment de GeneXus .

De esta forma al ejecutar un reporte modo gráfico se presenta un dialogo de selección de la impresora.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 18 de 25
www.genexus.es
ATENCION

En caso de usar la versión TRIAL de la Printer CE primero se presentan los siguientes diálogos que deben ser
aceptados:

Como funciona?

En el directorio \bin del modelo existe un archivo PrinterAPI.dll que es la compilación de los archivos existentes en
PrinterAPIsource.zip donde se muestra como es la implementación para usar un producto de terceros.

Usando otros productos de terceros

Nota: Se debe tener instalado el Visual Studio .NET para poder hacer lo siguiente

Si se necesita usar otro producto de terceros se debe instalar ese producto en el dispositivo o copiar las dll's al
directorio de ejecución.
Por otro lado se debe modificar la PrinterAPI de la siguiente forma:

1 - Descomprimir el PrinterAPISource.zip en un directorio

2 - Copiar las dll's del producto de terceros a ese directorio y la gxclasses.dll

3 - Abrir el archivo PrinterAPI.csproj con lo que se abre el proyecto en el Visual Studio.NET

4 - En el proyecto abierto, se debe agregar la referencia a la GXclasses del directorio \bin

5 - A continuación se debe modificar la implementación de las siguientes funciones:

• Initialize
• NewPage
• EndDoc
• EndPrint
• DrawLine
• DrawRect

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 19 de 25
www.genexus.es
• DrawPicture
• DrawText

Usando las primitivas del producto a utilizar.

6 - Se debe compilar el proyecto copiando la PrinterAPI.dll generada al \bin

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 20 de 25
www.genexus.es
Distribución de Aplicaciones

Introducción

En el desarrollo de aplicaciones corporativas siempre hay una instancia de deployment o instalación, donde se instala
en las máquinas las aplicaciones.
En el caso de aplicaciones móviles nos enfrentamos ante el problema que los dispositivos no suelen estar en una oficina
como una PC, sino que tienden a estar en la calle y es complicado actualizar las aplicaciones.
Por esa razón .NET Mobile facilita el deployment de aplicaciones al máximo.

Instalación

En el capítulo de Ejecución veíamos que al utilizar los botones de Deploy o Deploy&Run se genera un archivo CAB A
efectos de Windows Mobile un CAB es un archivo de instalación, por lo tanto basta con copiarlo y ejecutarlo al pocket
para instalarlo.

Además el mismo se puede colocar el Internet, de forma que con solo referenciar desde el Pocket Browser el mismo (ej
http://direccion_internet/Archivo.cab ) se baja o instala la aplicación.
Esto permite que de forma remota cualquier pocket con acceso a internet pueda instalar o actualizar una aplicación

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 21 de 25
www.genexus.es
Problemas Comunes

Error creating data base: Error loading data store 'C:\Documents and Settings\All Users\Application
Data\Microsoft\VisualStudio\devices\7.1\conman_ds'

Compiling Reorganization...
gxexec
"C:\Modelos\ModelYi\Prueba\DATA002\bldReorganization.cs" -r:GxBaseBuilder.dll
-arg:csc="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\csc.exe" /noconfig
@cf_csc.rsp -arg:mdlpath="C:\Modelos\ModelYi\Prueba\DATA002\"
Building bin\Reorganization.dll
Versión del compilador de Microsoft (R) Visual C# .NET7.10.6001.4 para
Microsoft (R) .NET Framework versión 1.1.4322
(C) Microsoft Microsoft Corporation 2001-2002. Reservados todos los
derechos.

Compilation Successful

Executing Reorganization...
C:\Modelos\ModelYi\Prueba\DATA002\bin\Gxcff5.exe
"C:\Modelos\ModelYi\Prueba\DATA002\bin\reor.inf"
"C:\Modelos\ModelYi\Prueba\DATA002\bin" "reor"
Error loading data store 'C:\Documents and Settings\All Users\Application
Data\Microsoft\VisualStudio\devices\7.1\conman_ds'
Reorganization not completed.
Execution Failed

Este error se debe a que el Visual Studio está en un lenguaje distinto a ingles, mientras que el emulador está en ese
idioma.
La solución es buscar todas las sub-carpetas correspondiente al idioma de C:\Documents and Settings\All
Users\Application Data\Microsoft\visualstudio y remplazarlas (1034 en caso de español) y copiarlas con el nombre 1033
que se corresponde a Ingles.

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 22 de 25
www.genexus.es
Preguntas Frecuentes

1. Cómo incluyo una dll externa?

Para usar una dll externa es necesario setear la preferencia del modelos

"Compiler Flags" = /r:binmylibrary1.dll /r:binmylibrary2.dll .....

Luego generar y compilar

2.Cómo llamar a una aplicación externa?

Existen dos formas de llamar a una aplicación externa

1. Como call dinámico

a.Teniendo el código externo en la carpeta del modelo, (supongamos 'afvbateria.cs'), con la siguiente estructura:

using GeneXus.Application;
using com.genexus;
....
namespace GeneXus.Programs
{
public class afvbateria{
...
public afvbateria(IGxContext context, int hnd, ModelContext jContext):this(){... }
....
public void execute(ref string var1, ref int var2....){.....}
...
}
}

b. Si el archivo cs referencia la librería externa, es necesario hacer lo indicado en el punto 1

c. Llamamos al componente con el siguiente código

Event 'DynCall'
call('afvbateria', &var1, &var2....)
EndEvent // 'DynCall'

2.Con código C#

a. Teniendo la dll externa en el directorio del modelo (supongamos 'afvLibrary.dll')

b. Agregar afvLibrary.dll a las Compiler Flags (ver punto 1)

c. Hacer la llamada con el siguiente código

csharp MyLibraryNamespace.MyClass form = new MyLibraryNamespace.MyClass();


csharp form.execute([!&var1!], [!&var2!]...);

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 23 de 25
www.genexus.es
3.Cómo cambio el cursor?

Para cambiar el cursor es necesario usar el siguiente código:

Csharp System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;


Csharp System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

4.Cómo cambio el icono de mis aplicaciones?

Para cambiar el icono es necesario copiar el mismo al directorio del modelo y agregar a la propiedad "Compiler Flags"
/win32icon:customicon.ico

5.Cómo compacto mi base de datos?

A veces es necesario compactar la base de datos pues la misma crece significativamente guardando información que
luego no será utilizada.
Para eso se puede utilizar el siguiente código para hacer un backup de la base de datos

&src = "sampledb.sdf"
&dest = "sampledb.sdf.tmp"
&dbconn = GetDataStore("Default")
&password = &dbconn.UserPassword
&dbconn.Disconnect()

csharp System.Data.SqlServerCe.SqlCeEngine engine = new System.Data.SqlServerCe.SqlCeEngine("Data Source=" +


[!&src!] + ";Password=" + [!&password!]);
csharp engine.Compact("Data Source=" + [!&dest!] + ";Password=" + [!&password!]);
csharp engine.Dispose();

6 Como genero un "Beep"?

Para generar un "beep" copie el siguiente código:

Event 'beep'
Do 'Beep'
EndEvent // 'beep'

Sub 'Beep'

csharp Beep();
csharp }
csharp [System.Runtime.InteropServices.DllImport("coredll", EntryPoint="MessageBeep", SetLastError=true)]
csharp private static extern void MessageBeep(uint type);
csharp public static void Beep(){
csharp MessageBeep(0xffffffff);

/*

Default = 0xFFFFFFFF,
Asterisk = 0x00000040, //Sound played during an Asterisk Message Box.
Exclamation = 0x00000030,// Sound played during an Exclamation Message Box.
Question = 0x00000020, // Sound played during a Question Message Box.
Hand = 0x00000010,// Sound played during a Hand Message Box.
/*
Endsub

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 24 de 25
www.genexus.es
6 Como activo, desactivo el SIP manualmente?

Se puede hacer por medio del siguiente código

Event 'Sip'
csharp SIP.Show();
EndEvent // 'Sip'

Event 'Nosip'
csharp SIP.Hide();
EndEvent // 'Nosip'

DMR Sistemas SA, Distribuidor de ARTech Consultores SLR en España.Teléfonos 609 82 86 70 - *941 25 91 33 Página 25 de 25
www.genexus.es