giovedì 28 gennaio 2016

Sviluppo embedded - Velocizzare il tempo di compilazione evitando il Platform Verification Task

Se la compilazione dei tuoi progetti embedded/windows mobile C# impiegano molto tempo con Visual Studio 2008, puoi provare a disabilitare il Platform Verification Task.
Platform Verification Task (PVT) is a post-build validation step to catch the unsupported PMEs before they can result in a runtime exception.
Per disabilitarlo apri il file C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.CompactFramework.Common.targets

Cerca il seguente elemento:
<Target
        Name="PlatformVerificationTask">
        <PlatformVerificationTask
            PlatformFamilyName="$(PlatformFamilyName)"
            PlatformID="$(PlatformID)"
            SourceAssembly="@(IntermediateAssembly)"
            ReferencePath="@(ReferencePath)"
            TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
            PlatformVersion="$(TargetFrameworkVersion)"/>
</Target>

e aggiungi la linea in grassetto:

<Target
        Name="PlatformVerificationTask">
        <PlatformVerificationTask
   Condition="'$(DoPlatformVerificationTask)'=='true'"
           PlatformFamilyName="$(PlatformFamilyName)"
           PlatformID="$(PlatformID)"
           SourceAssembly="@(IntermediateAssembly)"
           ReferencePath="@(ReferencePath)"
           TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
           PlatformVersion="$(TargetFrameworkVersion)"/>
</Target>
Infine rilancia Visual Studio 2008 e ricompila il tuo progetto, il problema dovrebbe essere risolto.

giovedì 14 maggio 2015

Internet of Things (IoT) @ TTG

Quando: 14 maggio 2015, ore 18:00
Dove: Corso Castelfidardo 30 Torino - Sala Microsoft Innovation Center

In questo incontro avremo due sessioni sul tema Internet of Things (IoT):

Introduzione a Spark.io, l'IoT arduino-like semplice ed economico
Marco Bodoira e Roberto Nocera faranno una descrizione del prodotto, mostreranno alcune demo e condivideranno l'esperienza dell'evento tenuto al FabLab di marzo relativo a Spark.IO, una piattaforma semplice ed economica per realizzare i propri prototipi.

Internet Of Things: un esempio pratico
Beppe Platania e Gianni Rosa Gallina presentano l’applicazione dell’IoT a Macchine movimento terra, teodoliti ed altre macchine di cantiere. Con il crescere dei sensori e delle apparecchiature di bordo, le macchine utensili sono produttrici di informazioni non soltanto legate alla loro attività lavorativa, ma anche a livello ambientale e di sicurezza. Oltre alle normali funzionalità di aggiornamento remoto del sistema, delle applicazioni e delle configurazioni, l’IoT sui dispositivi industriali nell’ambito dell’edilizia, nel suo significato più ampio, suggerisce tutta una serie di nuove applicazioni non realizzabili fino ad oggi a causa della mancanza di comunicazione.

Sarà presentato un progetto reale, realizzato all’interno di un bando regionale con l’utilizzo di .NET MicroFramework e del Cloud Microsoft Azure.

Registrati qui all'evento gratuito
http://www.torinotechnologiesgroup.it/eventi/15-05-05/Incontro_community_14_maggio_2015.aspx

domenica 1 febbraio 2015

Spark Night Lab @ FabLab Torino



Sei uno smanettone, uno studente, un maker alle prime armi o un hacker?
Vieni a conoscere Spark Core, una scheda Arduino compatibile + modulo wifi + piattaforma
cloud.
Registrati qui, l'levento è gratuito ma i posti sono limitati. Puoi trovare i dettagli qui.
Sponsorizzato da Spark e Fablab.





mercoledì 3 dicembre 2014

Remote Spark per Windows Phone

Remote Spark per Windows Phone è un progetto per gestire in remoto lo Spark device descritto nel mio precedente post.
Questa app, di cui i sorgenti sono pubblicati su codeplex, permette di accendere e spegnere due led e leggere la temperatura dal tuo Spark device.




Come usarlo
1. Costruisci il seguente circuito, usando lo Spark maker kit. Questo circuito è la fusione degli esempi proposti sul sito, blink an led, control leds over the net e measuring temperature:


2. Esegui il flash del seguente firmware sul tuo Spark device da https://www.spark.io/build :

// Define the pins we're going to call pinMode on
int led1 = D0;  // You'll need to wire an LED to this one to see it blink.
int led2 = D1; // This one is the built-in tiny one to the right of the USB jack
int temperature = 0;
double voltage;
// This routine runs only once upon reset
void setup() 
{
  Spark.function("led", ledControl);
  Spark.variable("temperature", &temperature, INT);
  // Initialize D0 + D7 pin as output
  // It's important you do this here, inside the setup() function rather than outside it or in the loop function.
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  // Connect the temperature sensor to A7 and configure it
  // to be an input
  pinMode(A7, INPUT);
}

void loop() 
{
  temperature = analogRead(A7);
  voltage = (temperature * 3.3)/4095;
  temperature = (voltage - 0.5) * 100;
}

int ledControl(String command)
{
    int state = 0;
    int pinNumber = (command.charAt(1) - '0') -1;
    if(pinNumber <0 || pinNumber >1)
      return pinNumber;
      
    if (command.substring(3,7) == "HIGH") 
      state = 1;
    else if(command.substring(3,6) == "LOW") 
      state = 0;
    else    
      return -1;
    digitalWrite(pinNumber, state);
    return 1;
}

3. Scarica il mio progetto da codeplex e imposta il tuo DeviceId e Token nella classe Spark.cs.
4. Esegui il deploy dell'applicazione sul tuo Windows Phone.

Cambiando lo stato dei toggle per accendere/spegnere i led, RemoteSpark invia una richiesta POST a spark cloud:

internal async static Task<LedResponse> Set(string p1, string p2)
        {
            LedResponse result = null;

            using (var request = new HttpClient())
            {
                string postData = string.Format("params={0},{1}", p1, p2);
                byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                var stringContent = new StringContent(postData, Encoding.UTF8, "application/x-www-form-urlencoded");
                request.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
                var response = await request.PostAsync(string.Format("https://api.spark.io/v1/devices/{0}/led", DeviceId), stringContent);
                var json = await response.Content.ReadAsStringAsync();
                result = JsonConvert.DeserializeObject<LedResponse>(json);
                result.PlainJson = json;
                if (result.return_value == "1")
                    result.ok = true;
            }
            return result;
        }

Premendo il pulsante Get temperature, RemoteSpark invia questa richiesta GET:

 internal async static Task<TemperatureResponse> GetTemperature()
        {
            TemperatureResponse result = null;
            using (var request = new HttpClient())
            {
                request.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
                request.DefaultRequestHeaders.IfModifiedSince = DateTime.Now;
                var response = await request.GetAsync(string.Format("https://api.spark.io/v1/devices/{0}/temperature", DeviceId));
                var json = await response.Content.ReadAsStringAsync();
                result = JsonConvert.DeserializeObject<TemperatureResponse>(json);
            }
            return result;
        }
Il progetto è disponibile per il download e modifiche per i vostri progetti!

lunedì 4 agosto 2014

Spark.io e Internet of Things

Stavo cercando un dispositivo embedded piccolo, economico e dotato di Wifi quando ho scoperto Spark.io.
Il sito è ben fatto e dà subito l'idea delle sue potenzialità, quindi ho deciso di comprare il dev kit, al prezzo di 99$ (il core da solo costa 39$). Ho scelto il core con l'antenna già presente sul circuito, perchè sono pigro!
Oltre a contenere lo Spark Core, il dev kit contiene molti componenti hardware:
Per iniziare, non avendo uno smartphone android o iphone, ho dovuto collegare il core al pc e con putty seguire le istruzioni per impostare la rete WiFi e la password, ed infine ottenere l'id del core.
Una volta connesso alla rete, ho seguito il tutorial per far accendere e spegnere due led.
Prima ho realizzato il ciruito:
Poi sono passato alla programmazione. Il codice è compatibile con il linguaggio usato su Arduino e l'interfaccia è web: è sufficiente loggarsi e l'IDE propone dei progetti di esempio che si possono modificare e salvare automaticamente sul proprio spazio cloud.
L'incredibile comodità è la modalità di flash del firmware via OTA. Dalla pagina web si preme il pulsante fulmine: il progetto viene ricompilato e il core riceve l'aggiornamento via WiFi. Completata l'operazione, il dispositivo riprende a funzionare con il nuovo firmware.

Nel prossimo post comanderò l'accensione dei led e visualizzerò la temperatura tramite un'app Windows Phone.

martedì 6 maggio 2014

//publish/ @ Torino


Evento: 16 - 17 maggio
I3P, Incubatore Imprese Innovative Politecnico di Torino
Via Pier Carlo Boggio, 59 Torino, IT, 10138 Italy

Un evento gratuito unico e divertente, organizzato da Microsoft in collaborazione con I3P ed il MIC di Torino.
Porta la tua app o il tuo gioco all'hackathon Microsoft //Publish/ per scrivere codice in contemporanea ad altri sviluppatori di tutto il mondo. Ti aiuteremo su design, performance, testing e pubblicazione! 32 ore nonstop per avere la tua app pronta per Windows Phone, tablet e PC.

Ricevi supporto dagli esperti Microsoft e delle community per risolvere eventuali problemi e dare il tocco finale al tuo progetto. Testa la tua app in gruppo con gli altri partecipanti e provala sui diversi device a tua disposizione. ConnettiApp Showcase per una delle quattro categorie:
ti online con sviluppatori ed esperti dei prodotti Microsoft collegati dagli eventi in simultanea in tutto il mondo. Pubblica la tua app per partecipare all'
1. Best Windows Phone 8.1 App ;
2. Best Windows 8.1 App; 3. Best Cross-platform App; 4. Breakthrough in App Innovation and Design
I primi due classificati per ogni categoria riceveranno un device da Microsoft Corporation.

Infine, tutte le app pubblicate sul Windows o Windows Phone Store entro il 1 giugno 2014 potranno vincere premi ancora più fantastici partecipando al contest di Microsoft Corporation //publish/ contest

Agenda Day 1

10:00 – 11:00Keynote
11:00 – 13:00 Sviluppo con il supporto degli esperti
13:00 – 14:00Pranzo
14:00 – 19:30 Sviluppo con il supporto degli esperti
19:30 – 20:30 Cena
20:30 – 23:00Sviluppo con il supporto degli esperti
23:00 – 00:00 Spuntino notturno

Agenda Day 2

00:00 – 09:00Sessione notturna di sviluppo
09:00 – 10:00 Colazione
10:00 – 13:00 Sviluppo con il supporto degli esperti
13:00 – 14:00Pranzo
14:00 – 17:00Sviluppo con il supporto degli esperti
17:00 – 18:00 App Showcase

Maggiori informazioni sul sito //publish/

martedì 4 febbraio 2014

Installare Windows Embedded 8.1 Industry

In questo post spiegherò passo passo come installare Windows Embedded 8.1 Industry.

1. Installazione

Con Virtual Box, crea una macchina virtuale per windows 8: io ne ho creata una con 2 GB di RAM e 15 GB di hard disk. 
Potete scaricare gratuitamente l'immagine trial di Windows 8.1 Industry dal sito http://www.microsoft.com/windowsembedded/en-us/downloads.aspx
Da Virtual Box caricate direttamente l'ISO e seguite l'installazione: è praticamente identica a Windows 8.1.







2. Abilitare le funzionalità embedded

Ad installazione completata, digita Windows features nello start menu: la ricerca ritornerà l'app per abilitare/disabilitare le funzionalità di sistema. Scorrendo la lista, espandi Embedded Features e seleziona tutti i sottoelementi.


Dopo il riavvio sarà disponibile nella lista delle applicazioni l'Embedded Lockdown Manager




Nei prossimi post impareremo ad usarlo.