Technology Experience

Contenuti gestiti da Igor Damiani
posts - 949, comments - 2741, trackbacks - 15120

My Links

News

  • Questo blog si propone di raccogliere riflessioni, teoriche e pratiche, su tutto quello che riguarda il world-computing che mi sta attorno: programmazione in .NET, software attuale e futuro, notizie provenienti dal web, tecnologia in generale, open-source.

    L'idea è quella di lasciare una sorta di patrimonio personale, una raccolta di idee che un giorno potrebbe farmi sorridere, al pensiero di dov'ero e cosa stavo facendo.

    10/05/2005,
    Milano

Archives

Post Categories

Generale

Connettere l'emulatore Pocket PC via ActiveSync

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:

  1. non consumate batterie di alcun tipo
  2. 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.

Print | posted on Friday, April 6, 2007 9:24 AM | Filed Under [ Sviluppo .NET ]

Feedback

Gravatar

# Re: Connettere l'emulatore Pocket PC via ActiveSync

Igor, un paio di consigli:
- non è proprio vero che l'emulatore si comporta esattamente come un palmare, ho avuto brutte esperienze in tal senso di un'applicazione che crashava, ricordati che emulare un ambiente arm su un x86 non è esattamente come andare su un vero arm, ogni tanto testa tutto su un vero palmare, soprattutto se utilizzi pinvoke, se invece usi il CF in maniera "pura", i problemi saranno sicuramente di meno
- non lasciarti condizionare dalla responsività dell'applicazione sull'emulatore, sul palmare andrà sicuramente più piano, sii parsimonioso nelle risorse di sistema che usi, i palmari, quelli veri sono delle brutte bestie, alcuni hanno per esempio (come il mio) la possibilità di mettere la cpu in power save, limita le prestazioni per consumare meno batteria, spesos non sappiamo dove verranno installate le applicazioni che sviluppiamo e con quali altre applicazioni vengono fatte girare (ad esempio sui phone edition, il telefono ciuccia risorse in maniera devastante quando utilizzato)
- connettività: a meno che non sia un'applicazione pensata per il wi-fi, a volte l'emulatore è fuorviante per quanto riguarda la connettività (perchè passa attraverso la lan e l'adsl del pc...), dà una falsa sensazione di "velocità". anche qui, prova l'applicazione su un palmare vero, magari mettendoti nelle condizioni peggiori, cioè in GPRS (vabbè dai il gsm te lo risparmio...)

Tutte cose con cui mi sono scontrato aihmè in passato e su cui ho pianto lacrime amare... ;-)
saluti
4/6/2007 10:41 AM | Roberto Messora
Gravatar

# re: Connettere l'emulatore Pocket PC via ActiveSync

Quoto in pieno Roberto, sviluppare su PPC è una goduria... finchè non cominci a fare il deploy su dispositivi veri :(
4/6/2007 12:10 PM | Diego Guidi
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET