{"id":7,"date":"2006-10-01T14:00:41","date_gmt":"2006-10-01T12:00:41","guid":{"rendered":"http:\/\/blog.rastersoft.com\/index.php\/2006\/10\/01\/programando-para-windows-mobile-5-con-mono\/"},"modified":"2006-10-01T14:00:41","modified_gmt":"2006-10-01T12:00:41","slug":"programando-para-windows-mobile-5-con-mono","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=7","title":{"rendered":"Programando para Windows Mobile 5 con Mono"},"content":{"rendered":"<p>La pol\u00edtica no es la \u00fanica que hace extra\u00f1os compa\u00f1eros de cama: en estos momentos estoy compartiendo mi vida con una PDA con Windows Mobile 5.<\/p>\n<p>La raz\u00f3n es que, por motivos laborales, tengo que escribir un programa para dicho sistema operativo, y aunque los entornos de desarrollo de Micro$oft son conocidos por su gran calidad, la idea de cambiar mi escritorio del trabajo a Windows (con todo lo que ello conlleva: configurar de nuevo el programa de correo, enlaces del navegador, etc) me tiraba mucho para atr\u00e1s. Por eso decid\u00ed realizar el programa con .NET, para lo cual podr\u00eda usar <a href=\"http:\/\/www.mono-project.com\">Mono<\/a> y <a href=\"http:\/\/www.monodevelop.com\">MonoDevelop<\/a> desde GNU\/Linux. Adem\u00e1s podr\u00eda vender la moto de que el mismo programa tambi\u00e9n les funcionar\u00e1 en GNU\/Linux&#8230;<\/p>\n<p>Por supuesto, las cosas no fueron sencillas. El primer problema era conseguir comunicar la PDA con Linux, problema que parec\u00eda resuelto con <a href=\"http:\/\/synce.sourceforge.net\/\">SynCe<\/a> (y su <a href=\"http:\/\/www.synce.org\">Wiki de documentaci\u00f3n<\/a>). Tras un par de pruebas confirm\u00e9 que el driver <strong>ipaq<\/strong> no reconoc\u00eda a la PDA, as\u00ed que me puse a bucear en la p\u00e1gina de <a href=\"http:\/\/www.synce.org\/index.php\/Windows_Mobile_2005_Support\">documentaci\u00f3n para Windows Mobile 5<\/a> y descubr\u00ed que los procesadores Intel PXA27x todav\u00eda no est\u00e1n soportados por un fallo en su controlador USB.<\/p>\n<p>Como no pod\u00eda ser de otra manera, mi PDA ten\u00eda un procesador de esa familia, lo que reduc\u00eda mis opciones a una: usar BlueTooth. Afortunadamente, en la documentaci\u00f3n anterior se explica muy bien como configurarlo, aunque hay un par de detalles que no comentan bien y que hay que tener en cuenta:<\/p>\n<ul>\n<li>Para establecer la conexi\u00f3n no sirve el comando <em>triggerconnection<\/em>, sino que hay que lanzar ActiveSync y escoger <em>Conectar por BlueTooth<\/em> en el men\u00fa.<\/li>\n<li>Una vez conectado toda la comunicaci\u00f3n se realiza a trav\u00e9s del puerto 990 de TCP\/IP, por lo que es necesario abrir en el firewall el acceso a nuestro equipo a trav\u00e9s de la interfaz <em>ppp0<\/em>.<\/li>\n<li>De las dos direcciones IP especificadas en el fichero <em>\/etc\/ppp\/peers\/dun<\/em>, la primera es la que se le asigna a nuestro ordenador y la segunda la de la PDA.<\/li>\n<li>La misma conexi\u00f3n TCP\/IP est\u00e1 disponible para otros programas, aunque en mi caso no puedo usar Internet Explorer para navegar porque se empe\u00f1a en conectar de nuevo mediante alguno de los otros perfiles disponibles.<\/li>\n<li>Parece que no basta con a\u00f1adir el servicio SP (serial port) para que aparezca el ActiveSync en la PDA, sino que tambi\u00e9n tiene que estar el servicio LAN y el DUN.<\/li>\n<li>Al contrario de lo que dice en la <a href=\"http:\/\/synce.sourceforge.net\/synce\/bluetooth.php\">documentaci\u00f3n para BlueTooth<\/a>, hay que lanzar <strong>vdccm<\/strong> y no <strong>dccm<\/strong>. Adem\u00e1s no hay que olvidarse de los par\u00e1metros que aparecen en <a href=\"http:\/\/www.synce.org\/index.php\/Starting_A_Connection\">Iniciando la conexi\u00f3n<\/a>.<\/li>\n<\/ul>\n<p>A\u00f1adir que hay un bug en la pila BlueTooth actual (la que traen Ubuntu Edgy y Debian testing\/inestable) que desactiva el ISCAN nada m\u00e1s lanzar el servicio, por lo que el ordenador no aparecer\u00e1 en la lista de dispositivos BlueTooth de la PDA. Para solucionarlo hay que a\u00f1adir el comando <strong>discovto 0;<\/strong> en la secci\u00f3n <strong>device <\/strong>del fichero <strong>hcid.conf<\/strong>, y cada vez que se inicie la pila BlueTooth (al arrancar el ordenador o hacer un <strong>\/etc\/init.d\/bluetooth restart<\/strong>) ejecutar el comando:<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">dbus-send --system --dest=org.bluez \/org\/bluez\/hci0\norg.bluez.Adapter.SetMode string:discoverable<\/pre>\n<\/div>\n<p>para activar el <strong>ISCAN<\/strong> de nuevo. Podemos comprobar el estado con<\/p>\n<div class=\"mycode\">\n<pre class=\"mycode\">hciconfig -a<\/pre>\n<\/div>\n<p>Por \u00faltimo, para los usuarios de Ubuntu Dapper, a\u00f1adir que la versi\u00f3n de SynCe que trae es demasiado antigua y no soporta Windows Mobile 5, as\u00ed que es necesario bajarse los fuentes desde la p\u00e1gina y recompilar.<\/p>\n<p>La parte de como escribir programas para la PDA la dejo para una segunda entrada, que esta ya es demasiado larga.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La pol\u00edtica no es la \u00fanica que hace extra\u00f1os compa\u00f1eros de cama: en estos momentos estoy compartiendo mi vida con una PDA con Windows Mobile 5. La raz\u00f3n es que, por motivos laborales, tengo que escribir un programa para dicho sistema operativo, y aunque los entornos de desarrollo de Micro$oft son conocidos por su gran &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=7\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Programando para Windows Mobile 5 con Mono<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,7],"tags":[],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-programacion","category-tutoriales"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":0,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}