Month: November 2010

Windows Phone 7 : una serie su channel9 per gli sviluppatori ed un nuovo libro per gli utilizzatori

4265.channel9_wp7_series_thumb_509204BF

Posto il link ad una serie pubblicata su channel9 sullo sviluppo per Windows Phone 7 che può essere un buon punto di partenza per iniziare a sviluppare applicazioni per la nuova piattaforma phone di Microsoft.

Windows Phone 7 : development for absolute beginners

4113.wp7_book_plainsimple_thumb_47955AF6

Inoltre, è stato pubblicato il nuovo libro “Windows Phone 7 Plain & Simple” di Michael Stroh. E’ completamente a colori e con numerosi screenshot che con semplici passi ci guida alla scoperta delle potenzialità di Windows Phone 7 : fare o rispondere alle chiamate, leggere ed inviare emails e messaggi, lavorare con il calendario, utilizzare il browser, ascoltare musica e vedere video e sviluppare giochi con XNA.

Esso è disponibile in vendita online da ieri ed è pubblicato dalla O’Really al seguente link.

Windows Embedded CE 6.0 R3 QFEs : Ottobre 2010

Sono stati rilasciati i QFEs di Ottobre 2010 per Windows Embedded CE 6.0 R3 e sono scaricabili al seguente indirizzo :

Windows Embedded CE 6.0 Monthly Update October 2010

Riporto di seguito i principali fix, come descritto nel file allegato al download :

Component:  COMM

  • 101028_KB2384080 – When using RNDIS client and DHCP allocator bound to the USB interface, an error may occur when USB cable is unplugged.

Component:  DirectX

  • 101004_KB2417732 – The current media time is not correctly calculated by the current rate.

Component:  Fonts

  • 101022_KB2437384 – Rotated text may not render correctly due to an issue with the font.

Component:  FSD

  • 101029_KB2383946 – Calls to ScanVolumeEX() may fail when the volume to be scanned is formatted as EXFAT and has a directory structure that is at least 5 levels deep.

Component:  IE

Component:  RDP

  • 101006_KB2431798 – This update addresses an issue with mouse cursor corruption when connecting from a Windows Embedded CE 6.0 R3 device to Windows 7 over RDP.

CEDriverWiz : plugin per VS2005 su CodePlex

Finalmente l’utilissimo CEDriverWiz, che permette di automatizzare le noiose operazioni di creazione dello scheletro di uno stream driver con tutta la sua relativa interfaccia, è diventato un plug in per Visual Studio 2005 e quindi per il Platform Builder di Windows CE 6.0.

Esso è disponibile e scaricabile gratuitamente sul sito CodePlex a questo link. E’ stato creato da David Jones ed è stato marcato dalla community Embedded101 nell’ambito della quale lo stesso David collabora.

Una volta installato, è possibile customizzare il menu Tools di Visual Studio 2005, aggiungendo il CEDriverWiz mediante la voce External Tools (e poi Add).

1263.CEDriverWiz_addTools_thumb_34D34B18

Il wizard permette di generare un subproject destinato ad ospitare lo stream driver ed una serie di applicazioni di test per lo stesso. Il tutto viene creato in una sottocartella del nostro progetto per la creazione di un’immagine del sistema operativo in modo da poter essere aggiunto facilmente a quest’ultimo. All’avvio, il wizard richiede semplicemente l’immissione delle tre lettere che costituisco il prefix del nostro driver (XXX) e le sostituisce in tutte le funzioni dell’interfaccia che andrà a creare (XXX_InitXXX_DeInitXXX_Open, …).

2148.CEDriverWiz_main_thumb_3799000B

Il subproject generato ha tutti i registry settings necessari per includere il driver nell’immagine del sistema operativo e per caricarlo allo startup in User Mode. E’ possibile modificare questi settaggi di default per eseguire il driver in Kernel Mode, così come è possibile disattivare il caricamento del driver allo startup e gestirne il load/unload su richiesta, prendendo spunto dalle applicazioni di test generate dal wizard.

Per quanto riguarda le applicazioni di test, esse permettono di :

  • eseguire load/unload dello stream driver su richiesta;
  • aprire, scrivere, leggere e chiudere lo stream driver;
  • utilizzare i codici IOCTL di test, mediante l’invocazione della funzione XXX_IOControl;
  • check del caricamento dello stream driver;

In conclusione è assolutamente uno strumento utile per iniziare lo sviluppo di uno stream driver che permette di risparmiare del tempo nella fase di avvio dell’implementazione, in quanto prepara lo scheletro del driver sul quale poi lavorare.

Secondo me ha un punto debole, legato alla necessità della presenza del .Net Framework 3.5 sul PC in cui lo si vuole installare per poterlo utilizzare. Contrariamente a quanto si possa pensare, non è un punto a favore in quanto CEDriverWiz è uno strumento legato al Platform Builder per Windows CE 6.0 in ambiente Visual Studio 2005 che di default installa il .Net Framework 2.0.

Windows CE 6.0 : SerialPort in .Net CF e stream driver names

In Windows CE, i devices gestiti mediante stream drivers sono acceduti utilizzando le API del file system (CreateFile, WriteFile, …) in quanto visti come dei veri e propri stream. Il Device Manager, che si occupa del caricamento dei drivers quando necessario (all’avvio del sistema o su richiesta), registra tre differenti namespaces per accedere agli stream drivers :

Legacy
Device based
Bus based

Il namespace Legacy prevede che lo stream driver sia indirizzato nella forma XXX[0-9]:, dove XXX rappresenta il prefisso indicativo del driver o tipologia di device (es. COM) e [0-9] è un indice che differenzia la possibilità di utilizzare la medesima istanza del driver per gestire più devices della stessa tipologia (es. COM1, COM2, …) ovviamente con contesti differenti. Tale indice è specificato nel registro di Windows. Questo tipo di namespace ha il limite di poter indirizzare fino a soli 10 devices della medesima tipologia, considerando il vincolo ad un cifra dell’indice. Tale limite viene superato utilizzando il namespace Device based che ha la seguente struttura \$device\XXX[index]. La seconda parte è la medesima della Legacy ma è preceduta dal namespace \$device. Con questo tipo di “indirizzamento” è possibile superare il limite dei 10 device, in quanto l’indice non è vincolato all’uso di una singola cifra. Infine, il namespace Bus based ha la seguente struttura \$bus\[bus_name]_[bus_number]_[device_number]_[function_number] dove però è necessario conoscere il bus a cui è connesso il device (nei casi di assenza di un bus specifico, esso ha tipicamente il valore di BuiltIn, che rappresenta la rootKey del registro di sistema da cui il Device Manager carica i drivers all’avvio).

Ultimamente, ho scoperto che queste tre tipologie di namespaces funzionano perfettamente quando utilizziamo la classe SerialPort su Windows CE 6.0, ovviamente nel caso in cui vogliamo accedere ad una porta seriale. Il namespace Legacy è quello che adottiamo normalmente (omettendo i : finali) ma può essere sostituito dal Device based, qualora dobbiamo accedere ad una porta seriale con indice maggiore di 9.

Legacy :

SerialPort sPort = new SerialPort("COM1");
sPort.Open();
sPort.Write("Hello World !");

Device based :

SerialPort sPort = new SerialPort("\$device\COM1");
sPort.Open();
sPort.Write("Hello World !");

Tutto ciò è garantito dal fatto che il metodo Open della classe SerialPort, al suo interno esegue una chiamata alla CommOpen della mscoree.dll che a sua volta invoca l’APICreateFile di Windows CE (presente nella coredll.dll). Quest’ultima prevede tra i parametri di ingresso il nome del device (o stream driver) a cui accedere, secondo i tre namespaces suddetti.

Windows Phone 7 : PDC2010

2337.pdc2010.bmp-550x0             6646.windowsphone_logo.png-550x0

Da qualche giorno si è concluso il PDC2010 che ho seguito online, in diretta ed in streaming con molto interesse.

Di seguito riporto i link alle sessioni registrate e relative a Windows Phone 7, in particolare allo sviluppo delle applicazioni con Silverlight ed i giochi con XNA :

Building Windows Phone 7 applications with the Windows Azure Platform

Things I Wish I Knew Three Months Ago about Building Windows Phone 7 Applications

Optimizing Performance for Silverlight Windows Phone 7 Applications

Things You Need to Know Before Building XNA Games for Windows Phone 7

Real-World Analysis and Optimization of XNA Framework Games on Windows Phone 7

Buona visione a tutti !