in

UgiMobile.org

Il primo User Group Italiano dedicato a Windows Mobile

Mirco Vanini

Embedded life tips
  • .NET Micro Framework 4.0 Download

    Alcuni giorni fà è stata rilasciata la versione 4.0 del .NET Micro Framework. Questa è la prima release dopo il trasferimento del gruppo sotto la Developer Division. La versione ha un certo numero di nuove funzionalità. In questo link potete trovare la lista completa.

    Il donload è diviso in diversi pacchetti, in dettaglio:

     

    Penso che sia la risposta più “concreta” a chi dava il progetto Micro FW sul viale del tramonto.

  • Microsoft Silverlight for Windows Embedded

    Con il rilascio di Windows CE SR3 una delle features più interessanti è la disponibilità di Silverlight for Windows Embedded. Attenzione è un UI framework che si basa su API Win32/nativo e non su codice gestito. 

  • .NET Micro Framework 4.0 Goes to Beta.

    .NET Micro Framework V4.0 è entrato in beta pubblica! Complimenti al lavoro eseguito dal team visto la riduzione dei mezzi a loro disposizione. Per una lista completa delle features introdotte in questa beta si consiglia di visione il seguente link: .NET Micro Framework : .NET Micro Framework 4.0 Goes to Beta!!!

  • .NET Micro Framework v4.0 coming soon!

    Microsoft ha annunciato la disponibilità al pubblico della versione beta del .Net Micro FW 4.0 nei prossimi giorni. Verrà pubblicata su Microsoft Connect appena disponibile.

  • WiFi 802.11 Wireless for .NET Micro FW

    GHI ha annunciato il primo modulo hardware “Micro Famework WiFi Expansion” che rende disponibile una connessione WiFi su .Net Micro FW 3.0. Il nuovo modulo supporta WEP, WPA, WPA2 attraverso la cifratura hw AES e RSA. il modulo è disponibile per i seguenti prodotti di GHI: ChipworkX ed Embedded Master

  • “Expert .NET Micro Framework” – Second edition

    E’ disponibile la seconda edizione del libro “Expert .NET Micro Framework” di Jens Kühner. (ApressAmazon)

  • GHI: ChipworkX - .NET MF 4.0 Beta

    GHI ha annunciato la disponibilità di una nuova scheda per sviluppo con .NET MF, in questo link potete trovare le specifiche di tale scheda.

    In questo link potete trovare un video che descrive il porting del codice di GHI sulla versione beta del .NET MF 4.0

  • Prossimi meeting XeDotNet

    Di seguito riporto i meeting per il prossimo semestre di XeDotNet

     

    • PATTERN TRACK - 25 Settembre 2009
      • Model-View-ViewModel Applied: real world WPF application
      • Model-View-ViewModel e la UI Composition: WPF Power
    • TFS TRACK - 16 Ottobre 2009
      • Team Foundation Server Database Edition
      • Scrum for Team System, non solo teoria
    • WEB TRACK - 6 Novembre 2009
      • Windows Communication Foundation: normalizzare e controllare i servizi WCF
      • Silverlight do it better: Silverlight, Ria Services e le LOB Applications
    • DATA TRACK - 11 Dicembre 2009
      • Entity Framework 4.0: Promessa mantenuta?
      • Dynamic Data 4.0

     

    Registrazioni e informazioni

  • .NET MF moves to Developer Division

    Dopo aver letto alcuni articoli che paventavano la dismissione del .NET MF o quanto meno il suo disinpegno su questo fronte (Microsoft to turn .Net Micro Framework code, support over to the community) è uscita la risposta sul blog del team di .NET MF (.NET MF moves to Developer Division  - .NET Micro Framework evolution). Vale la pena dargli una letta per chiarirsi le idee :)

  • Virtual Meeting: .NET Micro Framework – Materiale

    Volevo ringraziare tutti i partecipanti che hanno seguito il virtual meeting. Un ringraziamento speciale va ad XeDotNet, Andrea Boschin e Andrea Dottor per l’opportunità e per il supporto che mi hanno dato per la realizzazione dell’evento.

    Di seguito riporto i links del materiale (slide, demo, replay evento, ecc.) dell’evento:

    Slide

    Demo

    AdvanceEmulator

    Replay Evento

  • Virtual Meeting: .NET Micro Framework – Cambio data

    A causa di problemi organizzativi siamo costretti a spostare di alcuni giorni l'evento

    La nuova data sarà: Lunedì 04/05/2009 alle 21:30 (stessa ora)

    Scusandoci per l'inconveniente vi invitiamo a cancellare la vostra iscrizione sulla pagina dell'evento

    qualora non siate più in grado di partecipare nella nuova data.

     

    04 Maggio 2009 - Ore 21:30 - Virtual Meeting: .NET Micro Framework
    Speaker: Mirco Vanini
    Luogo: Live Meeting Online

  • Virtual Meeting: .NET Micro Framework

    Quasi ci siamo! Sto finendo di preparare il materiale per la prima sessione virtuale che terrò con Xe.Net che avrà come argomento “.NET Micro Framework”. Personalmente credo molto in questo nuovo modo di approcciare la programmazione sui microcontrollori. Di certo non è la panacea che risolve tutti i problemi ma sicuramente apre scenari difficilmente pensabili sino a qualche tempo fà. Comunque chi fosse interessato sono aperte le iscrizioni, queste sono le coordinate:

    30 Aprile 2009 - Ore 21:30 - Virtual Meeting: .NET Micro Framework
    Speaker: Mirco Vanini
    Luogo: Live Meeting Online

  • GDI – Leak – WinCE – C#

    Suona strano avere dei memory leak in codice gestito ma sono molto più frequenti di quello che si possa pensare. Alcune settimane fà ho tenuto una sessione di code review presso un mio cliente e ho speso alcuni giorni a sistemare diversi memory leak su una programma scritto in C# per Windows CE.

    Quello che bisogna tenere a mente che tutti gli oggetti GDI (Bitmap, Font, Brush, Pen, ecc.) di C# in realtà sono dei wrapper sopra oggetti Win32. Tali oggetti sono referenziati tramite Handle e devono essere rilasciati. Il GC non lo fà per voi in modo automatico perchè semplicemente non li può gestire. Sopratutto nelle applicazioni mobile, in cui le risorse sono limitate, bisogna porre particolare attenzione a questo.

    Durante la sessione di debug ho utilizzato questo tool (GDIView) che mi ha aiutato a verificare quali handle non venivano rilasciati.

    Alcuni consigli pratici:

    • Richiamare sempre il Dispose di tutti gli oggetti grafici utilizzati, meglio ancora usare sempre la keword “using” per richiamare sempre in modo implicito il Dispose, esempio:
       1: SolidBrush fillBrush = new SolidBrush(Color.White);
       2: graphImage.FillRectangle(fillBrush, 0, 0, UI_CLIENT_WIDTH, UI_HEIGHT);
       3: fillBrush.Dispose();
       4:  
       5: // or
       6:  
       7: using(SolidBrush fillBrush = new SolidBrush(Color.White))
       8: {
       9:     graphImage.FillRectangle(fillBrush, 0, 0, UI_CLIENT_WIDTH, UI_HEIGHT);
      10: }
      11:  

     

    • Quando si riassegna una Bitmap assicurarsi che l’oggetto precedente sia deallocato, esempio:
       1: // wrong
       2: picCapture.Image = new Bitmap(32, 32);
       3:  
       4: // good
       5: if(picCapture.Image != null)
       6:     picCapture.Image.Dispose();
       7: picCapture.Image = new Bitmap(32, 32);

     

    • Quando si utilizza una Image contenuta in una ImageList è bene ricordare quanto esposto su MSDN: “The returned bitmap is a copy of the original image and should be disposed of using the Image.Dispose method.”. In altre parole tutte le get da una ImageList clonano una nuova immagine che deve essere rilasciata tramite un Dispose!
    • Quando si utilizzano direttamente le funzioni native Win32 porre attenzione se queste ritornano una nuova istanza di una risorsa in memoria. Leggere attentamente la loro documentazione!
    • Ogni volta che si alloca memoria tramite funzioni native Win32 è vostra responsabilità deallocarla.
    • Quando si crea un nuovo oggetto non gestito, salvare il riferimento (handle) in una variabile non accessibile dall’esterno. Se per qualsiasi motivo il riferimento viene sovrascritto non sarà più possibile deallocare correttamente la risorsa non gestita.
  • System Meter Chart – .Net Micro Framework

    Finalmente in questi giorni di “festa” sono riuscito a trovare qualche ora di calma da famiglia, figli, clienti, rogne, ecc. per effettuare il porting del controllo System Meter Chart da .NET Compact Framework (CF) a .NET Micro Framework (MF). Questa è stata una buona occasione per “toccare con mano” le diversità tra i due ambienti per quello che riguarda la progettazione di user control. Il .NET MF supporta una versione ridotta (molto) di WPF e la gestione / progettazione dei controlli ovviamente è diversa tra i due ambienti. Nel caso specifico (.NET MF) ho implementato un Control (UIElement) che si espone come oggetto WPF. 

     

    Nelle applicazioni MF con presentation esistono due thread, il primo creato del programma per la gestione degli I/O, periferiche, ecc. mentre il secondo è creato ed utilizzato internamente dal CLR per le varie operazioni di UI (ridisegno degli elementi di UI come i controlli, le finestre, ecc.). Questo secondo thread è chiamato anche Dispatcher e il suo scopo è quello di accedere in modo “sicuro” ai vari elementi della UI. Per maggiori informazioni vi consiglio di leggere 'Using the Dispatcher’.

    L’esempio di utilizzo del controllo usa un timer per l’assegnazione di valori random da 0 a 100. Essendo il timer asincrono rispetto all’interfaccia utente, per le operazioni di invalidate interne del controllo, è necessario chiamare BeginInvoke  per far si che il controllo grafico sia acceduto dal thread principale. La scelta di BeginInvoke è preferibile rispetto a Invoke così da poter liberare il thread del timer al più presto senza attendere il termine dell’esecuzione del gestore dell’evento.

    L’esempio utilizza i 5 tasti presenti nell’emulatore del .NET MF, in dettaglio:

    • Tasto Up abilita la visualizzazione in “Stick Mode”
    • Tasto Down abilita la visualizzazione in “Line Mode”
    • Tasto Left abilita la visualizzazione in “NoGrid”
    • Tasto Right abilita la visualizzazione in “Grid”
    • Tasto Select abilita / disablita la visualizzazione del Gradient

    Di seguito riporto alcune immagini delle modalità supportate dal controllo

     

    Non nego che sono sempre più entusiasta del MF, penso solo a quanto codice avrei dovuto scrivere per realizzare lo stesso controllo su un’altra tipo di scheda non MF magari con un compilatore C++ proprietario. Seconda osservazione, la portabilità del codice da una piattaforma MF all’altra, infatti nell’esempio non ho utilizzato nulla di proprietario della mia scheda GHI ma solo chimate “standard” del MF 3.0. Come ultimo punto vorrei rimarcare l’integrazione del MF con Visual Studio,  si riesce a sviluppare ed eseguire il debugging dell’applicazione sia con l’emulatore che direttamente sulla scheda collegata via USB. Questo permette l’analisi sotto debugger di scenari che difficilmente sarebbero ripetibili tramite un emulatore e con una serie di comodità come solo i progammatori di Visual Studio sono abituati.  Ovviamente le schede che supportano MF non sono schede su cui la battaglia si gioca sui centesimi ma quello che da a disposizione MF ripaga anche il relativo costo.

    In questo link potete scaricare lo zip dei sorgenti del programma di esempio.

  • Community Meeting - .NET Compact Framework - Slide e Demo

    Anche se in ritardo ho messo in linea il materiale del community meeting del 04.12.2008. Qui potete scaricare sia le slide che le demo

More Posts Next page »
Powered by Community Server (Commercial Edition), by Telligent Systems