Siamo giunti all’ultima puntata di questo tutorial che ci ha guidato attraverso la realizzazione di un componente proprietario (utilizzando la M2Mqtt library come esempio) per Platform Builder e la relativa inclusione nell’immagine di Windows Embedded Compact 2013. In questo ultimo post vedremo in che modo è possibile utilizzare questo componente in un’applicazione managed di esempio eseguendone anche il debugging.
SDK e Application Builder
Quando realizziamo un’immagine di Windows Embedded Compact 2013 che dobbiamo fornire al team di sviluppo software che realizzerà l’applicazione di alto livello per il target device, dobbiamo necessariamente mettere a disposizione anche il relativo SDK. Quest’ultimo contiene tutti gli header files e le librerie statiche che gli sviluppatori potranno utilizzare per la realizzazione di applicazioni in codice nativo, evitando di utilizzare delle API che non abbiamo incluso nella nostra immagine. Tipicamente non avremmo bisogno dell’SDK nel caso applicazioni managed con il .Net Compact Framework ma purtroppo senza alcun SDK installato, Visual Studio 2012 non rende disponibile alcun template per applicazioni basate su Windows Embedded Compact 2013. Tale SDK può essere creato e generato mediante Platform Builder cliccando su SDKs e poi su “Add New SDK”; il sistema di build produrrà un file .MSI da distribuire a chiuque ne abbia bisogno.
Oltre all’SDK, il team di sviluppo ha bisogno di installare Application Builder per Windows Embedded Compact 2013 che è possibile scaricare qui.
Per poter supportare il debugging attraverso Application Builder, è necessario includere il corrispondente componente “Application Builder Debugging Support” del catalog items nell’immagine e che possiamo trovare in Core OS –> Windows Embedded Compact –> Applications and Services Development –> Diagnostics and Debugging Tools.
Utilizzando questi due strumenti, chi ha il compito di sviluppare le applicazioni per il target device e non il sistema operativo, non ha alcun bisogno di installare Platform Builder.
Sviluppo, distribuzione e debug di un’applicazione managed
Dopo aver installato l’SDK (generato a partire dall’immagine realizzata fino a questo punto del tutorial) ed Application Builder sul PC di sviluppo, avviamo Visual Studio 2012 e selezioniamo il template Visual C# –> Windows Embedded Compact 2013 –> <SDK generato> (nel mio caso VirtualCEPC2013); per il nostro esempio va benissimo una Console Application.
Aggiungiamo un reference all’assembly M2Mqtt (deve essere lo stesso distribuito con il componente M2Mqtt4CE avendo un Public Key Token) ma impostiamo la proprietà “Copy Local” a False, in modo che esso non sarà distribuito con l’applicazione essendo già incluso nell’immagine del sistema operativo.
Siamo pronti per scrivere la nostra applicazione che non farà altro che pubblicare periodicamente un messaggio con un dato random su un topic attraverso l’utilizzo del broker Mosquitto da installare su un PC.
static void Main(string[] args) { Console.WriteLine("Welcome to C# on Windows Embedded Systems"); MqttClient client = new MqttClient(IPAddress.Parse("192.168.1.4")); client.Connect("netcfclient"); Random random = new Random(); while (true) { int data = random.Next(10); client.Publish("/data", Encoding.ASCII.GetBytes(data.ToString())); Thread.Sleep(1000); } }
Avviamo il target device (nel mio caso Virtual PC) e ricaviamone l’indirizzo IP assegnato per impostarlo nelle proprietà del progetto della nostra applicazione per la connessione al Core Connectivity.
Impostiamo un breakpoint alla prima istruzione ed avviamo l’applicazione; subito dopo il deploy vedremo il debugger funzionare correttamente e permetterci di eseguire l’applicazione step by step direttamente sul target !