Avrete capito dagli ultimi post che ho scritto che attualmente mi occupo dello sviluppo su dispositivi mobile, Pocket PC 2003 e Windows Mobile: questo vuol dire finalmente tanto .NET e C#, sfruttando il Compact Framework con tutti gli annessi e connessi. La cosa più affascinante è sentir parlare di classi astratte, di metodi factory e di tutti concetti che nell'azienda dove ero prima semplicemente mi sognavo. :-)
Oggi ho cominciato ad ingranare sul serio. E' difficile inserirsi in un progetto già in fase di sviluppo, mi devo ritagliare il mio spazio, e soprattutto inserirmi nel team che definire vulcanico è un eufemismo.
Sviluppando su palmare, è essenziale sfruttare al meglio l'emulatore offerto da Visual Studio 2005. L'emulatore è piuttosto affidabile, e segue lo stesso comportamento di un palmare vero e proprio. Ci sono ovviamente alcuni vantaggi nell'usare un emulatore piuttosto che un palmare vero e proprio:
- non consumate batterie di alcun tipo
- se dovete digitare qualcosa sull'emulatore, potete farlo usando la tastiera
Con Visual Studio 2005 potete persino simulare la connessione tramite ActiveSync. Ieri pomeriggio ho perso un pochino di tempo su questo. Il mio codice deve scaricare da un server Web un file zip e salvarselo in locale per dezipparlo e fare qualche lavoretto sui files contenuti nel file compresso. Il codice è simile a quanto riportato qui di seguito:
public void DownloadPackage()
{
int byteRead = 0;
int totalByteRead = 0;
int offset = 0;
int packet = 1024;
Uri url = new Uri(@"http://server/download.zip");
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
Stream odlDownload = myReq.GetResponse().GetResponseStream();
...
...
}
Una volta ottenuto il riferimento allo stream, è possibile scaricare il file via http. Il problema è: come poter andare su Internet (o sulla propria LAN) con l'emulatore del Pocket PC? Per default, l'emulatore non è connesso alla rete, e quindi non può accedere ad http, nemmeno se si tratta di raggiungere un sito Web hostato da IIS sul PC di sviluppo.
La risposta, una volta che la si conosce, è piuttosto semplice. Installiamo innanzitutto ActiveSync sul PC su cui stiamo sviluppando. Poi tiriamo su l'emulatore del Pocket PC premendo F5 da Visual Studio 2005: questa operazione compila il progetto, attiva l'emulatore, fa il deploy della soluzione sul palmare e fa partire l'eseguibile. La soluzione consiste nel connettere il Pocket PC emulato all'ActiveSync sul PC: per farlo, è sufficiente andare su Tools --> Device Emulator Manager, trovare l'emulatore che è in esecuzione, cliccare col destro e cliccare sulla voce Cradle. Se l'ActiveSync sul PC accetta connessioni da USB, vedrete che l'emulatore si connette normalmente come se fosse un palmare reale a tutti gli effetti. Stessa cosa per il PC: l'icona di ActiveSync nella tray-bar diventa verde e dovrebbe partire il wizard che permette la creazione di una relazione tra PC e palmare. Non fatevi troppe menate, impostate la relazione come 'ospite' e siete a posto.