DevExperience

.Net Framework, Embedded Systems & Design Patterns Paolo Patierno's Blog
hURL : il tester online per i nostri servizi RESTful !

hurl

Spesso per testare il funzionamento di un servizio RESTful, siamo costretti ad installare un plugin per il nostro browser oppure ad utilizzare uno strumento a riga di comando come cURL.

Grazie ad hURL, abbiamo un servizio completamente online che ci permette di eseguire tutte le richieste HTTP principali impostandone gli headers ed eventualmente i parametri nella query string oppure un body. A seguito della richiesta, ci verrà proposta la risposta del servizio.

Posted: 19 mag 2012 17:23 da Paolo | con no comments
Inserito sotto: ,
Pachube diventa Cosm !

cosm

Il famoso data logger online per la realizzazione di applicazioni “Internet Of Things” è diventato Cosm ! Dopo l’acquisizione da parte di LogMeIn, il team di Pachube non ha proferito parola riguardo la trasformazione che era in atto fino all’attuale ufficializzazione. Come riportato sullo stesso sito, si è deciso in primo luogo di cambiare nome (più facilmente pronunciabile…e memorabile a detta loro !) e di fornire anche un nuovo design per i servizi che sono stati comunque migliorati. L’obiettivo è sempre lo stesso, favorire l’interconnessione tra i dispositivi e lo scambio dati tra di essi su scala mondiale (oggi è oramai di moda il concetto di Cloud).

Per quanto riguarda gli sviluppatori che già utilizzano tale piattaforma, nelle vesti dell’ormai ex Pachube, viene garantita la retrocompatibilità con gli URL e le RESTful APIs. Potrebbe accadere che in un futuro prossimo, l’unico passo da dove compiere sarà la trasformazione di ogni tipo di riferimento a “pachube.com” in “cosm.com” nelle nostre applicazioni.

Windows Embedde Compact v. Next ed il .Net Compact Framework

Finalmente una buona notizia, su quello che sarà il futuro di Windows Embedded Compact ed il .Net Compact Framework.

Al seguente link, si apprende che la piattaforma embedded per gli OEM non è stata abbandonata dalla Microsoft e che per il 1° quarto del 2013 è previsto il rilascio di Windows Embedded Compact v. Next che confermerà alcune caratteristiche dell’attuale versione (Windows Embedded Compact 7) aggiungendo delle novità :

  • Basato sul core di Windows CE, quindi hard real-time e footprint minimo;
  • Supporta le CPU x86, ARM v6T2 e ARM v7;
  • Sviluppo nativo in C++ e gestito in C# attraverso l’utilizzo di Visual Studio 11;
  • Aggiornamento per il .Net Compact Framework;
  • Avvio veloce del sistema (2 secondi dal power-on);
  • Aggiornamento del kernel con miglioramenti nelle performance del file system;
  • Ottimizzazioni e novità per lo sviluppo della UI con Silverlight ed attraverso Expression Blend;

Non so quanto la notizia possa essere considerata ufficiale ma almeno fa intuire che Microsoft non ha completamente abbandonato gli OEM che non sviluppano solo tablet e smartphone !

Posted: 10 mag 2012 8:45 da Paolo | con no comments
Inserito sotto: ,
WP7 Tango : FAS per i device con 256 MB di RAM

Diversamente da come era stato annunciato, anche per i device con 256 MB di RAM è supportato il FAS (Fast Application Switching) nella versione Windows Phone 7 “Tango”.

La notizia è confermata dall’aggiornamento della documentazione ufficiale Microsoft su MSDN che riporta testualmente :

“Fast Application Switching is supported on 256-MB devices. However, because keeping applications in a dormant state for Fast Application Switching is dependent on the phone’s available memory, an application running on 256-MB devices will be terminated and tombstoned more often and more quickly than the same application running on a phone with more memory”

Ovviamente, poichè il device ha meno memoria RAM, ogni applicazione rimane nello stato di Dormant meno frequentemente e passa più facilmente nello stato di Tombstoned.

Un test interessante è stato eseguito anche utilizzando l’emulatore per i device con 256 MB di RAM contenuto nel nuovo SDK 7.1.1; per questo vi rimando al seguente link.

Posted: 28 mar 2012 8:46 da Paolo | con no comments
Inserito sotto:
Rilasciato il Windows Phone SDK 7.1.1

E’ stato rilasciato ufficialmente l’aggiornamento dell’SDK per Windows Phone alla versione 7.1.1, ossia la versione definitiva della CTP già rilasciata il mese scorso.

Con questo aggiornemento è possibile :

  • sviluppare applicazione per i device con 256 MB di RAM (come previsto con l’aggiornamento Tango del sistema operativo);
  • sviluppare con la Consumer Preview di Windows 8;

Per quanto riguarda il primo punto, vengono addirittura forniti due emulatori differenti per dispositivi con 512 MB e 256 MB di RAM.

Per tutti i dettagli, vi rimando al link sul blog ufficiale.

Posted: 27 mar 2012 8:00 da Paolo | con no comments
Inserito sotto:
WP7 : HttpWebRequest e la cache interna

Forse non tutti sanno che la classe HttpWebRequest utilizza una propria cache interna per tutte le richieste che via via vengono eseguite durante il suo utilizzo.

Accade che, eseguendo una richiesta sempre al medesimo URL, l’oggetto HttpWebRequest istanziato non esegue effettivamente la richiesta (l’ho rilevato mediante Wireshark) ma bensì ritorna immediatamente il contenuto della richiesta fatta in precedenza allo stesso URL. Questo comportamento è, appunto, dovuto alla cache interna di cui la classe è dotata.

Su Windows Phone 7, non esiste la possibilità di modificare l’utilizzo della cache attraverso le cache policies come accade nel .Net Framework ma è necessario sopperire a questa mancanza attraverso un workaround.

   1: string requestUrl = String.Format(url + "&{0}", DateTime.Now.Ticks);
   2: HttpWebRequest request = HttpWebRequest.CreateHttp(requestUrl);
   3: request.BeginGetResponse(new AsyncCallback(HandleResponse), request);

Attraverso il codice precedente, si evince che il workaround consiste nell’aggiungere un parametro casuale nella query string dell’URL desiderato, in modo da avere di volta in volta un URL risultante diverso e forzare la richiesta. In questo caso, la casualità è determinata dai ticks del sistema ma potrebbe essere utilizzata anche legata alla generazione di un Guid. Tipicamente, questo parametro sarà ignorato dal web server ma servirà dal lato del device per “simulare” la richiesta ad un URL differente.

Sicuramente la soluzione non appare molto elegante ma a quanto pare è l’unica possibile…nell’attesa di piacevoli smentite !

Posted: 25 mar 2012 21:45 da Paolo | con no comments
Inserito sotto: ,
Windows 8 Consumer Preview e Visual Studio 11 Beta

Finalmente, come già ampiamente annunciato da Microsoft, da oggi sono stati resi disponibili per il download sia Windows 8 Consumer Preview che Visual Studio 11 Beta !

win_8_consumer

 

visual_studio_logo

 

Che ci fate ancora qui a leggere questo post !?? Correte a scaricarli !

Posted: 29 feb 2012 21:55 da Paolo | con no comments
Inserito sotto: ,
Microsoft : nuovo logo in stile Metro

logo11

Ormai lo stile Metro della UI è diventato il fulcro dello stile Microsoft….da Windows Phone 7 al futuro Windows 8 (e quindi anche Windows Phone 8)…diventerà anche lo stile per il nuovo logo.

Nuovo_Windows_8_logo1

Sarà anche “piatto” come asseriscono in molti ma a me piace da morire….ed a voi ?

Posted: 19 feb 2012 22:36 da Paolo | con no comments
Inserito sotto: , ,
WP7 SDK 7.1 : come forzare il tombstoning durante il debug

Con il passaggio dalla versione di Windows Phone 7 (NoDo) a quella attuale 7.5 (Mango), è stato introdotto il Fast Application Switching grazie il quale il passaggio tra più applicazioni “contemporaneamente” aperte è stato reso molto più veloce.

Ciò è reso possibile dal fatto che, premendo il pulsante Back a partire dalla prima pagina della nostra applicazione, quest’ultima non va direttamente nello stato di Tombstoned ma bensì nello stato di Dormant ed il sistema operativo ne tiene attivo lo stato interno in memoria. Ovviamente, la memoria viene comunque liberata quando il numero delle applicazioni aumenta e se il quantitativo di memoria libera si riduce drasticamente; in tal caso, l’applicazione passa dal Dormant al Tombstoned.

Tombstoning-PreMango
WP7 - Pre Mango

Tombstoning-Mango
WP7.5 - Mango

A causa di questa funzionalità, con il nuovo SDK 7.1 (per Mango), per poter testare se le operazioni di salvataggio stato e di ripristino della nostra applicazione funzionano correttamente nel caso si verifichi il tombstoning, è necessario attivare un’opzione di debug nel progetto. In caso contrario, il sistema operativo porterà l’applicazione in stato di Dormant ed alla sua riattivazione ritroveremo comunque lo stato della nostra pagina già pronto senza necessità di alcun intervento da parte nostra.

Per attivarlo, basta andare nelle proprietà del progetto, nella scheda Debug ed attivare la checkbox “Tombostone upon deactivation while debugging”.

tomb

Ricapitolando…attivando tale opzione, la nostra applicazione passerà direttamente nello stato di Tombstoned, con la necessità di eseguire da codice il salvataggio e ripristino successivo del proprio stato; disattivandola, viceversa, passerà nello stato di Dormant lasciando inalterato il proprio stato alla sua riattivazione.

Posted: 11 feb 2012 17:03 da Paolo | con no comments
Inserito sotto:
Cambiare la skin dell’emulatore Windows Phone 7

Stufi della solita skin dell’emulatore di Windows Phone 7 ?

Su CodePlex è possibile scaricare il Windows Phone 7 Emulator Skin Switcher che mette a disposizione la possibilità di modificare la skin dell’emulatore scegliendo tra numerosi modelli di smartphone attualmente in commercio.

Una volta installato ed avviato, ci basterà semplicemente selezionare uno degli skin visualizzati ed il gioco è fatto !

skin

Questo è il mio emulatore Nokia Lumia 800 !!

lumia

Posted: 10 feb 2012 18:04 da Paolo | con no comments
Inserito sotto:
Un trucco per avere l’Intellisense sull’InputScope nello XAML

La tastiera di WP7 è in grado di visualizzare caratteri differenti in base al tipo di informazione che vogliamo far acquisire dalla nostra applicazione. La modalità di visualizzazione può essere cambiata impostando la proprietà InputScope messa a disposizioni dai TextBox e PasswordBox.

   1: <TextBox x:Name="Text" Height="75"/>
   2: <TextBox x:Name="Phone" InputScope="TelephoneNumber" Height="75"/>
Nell’esempio precedente, il primo TextBox visualizzerà il layout standard della tastiera mentre il secondo permetterà la visualizzazione dei tasti numerici per facilitare l’inserimento di un numero telefonico.
 
text phone

L’elenco dei valori che è possibile specificare per l’InputScope sono numerosissimi e purtroppo l’Intellisense non ci viene in aiuto….a meno che….

… a meno che non utilizziamo la seguente modalità, molto più prolissa, di settare l’InputScope.

   1: <TextBox Height="75">
   2:     <TextBox.InputScope>
   3:         <InputScope>
   4:             <InputScopeName NameValue="TelephoneNumber"/>
   5:         </InputScope>
   6:     </TextBox.InputScope>
   7: </TextBox>

inputscope

Posted: 10 feb 2012 17:32 da Paolo | con no comments
Inserito sotto:
WP7 : bug sul Reminder.NavigationUri ad applicazione avviata

Utilizzando la classe Reminder con l’SDK per Windows Phone 7.5 (Mango), ho riscontrato un bug (se così si può chiamare) relativamente alla proprietà NavigationUri ed al suo funzionamento.

Tale property permette di impostare una pagina della nostra applicazione verso la quale poter navigare nel momento in cui scatta il reminder e l’utente clicca su di esso.

Ebbene, ho constatato che se il reminder scatta quando la nostra applicazione è già in aperta, la navigazione verso l’uri impostato non funziona. Viceversa, funziona correttamente quando siamo fuori dalla nostra applicazione.

Posted: 6 feb 2012 20:11 da Paolo | con no comments
Inserito sotto:
TinyCLR.it partecipa all’Hack Reality !

header2

whymca-logo

Ho il piacere di comunicarvi che la community TinyCLR.it, di cui faccio parte, parteciperà all’ Hack Reality che si terrà il prossimo 4 Febbraio a Bologna presso il CNR.

Si tratta di un hackathon organizzato da WhyMCA ed orientato all’interazione tra mobile e realtà. Ci saranno numerose tecnologie in gioco, dall’augumented reality con ARchitect al Kinect, da OpenPicus ed Arduino fino al .Net Micro Framework, passando per Lego Mindstorms.

Ovviamente TinyCLR.it parteciperà con un progetto basato sulla piattaforma embedded di Microsoft !

Purtroppo io non potrò esserci ma fino a quella data darò il mio apporto per le idee e la realizzazione del progetto…

Posted: 11 gen 2012 17:15 da Paolo | con no comments
Inserito sotto: ,
μPLibrary : un driver per un RTC (Real Time Clock)

Un Real Time Clock è un dispositivo la cui funzione è quella di orologio all’interno di un sistema embedded. Esso conteggia il tempo reale sfruttando un oscillatore al quarzo anche quando il sistema non è alimentato, grazie ad una batteria autonoma. Uno degli RTC più conosciuti è il DS1307 prodotto dalla Maxim.

E’ proprio per questo dispositivo che ho sviluppato un driver managed aggiungendolo nella mia libreria μPLibrary, alla versione 1.5, per il .Net Micro Framework. Per il mio sviluppo, ho utilizzato il modulo della Sparkfun al seguente link che include l’RTC in questione ed il vano per la batteria di backup, oltre all’oscillatore al quarzo. Ciò che manca sul modulo, sono le resistenze di pull-up da collegare ai pin SDA ed SCL (che dovrete aggiungere esternamente), considerando che il DS1307 può interfacciarsi con un qualsiasi microprocessore mediante un’interfaccia I2C

.DS1307 Real Time Clock Module

Il driver sviluppato definisce la classe DS1307, la quale espone banalmente tre metodi :

  • ConfigureSquareWave : permette di configurare un’eventuale onda quadra che il DS1307 può fornire su uno dei suoi pin di output (SQW/OUT);
  • SetDateTime : esegue il set della data/ora nella memoria interna del chip;
  • GetDateTime : permette di ricavare la data/ora corrente dal chip;

Come sempre ho aggiornato il progetto della μPLibrary sul sito CodePlex ma potete scaricare la libreria utilizzando il plugin Nuget per Visual Studio. La libreria è sempre presente anche nella Nuget Gallery.

Posted: 5 gen 2012 10:42 da Paolo | con no comments
Inserito sotto: ,
μPLibrary : un driver per un sensore di temperatura

Anno nuovo…funzionalità nuove !

La μPLibrary si arricchisce di un nuovo driver per il sensore di temperatura TMP102 della Texas Instruments. Si tratta di un componente digitale a bassa potenza al quale è possibile interfacciarsi mediante protocollo I2C oppure SMBus (un sottoinsieme dell’ I2C). E’ ovviamente caratterizzato da un convertitore analogico-digitale (ADC) con una risoluzione di 12 bit (che determina una precisione di 0,0625 °C) ed ha un’accuratezza di circa 0,5 °C.

Il driver che ho sviluppato sfrutta la potenzialità e la semplicità del .Net Micro Framework per quanto riguarda l’interfacciamento con componenti attraverso il protocollo I2C sfruttando la classe I2CDevice (namespace Microsoft.SPOT.Hardware). La classe implementata, TMP102, fornisce un costruttore e delle properties attraverso le quale poter inizializzare e settare i principali parametri di funzionamento del sensore oltre al semplice metodo Temperature() che ovviamente restituisce la temperatura rilevata.

Considerando le dimensioni estremamente ridotte del componente (nell’ordine dei 2 mm), per poterlo utilizzare è utilissima la TMP102 breakout board distribuita dalla Sparkfun. E’ proprio ciò che ho utilizzato io per questo sviluppo insieme alla mia board Netduino.

TMP102-perspective

Come sempre vi rimando al link del progetto ufficiale su Codeplex e vi ricordo che la libreria è disponibile anche attraverso Nuget.

Posted: 1 gen 2012 21:48 da Paolo | con no comments
Inserito sotto: ,
Più Post Pagina seguente »