SOFTWARE
|
IoT
70
EMBEDDED
55 • FEBBRAIO • 2015
Cloud, gli sviluppatori Qt possiedono una
gamma di strumenti cloud basati su API e
conformi a REST (RESTful) e un pacchetto
di API Qt Cloud per l’uso diretto da parte dei
client Qt. Questi servizi (Fig. 3) comprendono
l’Enginio Data Storage, il Managed WebSo-
ckets per collegamenti bidirezionali in tempo
reale e il Managed Runtimes per trasferire
porzioni di implementazione o di calcolo —
scritte con tecnologie lato server tradizionali,
o utilizzando direttamente le API Qt — sul
lato server scalabile.
Soprattutto per sistemi che raccolgono e ana-
lizzano grosse quantità di dati — i sistemi
Big Data — questa architettura lato server
scalabile aiuta a mantenere i dispositivi em-
bedded nel campo sempre ragionevolmente in
funzione.
Supporto multipiattaforma
Oltre allo stack software del nucleo dell’IoT,
lo sviluppatore deve anche considerare il
supporto a lungo termine, la manutenzione,
gli upgrade e le migliorie. Man mano che
evolvono, i sistemi basati su IoT devono dare
la possibilità di integrare nuovi componenti
che possano lavorare bene con i dispositivi
esistenti. Il problema degli sviluppatori di
sistemi embedded è la varietà di piattaforme
che devono supportare. Serve un ambiente di
sviluppo che permetta al software di essere
utilizzato in un ampia varietà di ambienti
dalle caratteristiche molto diverse, con il mi-
nimo numero di modifiche al codice sorgente.
I sistemi IoT comprendono non solo la cre-
azione di dispositivi embedded intra-connes-
si, ma anche la disponibilità di applicazioni
client per interagire con i dispositivi embed-
ded e i relativi dati. Oggi possono essere mol-
te le piattaforme supportate: servizi web su
browser, telefoni, tablet e computer desktop
con sistema Android, iOS o Windows. L’uso
di una tecnologia multipiattaforma può con-
tribuire a servire gran parte delle attuali – e
future – piattaforme.
Il codice scritto in ambiente Qt gira su un’am-
pia varietà di sistemi operativi, da piatta-
forme intese per sistemi profondamente em-
bedded basati su sistemi operativi in tempo
reale, a Linux embedded fino a macchine
interamente desktop e dispositivi mobili. La
normale logica di business può essere utiliz-
zata su nodi di sensore e dispositivi mobili su
cui gira software con grafica intensiva come
Android.
Qt fornisce un elevato grado di portabilità at-
traverso classi e strumenti, oltre che funzio-
ni di interfaccia utente. Grazie alla varietà
di strumenti grafici, gli sviluppatori possono
massimizzare la portabilità, pur continuando
a mantenere la capacità di calibrare l’appli-
cazione in base al tipo di sistema utilizzato.
Ad esempio, un sensore wireless indossabile
a display può usare una grafica semplice ba-
sata su icone statiche e caratteri. Il display
di un’applicazione Android può invece sfrut-
tare appieno le animazioni e le funzioni mul-
titocco.
Tra i tool Qt per lo sviluppo di interfacce gra-
fiche vi sono Qt Quick e Qt Widgets, prin-
cipalmente ottimizzate per interfacce per lo
più statiche; queste sono utili nei dispositivi
con potenza di elaborazione limitata e display
piccoli e semplici. Qt Quick (Fig. 4) utilizza
il linguaggio QML che offre un approccio di-
chiarativo di alto livello alla progettazione
dell’interfaccia e può essere utilizzato insie-
me da progettisti e sviluppatori.
È progettato per supportare i moderni
processi di prototipazione rapida e per creare
interfacce tattili altamente interattive.
Grazie all’impiego di HTML5 nell’interfaccia
grafica, Qt è in grado di offrire un completo
motore di rendering basato su Chromium, il
Qt WebEngine.
Per un’applicazione che può essere eseguita
su più piattaforme – embedded, mobili o de-
sktop – il codice della logica di business che
utilizza Qt può essere condiviso fino all’80%.
Utilizzando le caratteristiche di Qt Quick,
l’interfaccia grafica può essere progettata
per essere adattabile a piattaforme di diffe-
renti dimensioni.
Se per ambienti diversi occorrono layout se-
parati, un livello comune o componenti comu-
ni e stili con file di layout piccoli e separati
aiutano a massimizzare il riuso di codice. An-
che se i target sono diversi, è sufficiente una




