Archivio dell'autore: Mario De Ghetto

Nuova modalità di aggiornamento di Visual Studio 2017

Come ormai sarà noto a quasi tutti quelli di voi che utilizzano Visual Studio 2017 per sviluppare applicazioni, da un po’ di tempo in qua gli aggiornamenti di Visual Studio 2017 sono diventati molto ma molto più frequenti che in passato.

Pur trattandosi sempre di Visual Studio 2017, le versioni si susseguono ormai molto rapidamente, anche dopo 2-3 giorni dal rilascio precedente: ora siamo alla versione 15.6.4 (vi ricordo che Visual Studio 2017 è anche, in codice, Visual Studio “15”), ma la prossima settimana potremmo fare un nuovo balzo in avanti di una o due versioni.

Questi rilasci così frequenti servono a correggere i molti bug che necessariamente un’applicazione così complessa introduce nella sua miriade di componenti, di moduli e di elementi di ogni genere.

Ogni tanto c’è anche qualche nuova caratteristica che ci semplifica la vita: per esempio, di recente è cambiato qualcosa nell’installer del prodotto. Infatti, avviando l’installer per effettuare un nuovo aggiornamento, appare una schermata come questa:


image


Come potete vedere sono indicate la versione correntemente installata e la nuova versione che sarà installata con l’upgrade.

L’aspetto interessante è che potete cliccare su Update Now senza chiudere il lavoro sulla soluzione che avete aperto: come indicato nell’avviso che vedete nella parte inferiore della finestra, “Visual Studio salverà il vostro lavoro, si chiuderà e si riaprirà.”, tutto questo automaticamente, senza che voi dobbiate preoccuparvi di nulla.

Una volta cliccato sul pulsante Update Now, apparirà un’altra finestra come questa:


image


Questa finestra avvierà effettivamente l’aggiornamento di Visual Studio, fornendovi le indicazioni della progressione dell’installazione e avvisandovi anche che Visual Studio sarà riavviato automaticamente dopo il completamento.

Un’altra comoda caratteristica di Visual Studio! Ne sentivamo la mancanza? Forse no, ma visto che c’è, non mi sembra nemmeno una brutta cosa!

Happy coding!  Winking smile

Annunci

GARAGE40: facciamo il punto della situazione…

Da quando ho iniziato a lavorare, quasi un anno fa, sui miei progetti di applicazioni realizzate con l’etichetta “Garage40”, utilizzando Visual Studio 2017 e pubblicando le app su Microsoft Store, le attività sono diventate via via più frenetiche e le idee sono arrivate in grande quantità.

garage40_0 -


All’inizio non è stato facilissimo, perché ci sono stati dei problemi tecnici, soprattutto sull’utilizzo di librerie esterne che non permettevano di completare il processo di certificazione dello Store MS. Una volta risolto il problema tecnico principale, è stato un crescendo e tuttora i progetti viaggiano come un treno ad alta velocità.

Ma vediamole queste app (che potete trovare raggruppate in questa pagina: https://www.microsoft.com/it-it/store/search/apps?q=garage40):

  1. Garage40 TheVoice (in lingua inglese): una semplice applicazione che permette di inserire un testo in una grande casella e di far riprodurre il testo con la voce sintetizzata del computer, in qualunque lingua vogliate (è sufficiente installare la lingua desiderata su Windows 10 per poter utilizzare una voce in più). Questa applicazione è e resterà per sempre gratuita: infatti vi permette di provare la funzionalità di lettura a voce che poi ho riutilizzato in altri due progetti (Garage40 Write e Garage40 Calc);
  2. Garage40 Write (in lingua inglese): questa app è una evoluzione della app Garage40 TheVoice. Infatti, oltre alla capacità di leggere a voce un testo, permette di aprire, creare, modificare e salvare un testo con un editor abbastanza simile a MS Word (ovviamente senza alcune funzionalità più avanzate);
  3. Garage40 Calc (in lingua inglese): anche in questo caso ho sfruttato l’esperienza fatta con le precedenti due app per la lettura a voce del testo, ma in questo caso si tratta di una app abbastanza simile a MS Excel (anche qui senza le funzionalità più avanzate);
  4. Garage40 Office 2016 (in lingua italiana): questa app fornisce un testo, costituito da alcuni capitoli, per iniziare a utilizzare Office 2016, Word ed Excel;
  5. Garage40 Visual Basic (in lingua italiana): per molti anni (dal 2006 al 2017) ho scritto parecchi libri di programmazione e articoli tecnici per la rivista ioProgrammo, ma anche per questo blog. Ora che l’editoria vede da un po’ di tempo il calo di vendite di libri e che anche la rivista ioProgrammo ha sospeso le uscite, dovendo sfogare la mia voglia di scrivere, ho pensato di creare una app per rendere disponibile un testo didattico sulla programmazione in Visual Basic. Il testo non è finito, avrà una progressione di capitolo in capitolo e magari anche con altre forme: articoli, frammenti di codice e così via. Questo è il motivo per cui inizialmente l’app è stata distribuita gratuitamente, poi il prezzo è cresciuto (di pochissimo) e crescerà di circa 50 centesimi ogni due settimane fino a un massimo (credo) di 5,99 Euro. L’obiettivo è continuare a divulgare le tecniche di programmazione e di non disperdere l’esperienza fatta negli anni;
  6. Garage40 Csharp (in lingua italiana): questa sarà una app “gemella” di Garage40 Visual Basic, con un testo simile ma ovviamente adattato allo specifico linguaggio;
  7. Garage40 Fsharp (in lingua italiana): in questo caso è tutto da costruire, perché libri in italiano non ce ne sono e anch’io prima d’ora non avevo scritto un libro su questo argomento (al massimo qualche articolo o post sul mio blog). Pian piano anche questo testo crescerà in contenuti che spero vi possano interessare;
  8. Garage40 Elettronica (in lingua italiana): qui andiamo in un ambito completamente diverso, anche se con la stessa tecnica espositiva e con le stesse intenzioni. Sarà un testo divulgativo sulla creazione di progetti di elettronica “da zero”, utilizzando semplici componenti, le schede Arduino e Raspberry e un po’ di creatività. Alcuni contenuti riguarderanno l’interazione tra la scheda Arduino e Visual Studio, quindi anche in questo caso sfogherò la mia voglia di programmazione, spero anche la vostra.

Tutte queste app sono destinate a PC desktop con installato Windows 10, perché sono distribuite esclusivamente via Microsoft Store.

Non finisce qui, perché voglio espandere ulteriormente le app distribuite con l’etichetta “Garage40”. Le idee sono tante e qualcuna vi piacerà senz’altro, vediamole:

  1. conversione di documenti Word .docx in .doc: nel mese di aprile 2018 Microsoft ritirerà l’add-in che permette di aprire, modificare e salvare anche nelle versioni MS Word “vecchie” (97-2003) documenti Word nel nuovo formato DOCX (disponibile dalla versione 2007 in poi). Ecco quindi che potrebbe esserci qualche problema per chi non ha aggiornato Office alle versioni più recenti (se non l’avete fatto finora, difficilmente lo farete poi…?). Se utilizzate Windows 10 almeno su un PC (per esempio su un portatile), con questa app potrete almeno aprire il documento (DOCX) e salvarlo in una versione precedente (DOC);
  2. conversione di documenti Excel .xlsx in .xls: stessa considerazione anche per i formati XLSX e XLS;
  3. visualizzatore di file PDF: permetterà di aprire un file PDF e di leggere il testo;
  4. visualizzatore di file Word: permetterà di aprire i file con un formato di Word (solo in lettura);
  5. visualizzatore di file Excel: permetterà di aprire i file con un formato di Excel (solo in lettura);
  6. visualizzatore di file CSV (campi separati da virgola): permetterà di aprire un file di dati in formato CSV e di manipolarlo in vari modi (ricerche, sostituzioni ecc.);
  7. visualizzatore di immagini: permetterà di aprire e visualizzare vari tipi di immagine (solo in lettura);
  8. visualizzatore di vari tipi di file: permetterà di aprire e visualizzare vari tipi di file (solo in lettura), con possibilità di espansione a numerosi formati;
  9. convertitore tra vari tipi di file: permetterà di convertire i file in formati predefiniti in altri formati, laddove sia possibile.

Ci saranno altri tipi di app in futuro? Presumo di si, perché ho già altre idee: una app che simula una calcolatrice da tavolo (con tanto di nastro di “carta”), un classificatore di immagini, una app per gestire i documenti delle garanzie di apparecchi acquistati, una app per monitorare i costi di utilizzo di una o più autovetture… Le possibilità sono infinite, ovviamente, ma accetto anche suggerimenti (basta mettere un commento sotto a questo post).

Se le mie idee vi piacciono, mi farete un grande favore nel condividere la pagina di Facebook https://www.facebook.com/garage40sw/: più questo indirizzo “gira” in Rete e più riuscirò ad arrivare ovunque per far conoscere le mie applicazioni.

Grazie per il supporto!

Winking smile

Windows Remote Arduino e Visual Studio 2017

Se siete interessati al mondo IoT (Internet of Things) e avete acquistato un microcontroller per fare qualche esperimento pratico e magari per realizzare qualche progetto trovato sulla Rete, prima o poi avrete la necessità di controllare il vostro dispositivo da remoto. È facile immaginare alcune applicazioni utili per voi e la vostra famiglia: apertura di portoni e cancelli con uno smartphone, sorveglianza di ambienti anche da remoto, telecontrollo e telesoccorso, domotica (controllo del riscaldamento, irrigazione del giardino, accensione e spegnimento di luci…) e molte altre soluzioni, il cui unico limite è l’immaginazione.

Le opzioni non mancano: infatti possiamo scegliere tra varie possibilità, tra le quali Windows Remote Arduino, Virtual Shields per Arduino e anche Arduino Wiring per Windows 10 IoT Core. Alcune di queste soluzioni sono utilizzabili anche o preferibilmente con Raspberry, ma per questa scheda (dovremmo forse dire mini PC) abbiamo un’ampia gamma di altre soluzioni che passano anche per Raspbian (la distribuzione Linux dedicata a Raspberry) e per Python. Si tratta solo di capire da dove iniziare, perché non c’è ancora una documentazione sufficiente su questi strumenti e quindi chi si avvicina per la prima volta può rimanerne un po’ disorientato.

In questo articolo cercheremo di fare un po’ di chiarezza in un ambito ben preciso: infatti utilizzeremo una scheda Arduino UNO perché probabilmente è quella più diffusa e poi anche perché la libreria Windows Remote Arduino, come purtroppo anche altre librerie, non funziona con Arduino Mega 2560. In prima battuta utilizzeremo direttamente l’applicazione Windows Remote Arduino Experience per Windows 10 per pilotare manualmente dei LED collegati alla scheda. In seguito proveremo a sviluppare un’applicazione con Visual Studio 2017 per avere maggiore flessibilità e maggiore controllo sull’accensione dei LED o su qualsiasi cosa che potrebbe essere collegata alla scheda. La prima accortezza che bisogna avere, comune a tutti i tool, è quella di aver aggiornato il sistema operativo all’ultima build di Windows 10.

Windows Remote Arduino

Per la prima prova predisponiamo il nostro progetto sulla scheda Arduino: l’obiettivo che ci accingiamo di raggiungere è quello di realizzare un sistema per accendere alcuni LED, simulando un controllo a distanza dell’illuminazione di alcuni locali.

Per realizzare questo progetto, colleghiamo dieci LED ai pin dal 3 al 12, con altrettanti resistori da 220 Ω, come potete vedere dalla Fig.1. Il pin 13 è già collegato al LED interno alla scheda, mentre non bisogna mai utilizzare i pin 0 e 1 dedicati alla comunicazione via seriale; il pin 2 resta libero.


Immagine01

Fig. 1 – La realizzazione del modello di sistema di illuminazione comandato da remoto.


Con la libreria open source Windows Remote Arduino possiamo controllare una scheda Arduino per mezzo di connessioni via USB, Bluetooth, Ethernet e Wi-fi e, in particolare, possiamo attivare o disattivare pin digitali e analogici, ma anche ricevere eventi, quando i sensori si accorgono che è successo qualcosa. Naturalmente dipende da quali sensori sono presenti.

Per utilizzare Windows Remote Arduino abbiamo tre possibilità che vi elenchiamo, da quella più semplice a quella più complessa:

1. utilizzare l’app gratuita Windows Remote Arduino Experience;

2. creare un progetto Visual Studio 2017 installando un pacchetto NuGet;

3. aggiungere manualmente i file di Windows Remote Arduino a una soluzione Visual Studio 2017.

Come abbiamo già anticipato, esamineremo in dettaglio solo le prime due opzioni, perché la terza è un po’ più complessa e richiede un articolo tutto per sé.


Metodo 1: App gratuita Windows Remote Arduino Experience

Potete scaricare e installare l’applicazione dallo Store di Microsoft cercando il nome completo della stessa oppure visitando la seguente pagina informativa sul web: http://bit.ly/winremotearduinoexperience. Prima di poter utilizzare questa applicazione, però, dovete preparare Arduino in modo che sia pronto per comunicare in remoto. Per mantenere semplice il progetto utilizzeremo la connessione USB impostandola come segue:

1) collegate Arduino UNO al PC via cavo USB;

2) avviate l’IDE di Arduino (se non l’avete ancora installato, scaricatelo da arduino.cc);

3) verificate che nell’IDE siano impostati correttamente la porta COM e la scheda;

4) aprite il menu File > Esempi > Firmata e cliccate sullo sketch StandardFirmata;

5) caricate lo sketch nella scheda cliccando sull’apposito pulsante Carica;

6) avviate l’applicazione Windows Remote Arduino Experience installata in precedenza: apparirà una finestra simile a quella mostrata nella Fig.2.


Immagine02

Fig.2: L’applicazione Windows Remote Arduino Experience prima della connessione alla scheda.


Con la scheda Arduino collegata alla porta USB, selezionate la voce Connection impostandola a USB e scegliete il baud rate appropriato (deve essere uguale al valore del baud rate inserito nello scketch StandardFirmata). Se la sezione Devices discovered riporta la dicitura “No items found.” oppure riporta alcune porte USB ma senza l’indicazione della porta a cui abbiamo collegato Arduino, cliccate sul pulsante Refresh: con questa operazione dovrebbe apparire la scritta Arduino Uno (COMx), dove “x” è il numero della porta COM associata alla porta USB. Selezionate la riga con tale indicazione e poi cliccate sul pulsante Connect.

A questo punto dovreste poter gestire in remoto la scheda Arduino, ma potrebbe esserci qualche problema con il baud rate, cioè la velocità di comunicazione. Se la connessione non funziona, verificate che la velocità impostata nello sketch StandardFirmata corrisponda con la velocità del dispositivo di comunicazione che avete collegato: lo trovate cercando nello sketch l’istruzione Firmata.begin(<baud rate>). Se modificate il baud rate di StandardFirmata, poi dovrete caricare di nuovo lo sketch sulla scheda; in alternativa potete impostare il baud rate di Windows Remote Arduino Experience allo stesso valore, l’importante è che i due valori siano uguali. Se è stato fatto tutto correttamente, dopo pochi istanti dovrebbe apparire la finestra che potete vedere nella Fig.3.


Immagine03

Fig. 3 – La scheda Digital con i pin digitali da 0 a 13 e da A0 ad A5.


Se ora provate a cliccare sugli interruttori di destra (che riportano la tensione 0V), nei numeri da 3 a 13, vedrete accendere i LED corrispondenti e vedrete che sarà riportata la tensione di 5V; cliccando di nuovo lo stesso interruttore sarà abbassata la tensione, spegnendo il LED. Gli interruttori di sinistra, invece, servono per indicare la direzione verso la quale deve lavorare il pin corrispondente: in input o in output. Per esempio, per accendere un LED bisogna attivare il pin in output, mentre per leggere un sensore (per esempio un DHT11 per rilevare la temperatura ambientale), bisognerà impostare il pin in input.

Forse avrete notato che ci sono anche altre schede: la scheda Analog con i pin analogici da A0 ad A5 e la scheda PWM con i pin 3, 5, 6, 9, 10 e 11. I pin da A0 ad A5 appaiono sia nella scheda Digital, sia nella scheda Analog, perché possono essere attivati in entrambe le modalità. Ovviamente se vengono attivati in modalità digitale potranno avere solo i valori 0V o 5V, mentre in modalità analogica non possono essere attivati in modalità di output, potendo solo leggere valori discreti corrispondenti ai valori intermedi tra 0 e 5 Volt.

Per quanto riguarda la scheda PWM possiamo notare una curiosità: se attiviamo uno dei sei pin, abbiamo a disposizione una barra di scorrimento con la quale possiamo accendere i LED collegati ai pin stessi, con gradazioni di luminosità crescente da 0 a 5 V.


Metodo 2: Applicazione Visual Studio 2017 e NuGet

Il secondo metodo è più adatto ai programmatori, dato che permette di realizzare con Visual Studio 2017 un’applicazione in grado di connettersi alla scheda Arduino. Nell’esempio noi opteremo ancora per la connessione via USB, ma anche in questo caso sono disponibili le connessioni via Bluetooth o rete Ethernet/WiFi. Procedete come segue:

1. aprite Visual Studio 2017 e create un nuovo progetto dal menu File > New > Project;

2. tra i template di Visual Basic selezionate Windows Universal > Blank App (Universal Windows), modificate il nome del progetto in “WRA” (cambierà automaticamente anche il nome della soluzione) e, se lo desiderate, cambiate la cartella di destinazione della soluzione, poi confermate cliccando sul pulsante OK (Fig.4).


Immagine04

Fig.4: Creazione della soluzione Visual Basic in Visual Studio 2017.


3. Apparirà una finestra di selezione della versione minima e massima di Windows 10 che devono essere supportate dall’applicazione UWP: modificate questi valori solo se necessario e confermate con OK.

Non appena sarà creata l’applicazione vuota, procedete in questo modo per aggiungere la libreria da NuGet:

4. selezionate il menu Tools > NuGet Package Manager > Package Manager Console;

5. nella Console di NuGet digitate il seguente comando e confermate con un invio:


Install-package Windows-Remote-Arduino


Pochi secondi dopo lo scorrimento di varie scritte sulla Console vedrete terminare l’installazione e, se sarà andato tutto come previsto, dovrebbe essere apparsa anche la riga seguente:


Successfully installed ‘Windows-Remote-Arduino 1.4.0’ to WRA


Inoltre, nella finestra Solution Explorer dovrebbe essere apparsa la voce Windows-Remote-Arduino nel nodo References (Fig.5).


Immagine05

Fig.5: Il riferimento a Windows-Remote-Arduino nella finestra Solution Explorer.


A questo punto dobbiamo modificare il codice che ci serve per modificare lo stato dei LED.

6. Aprite il file MainPage.xaml.vb e all’inizio del codice inserite le seguenti dichiarazioni per importare le funzioni della libreria Windows Remote Arduino:


Imports Microsoft.Maker.RemoteWiring

Imports Microsoft.Maker.Serial


7. Appena prima della dichiarazione del metodo New() inserite le seguenti dichiarazioni di variabili:


Dim connection As UsbSerial

Dim arduino As RemoteDevice


8. Nel metodo New(), dopo l’istruzione InitializeComponent(), inserite il seguente codice:


connection = New UsbSerial(“VID_2A03”, “PID_0043”)

arduino = New RemoteDevice(connection)

AddHandler connection.ConnectionEstablished, AddressOf OnConnectionEstablished

connection.begin(57600, Microsoft.Maker.Serial.SerialConfig.SERIAL_8N1)


La prima istruzione definisce un nuovo oggetto di tipo UsbSerial, passandogli due parametri: “VID_2A03” e “PID_0043”. Questi due parametri non sono sempre uguali, dipendono dalla configurazione sul vostro PC. Per rilevare quali sono i vostri parametri, premete la combinazione di tasti “Windows”+X, selezionate Gestione dispositivi, espandete il nodo Porte (COM e LPT) e trovate la porta di comunicazione (COMx) di Arduino UNO. Cliccate sul nome della porta con il tasto destro del mouse e selezionate Proprietà: nella finestra delle proprietà passate alla scheda Eventi, dove potrete vedere i due parametri nel riquadro Informazioni. I due parametri sono concatenati ad altre informazioni in una unica stringa, ma sono facilmente identificabili (Fig.6).


Immagine06

Fig.6: La finestra delle proprietà della porta COM collegata ad Arduino.


La seconda istruzione crea un oggetto di tipo RemoteDevice per avviare la connessione al dispositivo. La terza istruzione aggiunge un gestore di evento secondo lo schema


AddHandler evento, AddressOf nome_subroutine


dove in questo caso l’evento che viene rilevato è quello che scatta quando viene stabilita la connessione al dispositivo, mentre il nome_subroutine indica il metodo Sub che viene invocato al verificarsi dell’evento stesso.

La quarta istruzione avvia effettivamente la connessione, indicando il baud rate e la modalità di comunicazione: SERIAL_8N1 indica una comunicazione seriale, con (8) bit di dati, (N)essun bit di parità e (1) bit di stop.

9. Ora dobbiamo creare il metodo OnConnectionEstablished() per gestire l’evento di avvenuta connessione e quindi scriviamo quanto segue:


Private Sub OnConnectionEstablished()

   Dim action = Dispatcher.RunAsync(

      Windows.UI.Core.CoreDispatcherPriority.Normal,

      New Windows.UI.Core.DispatchedHandler(

         Sub()

            OnButton.IsEnabled = True

         End Sub))

End Sub


Utilizziamo quindi un Dispatcher in asincrono per abilitare il pulsante OnButton che così potrà essere premuto per accendere un LED. Ovviamente le istruzioni che potete inserire all’interno del blocco Sub() … End Sub possono essere le più varie, per eseguire qualsiasi funzione che abbiate deciso.

10. Nella fase di scrittura del codice vedrete che OnButton non viene riconosciuto. Il motivo è ovvio: non abbiamo ancora creato i pulsanti nell’interfaccia utente. Aprite il file MainPage.xaml e inserite tre pulsanti, ai quali darete i nomi OnButton (descrizione “On”), OffButton (descrizione “Off”) e Sequence (descrizione “Sequenza”). Eseguite un doppio-click su ogni pulsante e inserite il seguente codice:


Private Sub OnButton_Click(sender As Object, e As RoutedEventArgs) Handles OnButton.Click

   Dim i As Byte

   For i = 3 To 13

      arduino.digitalWrite(i, PinState.HIGH)

   Next

End Sub

Private Sub OffButton_Click(sender As Object, e As RoutedEventArgs) Handles OffButton.Click

   Dim i As Byte

   For i = 3 To 13

      arduino.digitalWrite(i, PinState.LOW)

   Next

End Sub

Private Sub Sequence_Click(sender As Object, e As RoutedEventArgs) Handles Sequence.Click

   Dim i, j As Byte

   ‘ CICLO di accensione/spegnimento alternati

   For j = 1 To 10

      For i = 3 To 13 Step 2

         arduino.digitalWrite(i, PinState.HIGH)

      Next

      For i = 4 To 12 Step 2

         arduino.digitalWrite(i, PinState.LOW)

      Next

      Task.Delay(250).Wait()

      For i = 3 To 13 Step 2

         arduino.digitalWrite(i, PinState.LOW)

      Next

      For i = 4 To 12 Step 2

         arduino.digitalWrite(i, PinState.HIGH)

      Next

      Task.Delay(250).Wait()

   Next

   ‘ spegnimento di tutti i LED

   For i = 3 To 13

      arduino.digitalWrite(i, PinState.LOW)

   Next

End Sub


Questo codice è molto semplice da comprendere e ricalca anche la struttura di un ipotetico sketch caricato sulla scheda Arduino, quindi non riteniamo necessario dare ulteriori specifiche. L’unica particolarità degna di nota è l’utilizzo dell’istruzione Task.Delay(250).Wait() anziché di Thread.Sleep. Trattandosi di un’applicazione UWP non possiamo utilizzare quest’ultimo e quindi dobbiamo optare per l’oggetto Task per ottenere un tempo di attesa di 250 millisecondi: in caso contrario non vedremmo lampeggiare i LED, ma li vedremmo accesi solo per un istante, prima dello spegnimento completo.

11. L’ultima modifica che dobbiamo apportare è quella al file di manifesto, Package.appxmanifest, precisamente nella sezione <Capabilities>:


<Capabilities>

   <Capability Name=”internetClient” />

   <DeviceCapability Name=”serialcommunication”>

      <Device Id=”any”>

         <Function Type=”name:serialPort”/>

      </Device>

   </DeviceCapability>

</Capabilities>


In questo modo avremo aggiunto l’abilitazione all’utilizzo del dispositivo sulla porta seriale.

L’applicazione finale, molto semplice, è visibile nella Fig.7.


Immagine07

Fig.7: L’applicazione WRA in fase di esecuzione.


Il gestore dell’evento Click del pulsante OnButton accende tutti i LED, mentre quello del pulsante OffButton li spegne tutti. Invece, l’evento Click del pulsante Sequence accende e spegne dieci volte i LED, alternandoli tra di loro.


Conclusione

In questo articolo abbiamo visto l’utilizzo di Windows Remote Arduino Experience, sia con un’interfaccia fornita da una app distribuita via Microsoft Store (per Windows 10), sia con una applicazione creata con Visual Studio 2017.

Quest’ultima opzione è estremamente interessante perché è molto più flessibile e ci consente di agire sulla scheda remota e di leggere i valori rilevati dai pin della scheda, premessa importante per realizzare le nostre soluzioni IoT nel modo migliore.

Aggiornamento alla versione 15.5.6 di Visual Studio 2017

Eccoci alla versione 15.5.6 di Visual Studio 2017: gli aggiornamenti non sono mai stati così frequenti come in questi ultimi mesi!

Sicuramente un vantaggio per chi aspetta la correzione di una caratteristica malfunzionante, ma anche una preoccupazione e talvolta un fastidio per chi vorrebbe aggiornamenti meno frequenti e versioni più stabili nel tempo.

Ovviamente non si può avere tutto e quindi ci prendiamo il nostro tempo per aggiornare VS 2017, magari quando stiamo facendo qualcos’altro.

Il nuovo aggiornamento ha una piccola ma interessante novità: avviandolo, come sempre partirà l’installer che ormai conosciamo bene e che ci aiuta a gestire aggiornamenti, aggiunte e rimozioni di caratteristiche di Visual Studio. Questa volta, però, vedrete apparire questa nuova finestra:


image


La finestra spiega in modo chiaro qual è la sua funzione: possiamo chiudere l’istanza di Visual Studio e premere il pulsante Riprova, oppure possiamo cliccare su Continua e in tal caso sarà l’installer a preoccuparsi di salvare lo stato dei processi, a chiuderli e poi a ripristinarli con lo stato precedente, al termine dell’installazione. Decisamente utile e comodo.

Buon aggiornamento!  Winking smile

Sistema operativo su DVD: quale versione?

A quanti è capitato di avere più di un DVD di installazione di Windows 10 e di non sapere quale è quello in versione più recente o di una versione specifica?

Per risolvere questo problema vi consiglio di visitare questa pagina, sul blog di Ermanno Goletto:

https://www.devadmin.it/2018/01/28/controllare-la-versione-del-sistema-operativo-presente-nelliso/


Buona lettura! Winking smile

Ora sì! Installiamo l’aggiornamento 1801.27 dell’add-in "Arduino for Visual Studio" di Visual Micro

A quanto pare ci siamo!

In un mio post del 17 gennaio avevo scritto di non installare l’aggiornamento di Visual Micro dell’add-in “Arduino for Visual Studio”: infatti la documentazione ufficiale riportava le note di rilascio con il testo barrato e quindi non era dato sapere se l’aggiornamento fosse funzionante o se introducesse ulteriori problemi. Io l’avevo installato per un breve test e tutto sembrava funzionare ma…

Avviando Visual Studio 2017 vedrete apparire un messaggio di avvertimento sulla possibilità di aggiornare l’add-in:

2018-01-28_11-51-52

Potete scaricare il nuovo aggiornamento dalla pagina ufficiale, oppure utilizzare la finestra Notifications di Visual Studio 2017: in ogni caso vi consiglio di fare questo aggiornamento, non si sa mai.

Nell’aggiornamento sono inclusi i soliti bug fix, ma anche qualche caratteristica in più:


Release 1801.27 – 27th Jan 2018 – Visual Studio 2012-2017

  • Workaround Visual Studio VSIX bug that suddenly refuses to include newtonsoft.json dll in the VSIX. This is the reason the last release was retracted.
  • Copy sub folders when copying/cloning library examples
  • Support the creation of projects with name containing period (dot)
  • Allow libraries to compile even if they specify an incompatible architecture= in the library.properties settings. Many libraries specify only “avr” when they actually do work with other architectures. The supposedly incompatible libraries will not be displayed on “Add Library” menus but adding #includes will enable intellisense and compile.
  • Add clearer messages when library headers can not be resolved.
  • Code efficiency: Prevent various internal code exceptions with better validation
  • Fix: Upload failed for Boards that did not use a programmer or a com/ip port to upload when a user had never previously connected a COM port whilst using Visual Micro.
  • Fix: Certain STM32 cores (any core that included both a wpogram.h and an arduino.h) would fail to compile. Visual Micro will now use the “arduino.h” if it exists in preference to the “wprogram.h”. This applies to the automatic #include created in the temp folder during compilation. If neither file exists in the core folder then the “arduino.h” is #included (and would be expected to be resolved via the automatically discovered include paths).
  • NB: Visual Micro uses the standard C# SerialPort object in the serial monitor. Some USB/Serial drivers are specified for Windows10 Universal only will fail with C# in WinXp, Win7, Win8 and Win10. Confusingly the arduino ide java serial access works better with Win10 universal drivers than Microsoft’s own C# serial port object! Rule of thumb is use the correct driver for the OpSys that you are using.
  • Improved intellisense for SAMD boards (_asm_(x) and _Pragma(x))
  • Free Use: To keep support to a minimum, unlicenced users must update this software before Feb 2019


Buona installazione! Winking smile

Rispondo alla richiesta di un lettore…

Un mio lettore mi ha inviato un’e-mail con una serie di domande … visto che ogni tanto capita che ci siano delle domande ricorrenti sull’acquisto di Visual Studio, su un mio libro introvabile, sull’eventualità che io scriva e pubblichi altri libri, su consigli di altri libri sullo stesso argomento per principianti e così via, ho pensato di pubblicare la mia risposta (chiaramente senza nome del destinatario) in modo da aiutare chiunque avesse gli stessi problemi. Spero che vi possa essere utile! Winking smile


Buonasera …

Prima di rispondere alle domande, vorrei segnalare che non è necessario acquistare la licenza di Visual Studio 2017: infatti da un po’ di tempo (non ricordo se dalla versione 2013 o dalla 2015) esiste “Visual Studio Community 2017”, equivalente in tutto e per tutto alla versione Professional di Visual Studio 2017. Manca qualcosa che serve solo ai team di sviluppo e che quindi non è significativo per gli sviluppatori individuali, quindi può tranquillamente installarlo “a tempo indeterminato”, con licenza che autorizza anche alla produzione di applicazioni destinate alla vendita, quindi non ci sono problemi. Unica accortezza è che non può essere utilizzato da gruppi di oltre 5 sviluppatori oppure all’interno di aziende di medio-grande dimensione (il riferimento se non sbaglio è a 1.000.000 di dollari di fatturato). Per scaricarlo può utilizzare questo link: https://www.visualstudio.com/it/thank-you-downloading-visual-studio/?sku=Community&rel=15.

Per quanto riguarda il mio libro “Visual Basic 2010 spiegato a mia nonna”, è un “tomo” di circa 800 pagine che inizia praticamente dal “livello zero” della programmazione per poi andare gradualmente in crescita, sia per impegno che per difficoltà, fino a un livello medio-avanzato. Leggendo con attenzione i capitoli iniziali e sperimentando in prima persona i programmi sono sicuro che si può raggiungere un livello soddisfacente di autonomia, anche per chi parte da zero.

Il libro in versione cartacea è ormai quasi introvabile, qualche volta vedo che ci sono singoli “resi” all’editore, quindi periodicamente si potrebbe provare a contattarli per vedere se ne è tornato indietro almeno uno. In alternativa è sempre possibile acquistare il libro in versione “ebook”, cioè digitale. Può essere una soluzione per risparmiare qualcosa, anche se io stesso avrei un po’ di difficoltà a leggere a lungo un libro sullo schermo di un PC… con un Kindle potrebbe andare meglio, la versione Kindle è acquistabile da Amazon qui: https://www.amazon.it/Visual-Basic-2010-spiegato-nonna-ebook/dp/B006B1Y6XO. Come vedrà ci sono commenti discordanti: per qualcuno è troppo difficile, per qualcun altro è adatto ai principianti… la valutazione è assolutamente personale ed è difficile affermare con certezza una cosa o l’altra perché dipende anche dall’impegno e dalla costanza che ci si mette e dalle conoscenze acquisite in precedenza.

Nel 2017 avevo ipotizzato di scrivere una versione aggiornata del libro con un nuovo editore (LSWR.it) … senza la nonna, perché il ramo d’azienda è stato acquistato appunto da LSWR.it dove non sono più interessati a questa tipologia di testo (cioè alla nonna!). Con loro ho pubblicato il mio nuovo libro su SQL Server 2016 che però non ha avuto fortuna come i libri precedenti e quindi ho deciso di rinunciare. Non ha senso lavorare un anno per poi raccogliere poco più che “spiccioli”, non so se mi spiego. In futuro non si può mai dire, è possibile che io riveda il testo e lo pubblichi in autonomia su Amazon.it, in modo da avere io qualche guadagno in più e di ridurre il costo del libro per il lettore che lo acquista. Sto anche cercando di sperimentare una applicazione per Microsoft Store, destinata ai PC desktop o portatili con Windows 10, ma il progetto è ancora in corso.

Libri alternativi ne conosco, ma la stragrande maggioranza è in lingua inglese. Per l’Italia io “mi sono ritirato”, l’amico Francesco Balena anche (per gli stessi miei motivi)… gli unici che resistono sono quelli del gruppo di ASPItalia.com che periodicamente escono con un libro scritto in più programmatori, come questo libro su Visual Basic 2015 scritto da ben 6 programmatori: https://www.amazon.it/Visual-basic-2015-completa-sviluppatore/dp/8820371006. Anche in questo caso non mi risulta che sia uscita la versione 2017. Non so se ci stanno lavorando o se hanno rinunciato anche loro, considerato che Visual Studio ormai cambia troppo velocemente: non si fa in tempo a finire di scrivere un libro che esce la nuova versione!

C’è però da dire che per quanto riguarda le basi del linguaggio e la programmazione orientata agli oggetti (OOP) le tecniche sono più o meno le stesse dalla prima versione di VB.NET in poi: sono state aggiunte nuove tecniche, ma la base è la stessa, quindi anche un libro sulla versione 2010 o sulla versione 2015 può andare bene per imparare il linguaggio. Molto spesso cambia l’interfaccia grafica e vengono aggiunte nuove funzionalità a Visual Studio, quindi potrebbero esserci delle differenze sui menu, sulle finestre e su qualche caratteristica modificata o introdotta con la nuova versione.

Spero di aver risposto chiaramente a tutte le domande e spero che lei possa trovare il modo per soddisfare il suo desiderio di imparare Visual Basic!


Un mio nuovo articolo su ioProgrammo di questo mese (n. 222)

Nel n. 222 di IoProgrammo, in edicola a gennaio, potete trovare un mio articolo sulla conversione di applicazioni “Desktop” (Windows Forms o WPF) per Microsoft Store, in modo da poterle veicolare su una piattaforma mondiale che ci permette di vendere i nostri prodotti in modo facile e ben visibile. Non solo: Microsoft Store gestisce i pagamenti dai clienti che installano le nostre app e gestisce i compensi agli autori delle app, fornisce uno strumento facile e trasparente per gli aggiornamenti, via via che li pubblichiamo, e ci permette di monitorare il numero di visitatori alla pagina della app, le installazioni, l’utilizzo e gli eventuali blocchi improvvisi (crash).

Nell’immagine seguente potete vedere la prima di copertina con il titolo del mio articolo evidenziato con un riquadro blu:


IoProgrammo


L’articolo evidenziato in giallo, invece, è stato scritto da Antonio Pelleriti (https://www.facebook.com/antonio.pelleriti) che segnalo perché è un argomento assolutamente interessante.

Buona lettura! Winking smile


Aggiornamento di Visual Studio 2017 alla versione 15.5.4

Pochi giorni fa ho pubblicato un post sull’annuncio di Visual Studio 15.6 (Preview).

Intanto che aspettiamo questa nuova “minor version”, ecco che Visual Studio 2017 viene aggiornato con la versione 15.5.4, ma si tratta solo di un aggiornamento per correggere alcuni bug del software (confrontate qui), quindi non contiene nuove funzionalità.

Visual Studio 2017 version 15.5.4 is now available

Buon aggiornamento! Winking smile

Non fate l’aggiornamento dell’add-in "Arduino for Visual Studio"…

Se avete installato l’add-in “Arduino for Visual Studio” per poter programmare gli sketch direttamente nell’editor di codice di Visual Studio 2017 (o versioni precedenti), probabilmente in questi giorni avrete visto che tra gli aggiornamenti è prevista proprio la nuova versione di questo add-in e precisamente la Release 1801.14 del 14 gennaio 2017.

Se però aprite la pagina dedicata al progetto, dalla quale potete anche scaricare il pacchetto di installazione del prodotto, potrete vedere che le righe di descrizione (le “Release Notes”) della versione che ho appena indicato sono completamente barrate:


image


Non sembrano esserci delle spiegazioni sui motivi che hanno indotto il team di sviluppo a barrare la descrizione e quindi non è dato sapere cosa sia successo, anche perché l’aggiornamento dell’add-in che ho provato in prima persona è andato a buon fine.

Ho provato a creare una nuova applicazione Visual C++ > Visual Micro > Blink Led Example e sembra essere totalmente funzionante, compreso il supporto di IntelliSense per il completamento delle parole chiave del linguaggio e dei parametri delle istruzioni.

Vedremo prossimamente se l’add-in sarà ulteriormente aggiornato o se invece sarà sistemata la pagina di supporto.

Buon Arduino a tutti!  Winking smile


Altri due miei articoli su ioProgrammo

Nel numero di dicembre 2017 di ioProgrammo potete trovare due miei articoli su Machine Learning:

– “Il computer che impara“, algoritmi e tecniche di previsione con un servizio Microsoft

– “SQL Server 2017 è qui!“, con una parte dell’articolo che spiega l’applicazione delle tecniche di Machine Learning in SQL Server.

Se vi interessa l’argomento, quindi, acquistate ioProgrammo!


26903953_10213696427956457_5934473290513948998_n

Buona lettura! Winking smile

Visual Studio 2017 – Annuncio della versione 15.6 (preview)

Il team di sviluppo di Visual Studio 2017 ha annunciato nel suo blog il rilascio della versione 15.6 (in preview) e della versione 7.4 per Mac (anche questa in preview): https://blogs.msdn.microsoft.com/visualstudio/2018/01/10/visual-studio-2017-version-15-6-preview-2-and-visual-studio-for-mac-version-7-4-preview/

Tra le varie novità (nel post precedente avevo segnalato la funzione di duplicazione di righe o blocchi di codice) c’è la possibilità di andare alla definizione dei sorgenti decompilati con ILSpy.

Altre novità riguardano gli strumenti di diagnostica, lo sviluppo in C++, lo sviluppo per Azure, una vista gerarchica per la finestra Test Explorer e aggiornamenti a Xamarin.

Visual Studio 2017 versione 15.6 (Preview)

Nella Preview della versione 15.6 di Visual Studio 2017 è prevista una funzioncina tutto sommato piccola, ma molto utile: invece di utilizzare la Clipboard standard di Windows per copiare linee o interi blocchi di codice con la classica combinazione CTRL+C, CTRL+V ora è possibile utilizzare la combinazione CTRL+E, V. In questo modo non si cancellerà il contenuto della Clipboard di Windows che pertanto resta con il contenuto precedente.

La funzione di duplicazione è disponibile anche nel menu Edit, quindi potete utilizzare il percorso Edit > Duplicate, dopo aver selezionato una o più righe di codice da copiare.

Ecco un paio di immagini:

01

02

(Fonte: Daily .NET Tips – http://dailydotnettips.com/2018/01/12/did-you-know-now-you-can-duplicate-line-of-code-without-loosing-your-clipboard-content-within-visual-studio/)

Un traguardo per questo blog…

Prima che il 2017 fosse terminato, questo blog ha raggiunto un numero di visite piuttosto importante (almeno per me…):

650000

Grazie a tutti! Winking smile

Auguri per il nuovo anno, con in regalo (a breve) la mia nuova app-libro "Garage40 Elettronica"

Visto che il 2017 sta volgendo al termine e il 2018 sta già bussando alle porte di un quarto di mondo, tra i buoni propositi che mi pongo per il nuovo anno è una nuova app-libro: “Garage40 Elettronica“.

Si tratta di una app con contenuti dedicati all’elettronica di base, ai componenti elettronici, ad Arduino, a Internet of Things (IoT), in futuro anche a Raspberry e alle connessioni con altre tecnologie: Microsoft Azure (cloud), Visual Studio (per la programmazione), il software Fritzing (per disegnare gli schemi delle connessioni) e molto altro.

Il progetto è appena stato avviato e sarà pubblicato tra pochi giorni al prezzo iniziale di 0,00 €, cioè gratuito!

Con l’aumentare dei contenuti, aumenterà anche il prezzo dell’app, ma chi l’avrà già “acquistata” al prezzo valido al momento dell’installazione non dovrà pagare nulla.

BUON ANNO, BUON 2018 A TUTTI!

NOTA – se volete sostenere economicamente questo progetto con una donazione (di qualsiasi entità, anche piccola), potete farlo attraverso la seguente pagina: https://www.produzionidalbasso.com/project/appbook-elettronica/

Una guida gratuita ai servizi di Microsoft Azure per gli sviluppatori

Poche settimane fa è stata rilasciata la seconda edizione di una guida gratuita per gli sviluppatori: The Developer’s Guide to Microsoft Azure (per scaricarla potete cliccare sul link), di Michael Crump e Barry Luijbregts.

image

La guida è costituita da ben 7 capitoli:

  • Cap. 1: The Developer’s Guide to Microsoft
  • Cap. 2: Getting started with Microsoft Azure
  • Cap. 3: Adding intelligence to your application
  • Cap. 4: Securing your application
  • Cap. 5: Where and how to deploy your Microsoft Azure services
  • Cap. 6: A walk-through of Microsoft Azure
  • Cap. 7: Using the Microsoft Azure Marketplace

Vengono esplorati tutti i servizi di Azure, tra i quali anche i Cognitive Services, Azure IoT Hub, i servizi per la sicurezza e molto altro.

Consiglio vivamente di scaricarlo e di leggerlo, perché vi si possono trovare molte cose interessanti, sia per sviluppatori singoli che per team di sviluppo aziendali.

Buona lettura! Winking smile

Una "app-book" su Office 2016 per Windows 10

Ho appena pubblicato una innovativa “app” per PC con Windows 10, scaricando la quale potrete avere una copia del mio libro “OFFICE 2016 PER PRINCIPIANTI” pubblicata in cartaceo su Amazon (a colori http://bit.ly/office2016colori – in bianco e nero http://bit.ly/office2016bn, rispettivamente a 51,90 € e a 15,50 €).

Su Microsoft Store, invece, potete ottenerla al prezzo competitivo di 2,99 € visitando questo indirizzo:

https://www.microsoft.com/it-it/store/p/garage40-book/9nvq854f11bw?rtc=1

24993263_10155601250416971_4284645672449403797_n

La versione sullo Store è uguale alla copia a colori cartacea e quindi il vantaggio economico è enorme per chi volesse preferire la versione digitale piuttosto che quella cartacea.

A chi potrebbe servire una “app-book” come questa? A studenti (dalle elementari in su), a persone più “mature” che volessero imparare a usare Office, alle aziende che volessero organizzare corsi per i propri dipendenti, a singole persone che devono partecipare a una selezione di lavoro (concorso, colloquio con prove pratiche ecc.) e, perché no?, anche a persone semplicemente curiose.

Il vantaggio di una “app-book” in sostanza qual è? In questo caso abbiamo un libro “completo” con argomenti che vanno da Office 2016 in generale, fino ai dettagli d’uso di Word, Excel e Power Point. Ma non finisce qui: chiunque può segnalare un refuso, un errore nel testo e questo sarà corretto nella versione successiva, pubblicata nello Store e aggiornata automaticamente da Windows 10! Inoltre il libro così com’è è virtualmente “finito” (come può esserlo un libro di testo stampato), ma è potenzialmente suscettibile di adeguamenti, modifiche ed estensioni. Per esempio, se le richieste saranno relativamente numerose, si potrà aggiungere un ulteriore capitolo su un argomento di interesse, sempre incentrato su Office 2016.

Insomma, sono molto soddisfatto di questo primo risultato e spero che possa piacervi.

Buona lettura! Winking smile

Rilasciata la versione 15.5 di Visual Studio 2017 + Visual Studio for Mac

Proprio ieri è stata rilasciata la versione 15.5 di Visual Studio 2017, nonché una versione specifica di Visual Studio per Mac, ecco il blogpost con cui è stato fatto l’annuncio: https://blogs.msdn.microsoft.com/visualstudio/2017/12/04/visual-studio-2017-version-15-5-visual-studio-for-mac-released/.

Questo aggiornamento ha puntato molto sulle performance di Visual Studio: ad esempio il caricamento di un progetto può avvenire in solo 9 secondi (ovviamente la velocità dipende anche da altri fattori, ma il risultato è comunque straordinario).

2017-12-05_05-32-02



Ci sono poi altri miglioramenti in molti altri ambiti, come nei linguaggi C#, C++ e F# (purtroppo niente per Visual Basic), il supporto a Docker, diagnostica, unit testing, Azure, Xamarin… insomma, così tante novità che vi consiglio di leggere il post dell’annuncio del team di sviluppo e gli altri link correlati.

Buon aggiornamento! Winking smile


Aggiornamento dell’add-in Arduino IDE for Visual Studio

Anche Visual Micro ha aggiornato il suo prodotto: attraverso le notifiche di Visual Studio 2017, se l’avete già installato, vedrete che potete aggiornarlo alla versione 1711.19.0, rilasciata proprio oggi (19 novembre 2017).

Se lo utilizzate per i vostri progetti con Arduino, vi raccomando di aggiornare questo add-in periodicamente, in modo da avere sempre la versione corretta e con le funzionalità più recenti.

Winking smile

Rilasciata la nuova versione 15.4.4 di Visual Studio 2017

Nel tempo è diventata una consuetudine: ancora una volta è stata rilasciata, in tempi estremamente rapidi (solo 6 giorni dopo la build 15.4.3) una nuova build di Visual Studio 2017 e precisamente la 15.4.4.

Potete consultare le note di release alla pagina:

https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes#15.4.4.

Buon aggiornamento! Winking smile

TechSmith: SnagIt 2018 e Camtasia 9.1.0

Questo piccolo post per un semplice ringraziamento a TechSmith (https://www.techsmith.com/) che mi ha inviato gratuitamente le licenze d’uso delle nuove versioni di SnagIt 2018 (un software che permette di ritagliare immagini dallo schermo e di modificarle o di fare delle registrazioni dallo schermo) e di Camtasia 9.1.0 (un altro software che permette non solo di registrare video dallo schermo e audio dal microfono, ma anche di fare editing di qualità professionale).

Con questi software è estremamente facile prendere delle immagini dallo schermo per poi scrivere articoli, tutorial ecc., ma anche creare dei tutorial “video”, dove le spiegazioni diventano veramente efficaci e intuitive perché si può “far vedere come si fa” piuttosto che spiegarlo con centinaia o migliaia di parole.

Grazie ancora, vi sono infinitamente grato. Winking smile

Arduino & C. – Un mio articolo su ioProgrammo

Volete creare un pianoforte elettronico con Arduino e Visual Studio?

Su ioProgrammo in edicola in questi giorni (“Novembre 2017”) c’è il mio articolo con programmazione in Visual Basic e in C# (ved. riquadro in basso a destra).

Buona lettura e buon divertimento! Winking smile

ioprogrammo_november2017

Annunciato il nuovo .NET Framework 4.7.1

La nuova versione del .NET Framework 4.7.1 porta con sé numerosi miglioramenti, relativamente a:

  • accessibilità (narrazione, alto contrasto ecc.)
  • supporto di .NET Standard 2.0
  • sicurezza
  • ASP.NET
  • applicazioni WPF
  • miglioramento delle prestazioni e dell’affidabilità

microsoft-net-framework-4.71

Qui trovate l’annuncio ufficiale nel blog del team di sviluppo .NET:

https://blogs.msdn.microsoft.com/dotnet/2017/10/17/announcing-the-net-framework-4-7-1/

Nella stessa pagina ci sono i link per scaricare il pacchetto di installazione, sia in versione ridotta (Web Installer) che in versione completa (Offline Installer).

SQL Server 2017, la nuova versione del DBMS targato Microsoft

Il team di sviluppo di SQL Server, pochi giorni fa, ha annunciato alcune delle novità che sono state introdotte nella nuova versione SQL SERVER 2017, appena rilasciata per il download.

Al seguente indirizzo trovate l’annuncio ufficiale dal blog del team di sviluppo di SQL Server (ma riporto il testo anche qui di seguito): http://bit.ly/annuncioss2017

Final version of SQL Server 2017 is available for download. New version of SQL Server has a lot of enhancements compared to the previous version.

In this post will be highlighted some of the new features that are available:

Cross-platform support – you can run SQL Server 2017 on Windows, Linux, and Docker containers.

Built-in intelligence – SQL Server supports Python and native scoring using PREDICT function.

T-SQL Language enhancements – There are several enhancements in T-SQL language such as graph processing, new string functions (TRIM, TRANSLATE, CONCAT_WS), and aggregate (STRING_AGG) new Japanese collations that are unique in database market.

Intelligent query processingAutomatic tuning continuously monitors query performance and forces previous plans if some performance regression is detected. Execution of Multi-statement Table value functions is faster thanks to the interleaved execution. Batch mode processing now includes adaptive join operators and leverages memory grant feedback information to execute plans more efficiently.

Column-store enhancements – Clustered columnstore indexes support LOB types and enable you to compress your NVARCHAR(MAX), VARCHAR(MAX) and VARBINARY(MAX) columns up to 25x ratio, non-persisted computed columns enable you to put calculated expressions directly in table definitions,  NONCLUSTERED COLUMNSTORE indexes support online build/rebuild.

In-memory OLTP  enhancements – Memory optimized tables now support computed columns, naively compiled modules support new string and JSON functions, CASE statement, and WITH TIES.

Native import enhancements – BULK INSERT and OPENROWSET enable you to and to load files from Azure Blob Storage. Also, import functions are able to parse real CSV files and correctly process quoted characters.

Better monitoring – Query Store now provides you information about wait stats and a lot of new DMVs are added.

These are just some of the new features that are available in SQL Server 2017. You can find more information about new features in SQL Server 2017 here.


Mi sembra che le novità siano piuttosto interessanti, no? Winking smile

Arduino Raspberry & C. – Windows 10 IoT Core, un libro interessante

Da quando ho iniziato a interessarmi a questo grande mondo dei microcontroller, appena un paio di mesi fa, ho studiato, sperimentato e scritto molto.
Tra le tante cose che ho visto e letto, sicuramente un posto di rispetto va al libro”Windows 10 IoT Core: Il manuale per maker”, 479 pagine per 19.90 € (per Kindle), reperibile su Amazon.
Vi si parla di Wiring, Virtual Shields e appunto di Windows 10 IoT Core, per Arduino e per Raspberry Pi.
Leggetelo, ne vale la “pena” 😉

Arduino & C. – Massimo Banzi ha spiegato la situazione attuale di Arduino

Oggi voglio mettervi al corrente brevemente di cosa ha riferito Massimo Banzi (uno dei 5 fondatori originali di Arduino) all’evento “MAKER FAIRE NEW YORK 2017” (23 settembre 2017) in merito alla situazione attuale di Arduino e quale sarà lo sviluppo futuro.

Banzi conferma per Arduino alcuni concetti chiave: open source, sviluppo aperto, il sito ufficiale è http://arduino.cc (da arduino.org ci sarà un redirezionamento automatico a arduino.cc) e il lancio di due nuovi fattori di forma di ARDUINO MKR.

Il mondo Arduino quindi appare nettamente in movimento verso il futuro: nuove schede, novità all’IDE e al linguaggio degli sketch, cloud e molto altro.

Eccovi alcune foto dell’evento Winking smile.

Fonte delle foto: https://blog.adafruit.com/2017/09/23/state-of-arduino


Arduino & C. – Una ulteriore considerazione sulla sicurezza

In tema di “sicurezza”, leggendo una discussione in un gruppo Facebook dedicato ad Arduino ho imparato una cosa che non sapevo e che nemmeno mi era passata per la mente.

sicurezza

Chi fa sperimentazione come sto facendo io, con Arduino (o Raspberry) e vari componenti elettronici, ha la tendenza di seguire questo modo di operare:

  1. a scheda staccata dall’alimentazione, predispongo i sensori o gli attuatori con i relativi collegamenti via jumper, alla breadboard o direttamente alla scheda del microcontroller;
  2. scrivo lo sketch da caricare sulla scheda (perlomeno uno sketch iniziale, soggetto a varie correzioni);
  3. attivo l’alimentazione della scheda;
  4. invio lo sketch alla scheda e verifico i risultati: se c’è qualcosa che non va bene, stacco l’alimentazione e cambio le connessioni oppure modifico lo sketch e lo ricarico nella scheda, finché non ho ottenuto il risultato desiderato.

Bene, non so quanti di voi hanno considerato cosa succede tra il punto 3 e il punto 4 (io no!): quando attaccate la scheda all’alimentazione, se non è una scheda nuova (dotata di un semplice Blinker), la scheda ha una prima fase di assestamento dei componenti e poi, a regime, avvia lo sketch che avevate caricato in precedenza. Ne consegue che potreste dare corrente in uscita su un pin che invece, nella nuova configurazione, dovrebbe leggere un valore da un sensore. Questo significa che, inconsapevolmente, potreste fare la cosa sbagliata, con il risultato di danneggiare qualcosa.

Per operare nella massima sicurezza, quindi, ricordatevi sempre questi “precetti”:

  • Regola n. 0: la sicurezza prima di tutto; state lavorando con la corrente (anche se a basso voltaggio), quindi state attenti;
  • Regola n. 1: quando finite un esperimento con una certa configurazione di componenti, prima di spegnere la scheda caricate uno sketch vuoto come questo:

void setup() {
}


void loop() {
}

In questo modo, alla riaccensione avrete una scheda che non fa assolutamente nulla (ma nemmeno danni!), finché non caricate lo sketch su cui state lavorando.

Mi raccomando, massima attenzione a quello che fate!

Buon divertimento Winking smile

Arduino & C. – Nuovo articolo per ioProgrammo (Pianoforte)

[AGGIORNATO]

Mi scuserete se mi sono preso una pausa dai post su Arduino & C., ma dovevo assolutamente finire un articolo per IoProgrammo.

L’articolo tratta l’utilizzo di un’applicazione in Visual Basic e un’applicazione “gemella” in C# per pilotare una scheda Arduino a cui ho collegato un buzzer (ma ho provato anche con un piccolo speaker), ho codificato i tasti del PC e in base al tasto viene emesso un suono a una certa frequenza.

Immagine04

Nell’articolo ho messo anche 4 brevi brani musicali che servono come esempio di melodia suonata da Arduino, con tanto di pause. Eccoli qui:

  • We wish you a Merry Christmas“:

    Z-N-NANBC-C-C-A-ADANB-Z-Z-D-DFDAN-C-Z-C-A-B-N

  • “Tanti auguri a te”:

    Z-Z-CC-Z-N-B—Z-Z-CC-Z-A-N—Z-Z-HH-D-N-B-C—F-F-DD-N-A-N

  • “La marcia dell’impero” (da Star Wars):

    VV-VV-VV-<<MVV-<<MVV—FF-FF-FF-GGMVV-<<MVV—22-KK-22-11POIO

  • “Andiam, andiam, andiamo a lavorar!” (da “Biancaneve e i 7 nani”)

    CA–MB–ADGDAM–CBACCBMAHG–AD–MA

Non voglio pubblicare un video con queste musiche per non togliervi la sorpresa… Trovate il video qui: http://bit.ly/ArduinoPianoforte

Volete provare? Nel numero del mese di ottobre (o al massimo di novembre) lo troverete su IoProgrammo!

Non appena avrò conferma della pubblicazione vi farò sapere tramite questo blog (e in automatico su Facebook, Twitter e LinkedIn).

Buon divertimento Winking smile

Arduino & C. – INPUT_PULLUP e i pulsanti

Nel mio post del 13 settembre ho inserito un paio di istruzioni come queste:

   pinMode(pulsante, INPUT);
   digitalWrite(pulsante, HIGH);

per attivare il resistore di pull-up (che nella figura seguente vedete indicato da R1).


Pullup


Da non confondere con questo:  Open-mouthed smile

pullup_var

La stessa cosa si può fare utilizzando la costante INPUT_PULLUP al posto di INPUT.

In questo caso dovremo scrivere una istruzione in meno, cioè non servirà più digitalWrite(…) perché sarà implicita nella istruzione precedente. Ecco la nuova versione:

   pinMode(pulsante, INPUT_PULLUP);

Trovate questa nuova versione nel mio post del 15 settembre.

Se volete approfondire questo argomento, visitate la pagina seguente: https://www.arduino.cc/en/Reference/Constants.

Buon pull-up!

Arduino & C. – Potenziometro

Ci sono tante forme diverse di potenziometro: per esempio possono essere dei cursori o delle manopole (strette o larghe), con fermo-corsa da entrambi i lati o a rotazione continua.

Generalmente hanno tre piedini (uno per l’alimentazione a +5V, uno per GND e uno per rilevare il valore della tensione e quindi la “posizione”), ma alcuni potenziometri rotanti (“rotary encoder”) possono avere anche un pulsante e hanno cinque piedini.

Questi sono alcuni potenziometri:

pot1pot2pot3pot4pot5pot6pot7

… e il simbolo elettrico è questo:

SimboloPotenziometro

Un potenziometro non è altro che un dispositivo che rileva una resistenza variabile che quindi fa variare la tensione da zero a +5V, attraverso un cursore che scorre sul resistore. Una maggiore distanza tra l’alimentazione e il punto di contatto del cursore comporta un tratto maggiore del resistore e quindi una resistenza più alta, mentre una minore distanza fa rilevare una resistenza minore. Il potenziometro rotante senza fine corsa è un caso particolare, perché abbiamo una codifica digitale della rotazione, in un senso o nell’altro.

Per leggere un valore graduale che non sia semplicemente il valore di tensione (HIGH) o il valore GND (LOW), bisogna che il piedino del segnale sia collegato a un pin analogico (uno di quelli che nelle schede Arduino sono contrassegnati dalla sigla A0, A1 … ecc.) oppure a uno dei pin contrassegnati dalla “tilde” (~) che indica che è uno dei pin PWM (Pulse Width Modulation = modulazione ad ampiezza di impulso).

Se utilizzate un potenziometro installato su una schedina come quella della prima immagine che ho riportato qui sopra (con tre piedini), potete immediatamente sapere lo scopo di ciascun piedino: GND va sul polo negativo (pin GND), VCC va sul polo positivo (+5V) e SIG va su un pin della scheda che utilizzeremo per leggere il segnale, cioè il valore della tensione rilevata con la resistenza variabile oppure il valore codificato se il potenziometro è digitale.

Vediamo ora un potenziometro a tre piedini in un circuito collegato ad Arduino:

CircuitoPotenziometro


Se scambiate i jumper di alimentazione (+5V) e di massa (GND) non succede nulla di grave, ma ottenete il comportamento opposto a quello “normale”: girando a sinistra aumenterà il segnale (la tensione), girando a destra diminuirà.

Ora vediamo uno sketch che possiamo scrivere e caricare sulla scheda per attivare i pin e per leggere il valore del potenziometro. Per semplicità, a tale scopo utilizzeremo il Monitor Seriale, ma potremmo utilizzare molti altri metodi: un lampeggiamento più veloce o più lento di un LED, un display a cifre “a 7 segmenti”, un display LCD o, tramite la porta seriale, in una nostra applicazione Visual Studio.

int encoderPin1 = 2;
int encoderPin2 = 3;
 
volatile int lastEncoded = 0;
volatile long encoderValue = 0;
 
long lastencoderValue = 0;
 
int lastMSB = 0;
int lastLSB = 0;
 
void setup() {
   Serial.begin (9600);
 
   pinMode(encoderPin1, INPUT_PULLUP);
   pinMode(encoderPin2, INPUT_PULLUP);
 
   attachInterrupt(0, updateEncoder, CHANGE);
   attachInterrupt(1, updateEncoder, CHANGE);
 
}
 
void loop(){
   Serial.println(encoderValue);
}
 
void updateEncoder(){
   int MSB = digitalRead(encoderPin1); //MSB = most significant bit
   int LSB = digitalRead(encoderPin2); //LSB = least significant bit
 
   int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
   int sum  = (lastEncoded << 2) | encoded; //adding it to the previous encoded value
 
   if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue –;
   if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue ++;
 
   lastEncoded = encoded; //store this value for next time
}

In questo esempio, se ruotate in un verso o nell’altro il valore aumenterà o diminuirà di 4 unità per ogni “scatto”.

Il codice di cui sopra funziona anche se avete, come ho io, un “rotary encoder” come questo:

KY-040

Keyes KY-040

In questo caso, se ruotate premendo contemporaneamente il pulsante vedrete che l’incremento o la diminuzione sarà di una sola unità.

Il significato dei cinque piedini di questo dispositivo è il seguente:

  • GND: è il contatto a massa (“terra”)
  • +: è il contatto che va all’alimentazione (cioè il pin +5V)
  • SW: significa “switch” e rileva la pressione del pulsante NO (normally open = normalmente aperto)
  • DT: è il piedino che, come nel caso del dispositivo a tre piedini, rileva il segnale
  • CLK: è un altro piedino che rileva un valore sfalsato di 90° rispetto al segnale DT

Se volete una spiegazione dettagliata sul funzionamento di questo dispositivo e il significato dei piedini DT e CLK, potete visitare la pagina http://bit.ly/encoderKY040 dove è spiegato tutto molto bene.

Lo schema dei collegamenti è il seguente:

RotaryEncoder5pin

Questo è il codice dello sketch che potete utilizzare:

volatile boolean TurnDetected;
volatile boolean rotationdirection;


const int PinCLK=2;
const int PinDT=3;
const int PinSW=4;


int RotaryPosition=0;


int PrevPosition;


void isr ()  {
   delay(50);  // ritardo per effetto “rimbalzo”
   if (digitalRead(PinCLK))
     rotationdirection= digitalRead(PinDT);
   else
     rotationdirection= !digitalRead(PinDT);
   TurnDetected = true;
}


void setup ()  {
   pinMode(PinCLK,INPUT);
   pinMode(PinDT,INPUT); 
   pinMode(PinSW,INPUT);
   digitalWrite(PinSW, HIGH); // resistore di Pull-Up per lo switch
   attachInterrupt (0,isr,FALLING);
   Serial.begin(9600);
}


void loop ()  {
   if (!(digitalRead(PinSW))) {
     if (RotaryPosition == 0) {
     } else {
         RotaryPosition=0;
         delay(50);
         Serial.println(RotaryPosition);
       }
     }


  if (TurnDetected)  {
     PrevPosition = RotaryPosition;
     if (rotationdirection) {
       RotaryPosition=RotaryPosition+1;}
     else {
       RotaryPosition=RotaryPosition-1;}


    TurnDetected = false;


    if ((PrevPosition + 1) == RotaryPosition) {
         Serial.println(RotaryPosition);
     }


    if ((RotaryPosition + 1) == PrevPosition) {
         Serial.println(RotaryPosition);
     }
   }
}

Caricate questo sketch sulla scheda Arduino e aprite il Monitor Seriale: vedrete che la rotazione provocherà un aumento o una diminuzione del valore, mentre la pressione del pulsante azzererà il valore perché abbiamo voluto impostare una funzione di “reset”. Ovviamente possiamo fare in modo che la pressione del pulsante abbia qualche altro significato (per esempio, in un gioco potrebbe essere il pulsante di “sparo”).

Non voglio dilungarmi ulteriormente con le spiegazioni su questo dispositivo, anche perché molto probabilmente lo utilizzerò in qualche progetto futuro.

E’ il momento di passare a un altro argomento… preparatevi!  Winking smile







.