Month: September 2012

ioProgrammo : Il pattern MVVM su Windows Phone ? Si può !

2063.4-179g_37ACB436

Anche questo mese su “ioProgrammo” (n. 179, Ottobre 2012) c’è un mio articolo dedicato all’applicazione del pattern MVVM (Model View ViewModel) in Windows Phone.

Si parte dal confronto tra i pattern MVC (Model View Controller) e MVP (Model View Presenter) fino ad arrivare al PM (Presentation Model) da cui deriva l’MVVM. Nell’ambito di quest’ultimo vengono affrontate le singole componenti dal Model, passando per il ViewModel (con notifications e command) fino alla View sviluppata in XAML.

Anche questa volta…mi raccomando…non perdetevelo !

Internet Of Things e uPLibrary : client per la piattaforma ThingSpeak

Con l’aumentare dei dispositivi embedded “intelligenti” nel mondo, comincia ad assumere un’importanza sempre maggiore il concetto di Internet Of Things (IoT), un neologismo attraverso il quale si vuole esprimere la capacità che hanno tali dispositivi (brutalmente “le cose”) nel potersi connettere alla rete mondiale Internet e scambiarsi informazioni. In quest’ottica entrano in gioco una serie di piattaforme online che fornisco il servizio di upload e storicizzazione delle informazioni in tempo reale per poi renderle disponibili ad altri dispositivi che ne facciano richiesta. L’architettura a cui si orientano tali piattaforma è ovviamente quella RESTful in cui i dati raggruppati in canali e feeds sono raggiungibili attraverso il concetto di URL.

Una delle principali piattaforme è sicuramente ThingSpeak, per la quale ho implementato un client per il .Net Micro Framework e che ho incluso nella mia libreria uPLibrary (giunta alla versione 1.8.0.0) presente su CodePlex, nel namespace uPLibrary.IoT.ThingSpeak.

upthings

La classe principale è ThingSpeakClient, che mette a disposizione l’unico metodoUpdate(string writeApiKey, DataEntry dataEntry) per l’upload di un data entry nel proprio canale dati che abbiamo creato sul sito di ThingSpeak. Il data entry è rappresentato attraverso l’omonima classe DataEntry che permette di specificare i valori dei campi del feed associato al canale, un messaggio di stato, la posizione (latitudine, longitudine ed altezza) nonché un account Twitter con relativo messaggio da “twittare” al caricamento del dato online.

Per quanto riguarda la lettura dei dati, sono disponibili più metodi di read ossiaReadFeeds()ReadLastFeedEntry()ReadField() e ReadLastFieldEntry() che forniscono un’ampia scelta e rispettivamente per un intero feed (tutti i campi), l’ultima entry di un feed (tutti i campi), tutti i valori di un campo nel canale ed infine l’ultima entry di uno specifico campo nel canale. Ciascuno di essi ritorna una collection di DataEntry con le informazioni lette dal server online. Inoltre, è disponibile il metodo ReadStatusUpdate()per leggere l’ultimo aggiornamento di stato del canale.

Un esempio di applicazione è banalissimo; immaginando di dover caricare online una qualsiasi grandezza fisica rilevata (es. temperatura, pressione, umidità, …) il codice di esempio potrebbe essere il seguente.

public static void Main()
{
    ThingSpeakClient client = new ThingSpeakClient(false);

    var data;
    DataEntry dataEntry = new DataEntry();
    while (true)
    {
        // rilevamento del dato
        // data = ....
        dataEntry.Fields[0] = data.ToString();
        client.Update("writeApiKey", dataEntry);

        Thread.Sleep(15000);
    }

}

Altrettanto semplice può considerarsi l’esempio di lettura dei dati dal server.

public static void Main()
{
    while (true)
    {
        ArrayList dataEntries = client.ReadLastFieldEntry(null,
                                            <channeId>, <fieldId>);

        // consumo di data entries...

        Thread.Sleep(15000);
    }
}
Insomma, grazie ad un’iscrizione gratuita su ThingSpeak ed utilizzando il mio client, avrete la possibilità di condividere online tutti i dati letti dai sensori dei vostri prototipi, magari realizzati con Netduino !

Ovviamente, il tutto è disponibile su Codeplex ed è stato anche aggiornato nella Nuget Gallery!

Visual Studio 2012 : Windows Embedded Compact e .Net Micro Framework

2045.0827_vs2012_PNG-550x0_5C1ED859

Finalmente in Visual Studio 2012 tutto ciò che riguarda lo sviluppo per il mondo embedded con gli strumenti Microsoft sembra essere rientrato al proprio posto. La nuova versione dell’IDE supporterà pienamente lo sviluppo su Windows Embedded Compact, che avevamo perso con Visual Studio 2010, includendo anche il nuovo .Net Compact Framework 3.9 che pare abbia numerose migliorie soprattutto in termini di performance; incluso anche il supporto per C++ 11. Un approfondimento lo trovate nel video ufficiale di Andrew Pardoe e David Campbell.

A questa notizia, si aggiunge anche quella di Colin Miller sul suo blog relativa al supporto inVisual Studio Express 2012 for Desktop per il .Net Micro Framework 4.3 ed il .Net Gadgeteer 4.3 che saranno rilasciati in un futuro non molto lontano.

Snoozy sul Windows Phone Marketplace !

1732.primaryImage_193E171C

Da oggi è stata pubblicata sul marketplace di Windows Phone la mia nuova app Snoozy, attraverso la quale i pendolari che vogliono “schiacciare un pisolino” durante il loro tragitto in pullman o in treno verso il proprio luogo di lavoro, non correranno più il rischio di perdere la fermata a cui scendere !

Per maggiori informazioni vi rimando al link sul market.

Visual Studio 2012 e Windows Embedded Compact

0827.vs2012

 

Dopo aver supportato Windows CE 6.0 in Visual Studio 2005 e Windows Embedded Compact 7 in Visual Studio 2008, la Microsoft ha creato un buco in Visual Studio 2010 non fornendo alcun supporto per la piattaforma embedded, costringendo gli sviluppatori ad avere una doppia installazione dell’IDE. Con Visual Studio 2012 è stato annunciato ufficialmente il supporto per la prossima versione di Windows Embedded Compact e possiamo ascoltare la dichiarazione in questo video.

Per saperne di più non ci resta che aspettare l’evento con il lancio ufficiale del 12 Settembre !