El pasado fin de semana me dió curiosidad conocer la nueva plataforma de Google para móviles denominada Android, por lo que me puse a investigar un poco sobre de que se trata tal plataforma, por lo que solo basto poner la palabra Android en la busqueda de google para encontrar la url del proyecto, el cuál está en la siguiente Url: http://code.google.com/android/
Despues de conocer un poco más sobre la plataforma, bajé el SDK el cuál puede obtenerse de la siguiente dirección web: http://code.google.com/android/download.html
En este caso bajé la versión para Linux, la cuál solo en tar.gz con lo necesario para probar.
También se requiere la nueva versión de Eclipse, al igual que el SDK de Java la versión 1.5 o superior, en este caso tenía instalado previamente la versión 1.4 de Java al igual que Eclipse 3.1 ya que lo utilizo para algunos desarrollos con SuperWaba y PHP, pero por los requerimientos descargué las nuevas versiones de Java 1.5 así como también de Eclipse 3.3 denominado Europa.
Lo interesante de Linux es que puedes tener diferentes versiones de Java y Eclipse instaladas, y solo puedes cambiar el entorno a usar mediante un script dónde definas las variables de entorno para JAVA_HOME, JAVA_PATH, JRE_HOME y JRE_PATH así como definir en el PATH principal el directorio de eclipse y java/bin.
Despues de eso solo hay que bajar el plugin de Android para eclipse el cuál solo basta agregar al directorio de nuevas actualizaciones e instalaciones en Eclipse: https://dl-ssl.google.com/android/eclipse/
Puede verse todo el proceso de instalación del SDK en esta url: http://code.google.com/android/intro/installing.html
Despues de tener todo listo, solo hay que iniciar un nuevo proyecto Android, por lo cuál crea por default todo lo necesario, incluso crea el esquema inicial de un desarrollo para android, que muestra el clásico Hello World, que al ejecutarlo en Eclipse, este inicia el Emulador de Android, que es un emulador de un teléfono móvil y ahí ejecuta la aplicación desarrollada.
El SDK de Android también trae otras aplicaciones demo que pueden abrirse desde Eclipse, estas son muy prácticas para entender el funcionamiento de la plataforma y desarrollo de Android, así como también su ejecución.
Por lo mientras es todo lo que puedo comentar sobre Android, pero seguro que iré conociendo más de esta plataforma, que me parece que es una plataforma que le falta todavía desarrollo, pero que sin duda es muy interesante el propósito de Google y otras compañías, con la cuál se podrán realizar bastantes proyectos.
Hace un par de años que vengo haciendo pruebas con Linux Familiar en mi HP iPaq RX3715, de hecho en el 2006 fui al ENLi en la UPAEP a dar una platica de como instalar Linux en una PDA y al final me hicieron una entrevista para el Sol de Puebla sobre las tendencias de los dispositivos móviles con respecto a Linux.
En ese tiempo Linux Familiar andaba la version 8.2 de Familiar Linux aun estaba en fase beta si no mal recuerdo, ahora en estos días Linux Familiar ya está en la versión estable 8.4 y caminando, de hecho al parecer ya es posible usar QTopia sobre Linux Familiar, ya que en la página de TrollTech ya está el codigo fuente disponible para compilar y usarlo junto con Linux Familiar.
Actualmente la instalación de Familiar Linux es mucho más fácil, solo es recomendable tener una tarjeta SD Card, es recomendable que no sea de más de 1 GB, si así fuera habría que particionarla. Particionando tarjeta SD Card
Se recomienda usar un convertidor de SD Card a USB, su valor en la plaza de la computacion aqui en la Ciudad de México no es mas de $ 10.00 Dlls, recomiendo usar un convertidor USB ya que aunque en mi laptop reconoce la tarjeta SD Card desde la ranura SD, con qtparted y el convertidor usb que la sd card es mucho más fácil hacer la partición, de lo contrario hacerlo con fdisk es un poco más complicado y menos práctico para un usuario novel en Linux, aparte que QTParted tiene una interfaz gráfica que simplifica el trabajo.
Despues de conectar el convertidor USB con la tarjeta SD, iniciar qtparted, si no se tiene esta utilería basta hacer sudo apt-get install qtparted para instalarlo en Linux.
Automáticamente qtparted reconocerá el disco USB, generalmente lo detecta como /dev/sdb, después
desde qtparted borrar la partición del disco usb y crear nuevamente 2 particiones, si es una tarjeta de 2 GB se recomienda que se cree primero una partición ext2 de 1024 MB y el resto con una partición FAT32.
Al terminar de crear las particiones y aplicar los cambios en qtparted, KDE abrirá en 2 ventanas las particiones creadas, en caso de que no ir al directorio /media con Konqueror y abrir los directorios disk y disk-1.
Generalmente /media/disk es para la partición de ext2 y /media/disk-1 es para la partición FAT32 creada Obtención de Archivos
Después de crear las particiones descargar los siguientes archivos:
Despues de la descarga se obtendrán los siguientes archivos: Archivos en la partición FAT 32
haret-pre-0.4.9-20070620_152948.exe: renombrar a haret.exe
modules-2.6.21-hh9.tar.bz2: Modulos para activar el módulo WiFi en la Terminal Portátil
default.txt: Editar este archivo y en la siguiente línea
set CMDLINE "root=/dev/mmcblk0p2 rootdelay=3 psplash=false"
cambiar a
set CMDLINE "root=/dev/mmcblk0p1 rootdelay=3 psplash=false"
Esto va a indicar que el sistema de archivos se encontrará en la partición ext2 y no en fat32
zImage-2.6.21-hh9-1: Renombrar este archivo a zImage, este archivo es la imagen del kernel que se cargará en la terminal portátil. Archivos en la partición Ext2
Acceder a la partición ext2 de la SD Card vía consola
desde ahí descomprimir el archivo Angstrom-opie-image-glibc-test-20070620-rx3000.rootfs.tar.bz2
El anterior comando lo que hará es obtener el sistema de archivos para Familiar Linux en la partición Ext2 Iniciando Linux
Despues de hacer el copiado correcto de los archivos, desmotar las particiones e instalar la tarjeta SD en la PDA.
Desde el directorio de la SD en la PDA ejecutar el archivo haret.exe, si todo sale bien empezará a ejecutarse Linux.
Si el copiado del sistema de archivos en la partición ext2 de la SD Card salió bien despues de unos segundos se vería el inicio de la interfaz gráfica de Opie
A continuación solo alinear la pantalla y posteriormente realizar la configuración regional. Conectando a la red vía USB
Despues de acceder a OPIE, ir a la pestaña de Settings y configurar ahi los parámetros de red a usar, en este caso como demo he usado la siguiente:
IP: 192.168.10.2, Netmask:255.255.255.0, Gateway:192.168.10.1, DNS:Configurar los propios
Despues de configurar la IP en la PDA desde la utilería, reiniciar el demonio de red desde la consola
sudo/etc/init.d/network restart
En la PC editar un script con los siguientes parámetros:
Con estos parámetros configurar la conexión USB y al mismo tiempo habilitamos el ruteo para que la PDA pueda conectarse a internet usando la conexión USB. La imagen muestra una conexión vía SSH usando la interfaz usb0 en la PC para conectarse a la PDA a través de un cable USB Posteriormente "postearé" como instalar paquetes usando ipkg que es una utilería similar a apt-get de debian al igual de como desarrollar aplicaciones para Familiar Linux y como levantar la interfaz wireless de la PDA HP iPaq RX3715 usando Familiar Linux
Se puede obtener información actualizada sobre el Port de Linux para iPaq RX3715 en el siguiente URL:
Empezando a preparar mi charla para el próximo Congreso Nacional de Software Libre que tratará sobre programación de dispositivos móviles en linux usando software libre me encontré con un manual para instalar SuperWaba usando el Editor de Eclipse en Windows que hice hace un par de años para postearlo en el sitio de Pocket Mexico. Ahora pongo este "How To"para ir calentando un poco el tema para el CoNSoL tal cuál lo mandé a Pocket México en esa ocación, este manual que pongo a su disposición incluye los errores gramaticales, de dislexia , quizá de horrografía, detalles de instalación en Windows y otros muchos errores más que hace un par de años no había dádome cuenta, claro este manual lo actualizaré para su uso con el último SDK de SuperWaba en el transcurso de los días pero en esta ocasión para su uso al 100% sobre Ubuntu Linux y asi presentarlo en el CoNSoL 2008, pero por ahora para fines prácticos de Usuarios de Windows posteo la primera versión -incluye mis errores- que hice de este HowTo aquí en mi blog por si les fuera útil este material en el futuro.
En próximos días postearé más información sobre programación de aplicaciones móviles usando el SDK de SuperWaba.
Programando con SuperWaba - 2006 Instalación de Java
Descargar la versión 1.5 de Java del sitio de http:// java.sun.com e instalarlo en la PC.
Agregar al PATH de Windows el directorio de Java/ y Java/Bin y de JRE/
Descargar la última versión de Eclipse disponible en http://www.eclipse.org, recomendada la versión 3.1
Descomprima eclipse_3.X.zip en el directorio de C:\Eclipse
Editamos las variables de entorno de Windows y agregamos al path el directorio C:\Eclipse
Ejecutar Eclipse
Ir a Help->Software Updates->Find and Install ->Search For New Features to Install
Seleccionamos New Remote Site
En Name introducimos SuperWaba y en url la siguiente ruta "http://superwaba-ide.sourceforge.net/update"
Seleccionar OK y Luego Finish, automáticamente eclipse obtendrá los plugins de SuperWaba, solo presione aceptar cada vez que lo requiera la instalación.
Instalación de SuperWaba
SuperWaba es una implementación libre con licencia LGPL para desarrollo de aplicaciones para dispositivos móviles.
Obtener el SDK de SuperWaba de la siguiente página de .
Descomprimir el archivo de superwaba sobre c: quedando instalado en c:/SuperWabaGPL
Creamos una carpeta llamada proyectos dentro de la carpeta de SuperWabaGPL
Agregaremos al CLASSPATH lo siguiente
C:\SuperWabaSDK\lib;C:\SuperWabaSDK\lib\superwaba.jar; Instalación de Ant
Ant es una herramienta desarrollada por Apache que nos permitirá ejecutar y distribuir nuestros proyectos desarrollados con superwaba
Obtener ANT de esta URL:
descomprimir el archivo zip en c:\ant
agregar el directorio bin de ANT al PATH del sistema actual
Eclipse y SuperWaba
1. Open menu File/New/Project/Java/Java Project. Click next.
2. Choose a name for your project. (E.g.: UIGadgets)
3. Uncheck the “Use default” option and open the directory where the application is. (E.g.:
SuperWabaSDK/src/java/superwaba/samples/ui/UIGadgets)
4. Click next. Press yes when asking to create project now.
5. Select the Libraries panel. Click “Add External Jars”, and add the SuperWabaSDK/lib/SuperWaba.jar file.
6. Click finish.
7. Right-click the project, choose Properties.
8. Select the “Java Build Path” page, then select the Libraries tab.
9. Click in the + near the SuperWaba.jar file to open the options.
10.Double-click the “javadoc location”. Select SuperWabaSDK/docs/html directory.
11.Double-click the “source attachment”. Select the SuperWabaSDK/src/java folder.
12.Click ok to finish.
To debug/run the project:
1. Click menu Debug/Debug... or Run/Run... and ensure that a "Java Application" is selected in the "Configurations" box
2. Click New SuperWaba Companion 35
3. Enter the name of the configuration. (E.g.: UIGadgets)
4. In the "Main" tab:
• Project: click browse and select your project name (E.g.: UIGadgets)
• Main class: type "waba.applet.Applet"
5. In the "Arguments" tab:
• Program arguments: type the class name that extends waba.ui.MainWindow (E.g.: "superwaba.samples.ui.gadgets.UIGadgets")
• You may also enter, before the class name, the other possible parameters (see last
topic of this chapter)
6. Click Run / Debug.
Información de las Clases de SuperWaba
Paquete de Superwaba incluidos en SuperWaba.pdb
waba.fx
Clase relacionada al manejo de gráficos, fuentes, imágenes geométricas, imágenes y sonidos.
waba.io
Clase para entrada y salida de datos, para acceder a archivos PDB representado por la clase Catalog,
Comunicaciones vía sockets, Puertos Seriales y algunas utilidades para hacer más fácil el manejo de entrada y salida de datos.
waba.lang
Clase que contiene clases originales de java.lang y contiene únicamente subconjunto de métodos
waba.ui
Esta es la clase más importante, contiene clases para manejo de interfaces gráficas para crear buenos y rápidos programas.
waba.util
Clases de utilerías que contienen clases como Date, Generación de Números Aleatorios y Estructura de datos (Vectores y Tablas de Ordeamiento)
Extensiones de SuperWaba
superwaba.ext.ce.io.builtin
Clase que me permite conectar a la interfaz de VC++ del PocketOutlookObjectModel.
superwaba.ext.ce.io.builtin.pimal
Implementación para el Framework PIMAL de CE
superwaba.ext.ce.io.gprs
Esta clase me permite abrir conexiones GPRS en PocketPC y SmartPhones.
superwaba.ext.palm.io.builtin
clase que me permite controlar aplicaciones originales de PalmOS
superwaba.ext.palm.io.builtin.pimal
Implementación para el Framework PIMAL de Palm
superwaba.ext.palm.io.print.irprint
Clase que me permite conectarme a la interfaz de impresión vía puerto IrDA de PalmOS
superwaba.ext.xplat.fx.gif
Clase que me permite manejar archivos .gif
superwaba.ext.xplat.fx.jpeg
Clase que me permite manejar archivos jpeg
superwaba.ext.xplat.fx.png
Clase que me permite manejar archivos png
superwaba.ext.xplat.game
Un framework de SuperWaba que me permite desarrollar fácilnete juegos para dispositivos móviles.
superwaba.ext.xplat.html
Clase que me permite manejar html y mostrar forms y tablas
superwaba.ext.xplat.html.ui
Controles usados por la Clase HTMLContainer
superwaba.ext.xplat.io
superwaba.ext.xplat.io.gps
Un control que me permite mostrar datos GPS
superwaba.ext.xplat.io.gps.garmin
Un control que me permite implementar el protocolo GPS GARMIN
superwaba.ext.xplat.io.http
Clase que me permite controlar peticiones HTML mediante sockets
superwaba.ext.xplat.io.pimal
Capa de abstracción de Administrador Personal de Información.
superwaba.ext.xplat.io.pimal.addressbook
Me permite conectarme a la libreta de direcciones del dispositivo
superwaba.ext.xplat.io.pimal.datebook
Me permite conectarme a la libreta de citas del dispositivo
superwaba.ext.xplat.io.pimal.memobook
Me permite conectarme a la libreta de anotaciones del dispositivo
superwaba.ext.xplat.io.pimal.todobook
Me permite conectarme a la libreta de tareas del dispositivo
superwaba.ext.xplat.io.print
Clase que define elc omportamiento de la librería de impresión de superwaba
superwaba.ext.xplat.io.print.pboy
Clase de impresión para printboy de SuperWaba
superwaba.ext.xplat.io.scanner
Clase que me permita soportar lectores de código de barras symbol en PalmOS y Windows CE
superwaba.ext.xplat.io.search
Clase que me permite mejorar la búsqueda secuencial en archivos PDB
superwaba.ext.xplat.sql
Una clase que implementa un sbconjuto de métodos de la clase java.sql
superwaba.ext.xplat.sql.db2e
Esta clase es parte de el paquete superwaba.ext.xplat.sql.db2e y son parte de la implementación para
xplat.sql package.
superwaba.ext.xplat.sql.db2e.db2ex
Implementa una interfaz nativa a WDBC.
superwaba.ext.xplat.sql.pdb.pdbx
Manipula PDB usando SQL
superwaba.ext.xplat.sync
Me permite sincronizar una PalmOS con PalmDesktop
superwaba.ext.xplat.ui
Algunas interfaces de usuario que me proveen una funcionalidad adicional
superwaba.ext.xplat.ui.db
Controles práticos para usar con la clase PDBDriver
superwaba.ext.xplat.util
Clases de utilería
superwaba.ext.xplat.util.crypto
clases que me permiten encriptar y desencriptar datos
superwaba.ext.xplat.util.datergf
clase que permite un manejo avanzado de hora y fecha.
superwaba.ext.xplat.util.props
Propiedades y otras clases
superwaba.ext.xplat.util.zip
Una implementación de la librería de java Zip
superwaba.ext.xplat.util.zip.checksum
clase estándar para checksum
superwaba.ext.xplat.webservice
clase para desarrollar webservices con soporte para encriptación y compresión
superwaba.ext.xplat.xml
Un muy completo manejador de XML
superwaba.ext.xplat.zlib
Permite soporte para la librería de compresión Zlib.
waba.applet
Paquete usado para emular SuperWaba corriendo en el escritorio
La primera vez que intenté configurar una PDA con Linux fué por allá del 2005 cuándo intenté conectar una Terminal MC50 de Symbol Technologies con Linux a través de SynCE, esa vez el éxito fué efímero ya que recuerdo que si había logrado conectar la PDA pero por alguna razón solo fué una vez y las demas recibía un mensaje de error, por el trabajo que esa vez me ocupaba lo dejé y desistí intentarlo de nuevo.
Hace unos días estando de vacaciones y ante la ociosidad que imperaba en mi tiempo/espacio decidí intentarlo de nuevo, pensando que sería un calvario como la primera vez agarré valor para intentarlo de nuevo, pero cuál sería mi sorpresa que la configuración sería mucho más fácil de lo que hubiera imaginado y del tiempo esperado.
Bueno la idea de este post no es tanto rollo que a nadie interesa, pero si el saber como sincronizar una PDA con Linux. En Windows existe una aplicación llamada Active Sync, la cuál permite copiar,mover, eliminar, modificar archivos, crear directorios en una PDA con Windows CE o Pocket PC y así como también instalar aplicaciones para móviles, entre otra de las utilerías de Active Sync es permitir la sincronización de correos, contactos, notas, archivos de word, conversión de archivos, etc. Aunque Active Sync es buena herramienta aun le faltan muchas utilerías las cuáles solo se consiguen programandolas haciendo uso de una librería libre desarrollada por OpenNetCF llamada OpenNetCF.DesktopCommunication.
En Linux no existía una herramienta tal como Active Sync, pero hace algunos años fué creado el proyecto SynCE, el cuál permitía sincronizar una PDA con Windows CE o PocketPC con Linux. Actualmente el proyecto de SynCE está muy avanzado y el cuál ya realiza la mayor parte de muchas de las tareas de Active Sync incluso incopora otras mucho más interesantes como es el caso de iniciar aplicaciones en la PDA desde comandos de Linux.
Otra característica interesante de SynCE es que levanta una interfaz de red con la conexión USB realizada con la terminal portátil, no importando si es una PDA con Windows CE o PocketPC 2003, cosa que con ActiveSync solo funciona con Windows Mobile 2005, por lo que SynCE ahora le asigna una IP a la terminal al conectarla. Comencemos con la configuración Configuración en modo Consola
#El primer paso para configurar la conexión es instalar las librerías de la conexión USB del dispositivo sudoapt-getinstall usb-rndis-source cdbs sudo module-assistant auto-install usb-rndis #A continuación solo es darle un ojo a lo que contiene dmesg para ver si reconoció efectivamente la PDA sudodmesg #Este comando nos regresa algo por el estilo [17208765.684000] usb 2-2: new full speed USB device using uhci_hcd and address 2 [17208765.840000] usb 2-2: configuration #1 chosen from 2 choices [17208766.024000] usbcore: registered new driver usbserial [17208766.024000] drivers/usb/serial/usb-serial.c: USB Serial support registered for generic [17208766.024000] usbcore: registered new driver usbserial_generic [17208766.024000] drivers/usb/serial/usb-serial.c: USB Serial Driver core [17208766.036000] drivers/usb/serial/usb-serial.c: USB Serial support registered for PocketPC PDA [17208766.036000] drivers/usb/serial/ipaq.c: USB PocketPC PDA driver v0.5 [17208766.036000] ipaq 2-2:1.0: PocketPC PDA converter detected [17208766.040000] usb 2-2: PocketPC PDA converter now attached to ttyUSB0 [17208766.040000] usbcore: registered new driver ipaq [17208766.956000] usb 2-2: USB disconnect, address 2 [17208766.956000] ipaq ttyUSB0: PocketPC PDA converter now disconnected from ttyUSB0 [17208766.956000] ipaq 2-2:1.0: device disconnected [17216809.168000] usb 2-2: new full speed USB device using uhci_hcd and address 3 [17216809.324000] usb 2-2: configuration #1 chosen from 2 choices [17216809.328000] ipaq 2-2:1.0: PocketPC PDA converter detected [17216809.332000] usb 2-2: PocketPC PDA converter now attached to ttyUSB0 [17217765.692000] CSLIP: code copyright 1989 Regents of the University of California [17217765.704000] PPP generic driver version 2.4.2 [17217765.860000] ip_tables: (C)2000-2006 Netfilter Core Team [17217767.436000] PPP BSD Compression module registered [17217767.508000] PPP Deflate Compression module registered [17217956.564000] usb 2-2: USB disconnect, address 3 [17217956.564000] ipaq 2-2:1.0: device disconnected [17217956.568000] ipaq ttyUSB0: PocketPC PDA converter now disconnected from ttyUSB0 [17217959.824000] usb 2-2: new full speed USB device using uhci_hcd and address 4 [17217959.984000] usb 2-2: configuration #1 chosen from 2 choices [17217959.984000] ipaq 2-2:1.0: PocketPC PDA converter detected [17217959.988000] usb 2-2: PocketPC PDA converter now attached to ttyUSB0 [17218294.300000] usb 2-2: USB disconnect, address 4 [17218294.300000] ipaq ttyUSB0: PocketPC PDA converter now disconnected from ttyUSB0 [17218294.300000] ipaq 2-2:1.0: device disconnected [17218297.572000] usb 2-2: new full speed USB device using uhci_hcd and address 5 [17218297.732000] usb 2-2: configuration #1 chosen from 2 choices [17218297.736000] ipaq 2-2:1.0: PocketPC PDA converter detected [17218297.736000] usb 2-2: PocketPC PDA converter now attached to ttyUSB0 #De todo este relajo lo importante es la siguiente línea [17208766.956000] ipaq ttyUSB0: PocketPC PDA converter now disconnected from ttyUSB0 #lo que indica que nos reconoció el dispositivo exitosamente y ahora configurará el puerto en ttyUSB0 #lo que sigue es instalar los paquetes de SynCE, en este caso para que funcione junto con KDE sudoapt-getinstall syncekonnector-dev syncekonnector synce-serial synce-multisync-plugin synce-kde synce-dccm #Con esto básicamente ya tenemos todo lo necesario solo faltaría iniciar los módulos del puerto USB #Cargamos el módulo para la iPaq sudo/sbin/modprobe ipaq #Quizá nos mandé unos warnings, en este caso solo ignorarlos #A Continuacion iniciar synce indicando que use el puerto /dev/ttyUSB0 que es dónde recibe la conexión USB de la PDA sudo synce-serial-config ttyUSB0
#Despues iniciar el daemon para la conexión de sincronización con la PDA.
dccm -f& #Dspues de iniciar el daemon iniciar la conexion con la PocketPC sudo synce-serial-start #despues de ejecutar el comando en la consola se verá un mensaje que synce está esperando la conexión con la PDA #Si todo salió bien en la terminal debe mostrar la ventana de sincronización y en la consola mostrar un mensaje como el siguiente
dccm[20168]: Talking to 'Pocket_PC', a PocketPC device of type HP iPAQ rx3700
A partir de aqui se pueden usar los siguientes comandos de consola para interactuar con la PDA
pstatus allows you to obtain status on your connection and information about the device you have connected.
pls allows you to obtain a listing of the files on your device.
pmkdir creates a directory (or folder) on your device.
pcp copies files to and from the device.
prun runs a program on the device from your Linux machine.
synce-install-cab installs a .cab file on the device.
Configuración en modo GUI
Existe también la posibilidad de tener una interfaz gráfica para conectar la PDA con SynCE a través de KDE, en este caso usaremos la aplicación Raki que se encuentra en el menú Utilidades de KDE.
Antes de iniciar en modo GUI ejecutar los siguientes comandos desde la consola
sudo /sbin/modprobe ipaq
sudo synce-serial-config ttyUSB0
La primera vez que se usa esta aplicación, pide algunos valores de configuración los cuáles se recomiendan aceptar los defaults.
Despues de que se inicia Raki, se verá el ícono en el panel principal de KDE, seguramente se observará en un tono gris el icono, esto ya que no está sincronizada la PDA aún y tampoco se ha ejecutado el daemon dccm.
Si es que no se ha ejecutado en automático el daemon dccm, desde el ícono de Raki en el panel, presionar el botón derecho del mouse y seleccionar Start DCCM, ahora solo faltaría iniciar Synce-Serial desde la consola
En la consola ejecutar
sudo synce-serial-start
Y con esto quedará sincronizada la PDA con Linux, a partir de ahora ya se puede usar Raki para instalar programas, para ejecutar aplicaciones en la PDA, para ver el directorio de de la terminal desde Konqueror, ver información del sistema, entre otras utilidades que tiene Raki.
Si se desea ver el directorio de la Terminal usando Konqueror, tal como lo hace Explorer, en Konqueror abrir la siguiente dirección rapip://active_connection/
Si la sincronización fué correcta, se podrá observar el directorio de la PDA en Konqueror y a partir de ahí se pueden ya hacer múltiples de cosas interesantes.
Today searching in internet any projects developed using SQLIte as database in mobile devices, I've good luck finding a conference given by Dr. Richard Hipp, he developed sqlite as an alternative to embedded databases seven years ago aproximately and this fantastic database allow to be embedded into your applications without need a database server, network connection or another IT infrastructure.
The talk is very interesting to know more about of SQLite.
I hope that you enjoy this conference like me. Note: Developed Project by Dr. Richard Hipp http://www.hwaci.com/drh/
Hace unos días desarrollando una aplicación de toma de inventarios para una empresa requerí usar una terminal MC1000 de Symbol Technologies, la cuál de fábrica trae un sistema operativo Windows CE 4.2, Windows CE es una plataforma para dispositivos móviles desarrollado por la empresa Microsoft.
Debido a que la terminal portátil MC1000 no tiene una pantalla táctil(touchscreen) fué requerido implementar teclas de función para la ejecución de diversas funciones dentro de la aplicacion, no hubo mayor problema en desarrolar la parte de la aplicación para ser usada mediante teclas de función, el detalle fué cuándo requerí probar rápidamente la aplicación ya que en ese instante no contaba físicamente una terminal MC100 por lo que quise probar en mi PDA una HP iPaq RX3715 la cuál contiene un sistema operativo Pocket PC 2003 Second Edition, el cuál es diferente a WindowsCE, empezando porque PocketPC no trae teclas de función mientras que Windows CE si, ni en las últimas versiones de PocketPC no se ven teclas de función, por lo que no me quedó más que buscar en internet una solución que me permitiera cargar un teclado en la PDA que soportara teclas de función, para mi suerte pude encontrar un teclado virtual para pocketpc llamado Euro Keyboard.
Lo interesante de Euro Keyboard es que es una aplicación desarrollada bajo la filosofía del Software Libre lo que indica que tanto el binario asi como el código fuente de la aplicación estan disponible para su descarga en este caso sin ningún costo, por lo que sin dudarlo lo bajé de Source Forge y pasé a instalarlo a mi PDA tal como se puede ver en el screenshot.
Al hacer la prueba de mi aplicación usando esta utilería no tuve mayor problema al usar las teclas de función(F1, F2, F3.. ) en mi iPaq con PocketPC tal como debería operar en una terminal MC1000 con Windows CE.
Por si alguien pudiera serle práctica esta utilería les paso el URL del proyecto Euro Keyboard en SourceForge para que pueda probarlo o mejor aún mejorarlo ! http://eurokbd.sourceforge.net/
Today I was programming an application using the Compact Framework 2.0 with Visual Studio .Net 2005. I needed to print using the bluetooth connection between a Symbol MC70 Terminal and a Zebra RW-420 Printer and searching libraries in System.IO.Serial I can't found nothing interesting, then I remember that OpenNetCF released a Serial Library as Open Source, without think more I went to the OpenNetCF Site to get the Source Code of the library and build with VS .Net 2005 to obtain the dlls and add the reference to my project.
The URL of the Serial Library is : http://www.opennetcf.com/FreeSoftware/OpenNETCFIOSerial/tabid/252/Default.aspx
Then using the library I make a light class to print CPCL Code in Zebra RW 420.
The Bluetooth connection between the RW420 and MC70 was successfully, Creating a Serial Com Port in ther mobile terminal with Windows Mobile 2005. Only I need Label Vista for Zebra to configure the properties of serial port of the mobile printer.
If anyboy have any problem using RW420 printer, I put the code of my class, only you will need add the class in a namespace:
class Zebra {
OpenNETCF.IO.Serial.Port Serial; string status; string status_error; string receive_data;
public Zebra(){
status ="";
status_error ="";
receive_data =""; }
public Boolean OpenPort(string portName) {
StatusClean();
OpenNETCF.IO.Serial.HandshakeNone portSettings = new OpenNETCF.IO.Serial.HandshakeNone();
Serial = new OpenNETCF.IO.Serial.Port(portName, portSettings);
Serial.DataReceived+= new OpenNETCF.IO.Serial.Port.CommEvent(dataReceived);
Serial.RThreshold=1;
Serial.InputLen=30;
Serial.SThreshold=1;
Serial.Settings.BaudRate= OpenNETCF.IO.Serial.BaudRates.CBR_57600;
Serial.Settings.Parity= OpenNETCF.IO.Serial.Parity.none;
Serial.Settings.StopBits= OpenNETCF.IO.Serial.StopBits.one;
Serial.Settings.ByteSize=8; if(!Serial.IsOpen) {
try {
Serial.Open();
status ="Port opened"; returntrue; }
catch (Exception ex) {
status_error ="Error in port opening"; returnfalse; } } else { returntrue; } }
/// <summary> /// Close Serial Port /// </summary>
public void ClosePort() {
StatusClean();
try {
status ="Serial Port closed successfully";
Serial.Close(); }
catch {
status_error ="Seial Port not closed"; } } /// <summary> /// Send a string to the Serial Port /// </summary> /// <param name="cmd"></param>
public void SendCmd(string cmd) {
StatusClean(); if(Serial !=null) { if(Serial.IsOpen) {
try {
Serial.Output= StrToByteArray(cmd); }
catch (Exception ex) {
status_error = ex.Message.ToString(); } } } else {
status_error ="Port is not opened"; } }
/// <summary> /// Allow to know the incoming string from serial port /// </summary> /// <param name="s"></param> /// <param name="e"></param>
public void ReceivedData(object s, EventArgs e) {
byte[] inputData = new byte[30];
inputData = Serial.Input; string displayString = Encoding.ASCII.GetString(inputData,0, inputData.Length);
receive_data += displayString; } //________________________
/// <summary> /// Convert a string to byte array /// </summary> /// <param name="str"></param> /// <returns></returns>
public static byte[] StrToByteArray(string str) {
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); return encoding.GetBytes(str); }
/// <summary> /// Clean the status properties /// </summary>
private void StatusClean(){
status_error ="";
status_error ="";
status =""; }
You can call the class from an event, for example:
//Create the property in your class
private Zebra ZebraPrinter; // call to the constructor
ZebraPrinter = new Zebra(); //And execute the OpenPort Method given the Serial Port of your Connection if(ZebraPrinter.OpenPort("COM4")==true){
//If the connection is successfully then send the string to Serial Port
ZebraPrinter.SendCmd("! 0 200 200 800 1\r\nLABEL\r\nCONTRAST 0\r\nTONE 0\r\nSPEED 3\r\nPAGE-WIDTH 240\r\nBAR-SENSE\r\nTEXT90 4 3 36 288 .88\r\nTEXT90 5 2 163 273 SWEATSHIRT\r\nVBARCODE UPCA 2 1 45 139 576 04364503284\r\nTEXT90 7 0 191 511 043645032841\r\nTEXT90 5 0 4 524 COMPARE AT\r\nTEXT90 4 0 30 508 $ 30.00\r\nTEXT90 5 0 115 575 ZD-180-KL\r\nTEXT90 5 2 119 269 ALL COTTON\r\nTEXT90 7 0 114 389 01/17/98\r\nTEXT90 0 0 208 173 EA00-732-00560\r\nTEXT90 5 0 82 519 ELSEWHERE\r\nBOX 189 358 217 527 1\r\nPRINT\r\n"); } //Close the POrt when you finish to send data to the Zebra Printer
ZebraPrinter.closePort();
The code is very simple, but it works and save many time and work ..
My English suck.. but I need to practice it...
Bajando unas librerías para del desarrollo de una aplicación en OpenNetCF doy por casualidad con una nota en un blog de MSDN dónde comentan que hace más de un año Microsoft liberó el código fuente completo del Emulador de Windows CE y Pocket PC, el código fuente completo al parecer puede compilarse directamente desde el Visual Studio 2005, de tal forma que con este emulador ya no hará falta tener físicamente el dispositivo para probar las aplicaciones desarrolladas para esta plataforma de dispositivos móviles y asi probar nuestros desarrollos dentro del Emulador directamente.
Este no es un HowTo, mucho menos un tutorial, solo es una referencia rápida de como implementar una conexión VPN entre dispositivos móviles con Windows Mobile 2003 o 5.0 a traves de redes GPRS.
Debido a la falta de compatibilidad entre los Appliances de seguridad y conexiones VPN existentes en el mercado para con los dispositivos móviles y despues de haber intentado varias soluciones que no tuvieron éxito, me puse a investigar una solución que pudiera permitir algunas terminales portátiles conectarse a un servidor VPN para lo cuál tuve suerte de encontrar OpenVPN. OpenVPN es una solución VPN fácil y rápida de implementar aparte de ser muy segura y con muchas características configurables que le permiten adaptarse a cualquier escenario planteado, pero lo importante es que permite conexión desde dispotivos móviles bajo la plataforma de Windows Mobile y es una solución Open Source lo que indica que no es necesario pagar un licenciamiento adicional por cada conexión o servidor implementado.
La versión de OpenVPN como servidor puede obtenerse libremente desde la siguiente dirección http://www.openvpn.org.
La implementación del servidor OpenVPN se realizó bajo la plataforma de Ubuntu Linux Server y para lo cuál se siguió el siguiente HowTo para su implementación en el servidor : http://openvpn.net/howto.html
En la parte móvil se usó una terminal portátil Symbol MC70 con conexión GPRS habilitada con el proveedor de Movistar. En la terminal portátil de Symbol desarrollé una aplicación que contiene un sistema para generar cotizaciones en línea, generación de pedidos, control de inventarios y facturación electrónica, para lo cuál era necesario acceder remotamente a un servidor de MS SQL Server para extraer la información de la base de datos que son alrededor de 20 tablas con un global de 50,000 registros apróximadamente y almacenar esa información en una base de datos local dentro de la terminal portátil MC70 y así operar en modo batch para despues solo enviar la información capturada al servidor remoto usando la conexión GPRS a traves de una conexión segura VPN.
Para poder hacer la conexión a la base de datos era necesario tener una conexión VPN segura, se intentó conectar al appliance que se tiene instalado en las instalaciones del cliente, pero por cuestiones de incompatibilidad la conexión no se pudo realizar usando los mecanismos de VPN estándares de Windows Mobile, por lo que recurrimos a una solución OpenSource la cuál ha resultado bastante eficaz y con la cuál estamos operando en estos momentos.
El cliente OpenVPN para dispositivos móviles puede obtenerse de la siguiente dirección http://ovpnppc.ziggurat29.com/ovpnppc-files.htm su uso e implementación dentro de la términal portátil es fácil pero el sitio de OpenVPN cuenta con un forum por si pudiera presentarse un problema durante su instalación y configuración.
Buscando unas librerías para compresión y descompresión de archivos para dispositivos móviles que use hace tiempo para un proyecto, entro de nuevo al sitio de OpenNetCF para descargarlas, pero antes de hacer la descarga de la librería noto que OpenNetCF se pasa de la licencia Shared Source (que usa mayormente Microsoft en sus proyectos dónde libera código fuente) a una licencia más abierta como es la MIT la cuál es simple de entender y es mucho más permisiva que la anterior.
Por lo comentado en el sitio de OpenNetCF el cambio de licenciamiento será paulatino esto debido a la exigencia de la comunidad y también debido ante los reclamos de la comunidad en el evento MEDC ‘06 según lo que entiendo en este post del blog de la comunidad de OpenNetCF.
Comentarios Recientes