Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale

Click here to load reader

  • date post

    17-May-2015
  • Category

    Technology

  • view

    2.328
  • download

    4

Embed Size (px)

description

Tesi di laurea magistrale in Ingegneria Informatica realizzata con il gruppo di ricerca e-Lite del Politecnico di Torino (http://elite.polito.it)

Transcript of Interfaccia utente basata su eye-tracking per sistemi di controllo ambientale

  • 1. POLITECNICO DI TORINOIII Facolt di IngegneriaCorso di Laurea in Ingegneria Informatica Tesi di Laurea MagistraleInterfaccia utente basata su eye-tracking per sistemi di controlloambientale Relatori: prof. Fulvio Corno dott. Emiliano CastellinaCandidato:Luigi De Russis Febbraio 2010

2. Indice1 Introduzione 1 1.1 Contesto generale . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 1 1.2 Gaze tracking, interfacce utente e domotica .. . . . . . . . . . . . . . 2 1.3 Speciche COGAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Struttura della tesi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Obiettivi93 Soluzioni tecniche adottate17 3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 Ambiente domotico . . . . . .. . . . . . . . . . . . . . . . . . . . . . 18 3.2.1 DOG . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . 19 3.2.2 DogOnt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.3 Eye Tracking Universal Driver(ETU-Driver). . . . . . . . . . . . . . 244 Tecnologia utilizzata27 4.1 Windows Presentation Foundation . . . . .. . . . . . . . . . . . . . . 27 4.2 XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2.1 Caratteristiche . . . . . . . . . . .. . . . . . . . . . . . . . . 32 4.2.2 Code-behind . . . . . . . . . . . . .. . . . . . . . . . . . . . . 37 4.3 Compatibilit con le tecnologie precedenti . . . . . . . . . . . . . . . 38 4.3.1 Integrare controlli Win32 in WPF . . . . . . . . . . . . . . . . 39 4.3.2 Integrare controlli WPF in Win32 . . . . . . . . . . . . . . . . 40 4.3.3 Integrare Windows Forms e WPF .. . . . . . . . . . . . . . . 40 4.3.4 Integrare controlli ActiveX in WPF . . . . . . . . . . . . . . . 41 4.4 Dierenze rispetto alle Windows Forms . .. . . . . . . . . . . . . . . 41 4.4.1 Vantaggi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 4.4.2 Svantaggi . . . . . . . . . . . . . .. . . . . . . . . . . . . . . 435 Progettazione e implementazione45 5.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45II 3. 5.2 Scelte progettuali e funzionalit . . . . . . . . . . . . . . . . . . . . . 485.2.1 Home Management ed Electric Device. . . . . . . . . . . . 525.2.2 Entertainment . . . . . . . . . . . . . . . . . . . . . . . . . . . 585.2.3 Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.2.4 Security e gli allarmi . . . . . . . . . . .. . . . . . . . . . . . 615.2.5 Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.2.6 Everything Else . . . . . . . . . . . . . . . . . . . . . . . . . . 645.2.7 Settings . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 655.3 Realizzazione dellinterfaccia utente . . . . . . . . . . . . . . . . . . . 655.3.1 Layout . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 685.3.2 Layout dei tab . . . . . . . . . . . . . .. . . . . . . . . . . . 705.3.3 Interazione con DOG . . . . . . . . . . . . . . . . . . . . . . . 735.3.4 Interazione con lETU-Driver . . . . . .. . . . . . . . . . . . 765.3.5 Organizzazione e riusabilit del codice . . . . . . . . . . . . . 786 Risultati ottenuti 79 6.1 Analisi qualitativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 6.2 Analisi quantitativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 6.3 Valutazione rispetto alle speciche COGAIN . . . . . . . . . . . . . . 817 Conclusione e sviluppi futuri 85 7.1 Possibili sviluppi futuri . . . . . . . . . . . . . . . . . . . . . . . . . . 85A Microsoft Expression Design88B Modello della casa utilizzato91C Esempio di codice XAML 94Bibliograa97 III 4. Elenco delle tabelle 2.1 Rapporto tra raccomandazioni e interfacce utente per il controllodomotico esistenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.2 Linee guida COGAIN per la realizzazione di unapplicazione di con-trollo ambientale . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 124.1 Alcune comuni keyword XAML . . . . . . . . . . . . . . . . . . . . . 354.2 Vantaggi e svantaggi di WPF . . . . . . . . . . . . . . . . . . . . .. 445.1 Attribuzione dei colori ai bottoni dellUI in base alla loro funzione .. 525.2 I principali pannelli presenti in XAML . . . . . . . . . . . . . . . . . 706.1 Speciche computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806.2 Utilizzo della RAM da parte di DOGeye . . . . . . . . . . . . . . .. 806.3 Utilizzo della CPU da parte di DOGeye . . . . . . . . . . . . . . . .. 816.4 Valutazione di DOGeye secondo le linee guida COGAIN . . . . . .. 82IV 5. Elenco delle gure 1.1Un esempio di eye-tracker commerciale: MyTobii P10 . . . . . . . ..31.2Un programma per la video-scrittura, basato su eye-tracking . . . . .52.1Vista, ad alto livello, del contesto in cui si colloca linterfaccia utente da realizzare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92.2Due interfacce utente per ambienti domotici . . . . . . . . . . . . . . 103.1Come linterfaccia utente connessa a DOG e alleye-tracker . . . .. 173.2Un esempio di architettura logica di ambiente domotico . . . . . . .. 183.3Larchitettura logica di DOG . . . . . . . . . . . . . . . . . . . . . .. 203.4Lontologia DogOnt . . . . . . . . . . . . . . . . . . . . . . . . . . .. 233.5Parte dellarchitettura dellETU-Driver . . . . . . . . . . . . . . . . . 244.1Le tecnologie incluse nel framework .NET . . . . . . . . . . . . . .. 285.1Larchitettura generale dellambiente . . . . . . . . . . . . . . . . . . 455.2La versione preliminare di DOGeye . . . . . . . . . . . . . . . . . . . 465.3Il mock-up di DOGeye . . . . . . . . . . . . . . . . . . . . . . . . .. 485.4Linterfaccia DOGeye . . . . . . . . . . . . . . . . . . . . . . . . . .. 495.5Aspetto di DOGeye quando lutente necessita qualche tipo di aiuto . 505.6La planimetria della casa, cos come viene visualizzata in Home Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535.7I tre possibili comportamenti ottenibili selezionando una stanza nei primi due tab di DOGeye . . . . . . . . . . . . . . . . . . . . . . . . 555.8Un esempio di interazione: aprire una porta . . . . . . . . . . . . . . 575.9Unesempio di notica . . . . . . . . . . . . . . . . . . . . . . . . . . 575.10 Caratteristica di Entertainment . . . . . . . . . . . . . . . . . . . . 595.11 Esempio di come viene indicata la temperatura di una stanza, in Temperature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595.12 Esempio di come si imposta la temperatura del riscaldamento di tutta la casa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605.13 Il tab Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615.14 Esempio di gestione di un allarme . . . . . . . . . . . . . . . . . . . . 625.15 Larchitettura generale di DOGeye . . . . . . . . . . . . . . . . . . . 68A.1Microsoft Expression Design . . . . . . . . . . . . . . . . . . . . . . . 88V 6. Capitolo 1Introduzione1.1 Contesto generale Secondo lindagine ISTAT sulla Condizione di salute e il ricorso ai servizi sanitari del 2004-2005, in Italia ci sono 2 790 134 persone di et superiore a 6 anni aitte da disabilit, considerando anche le persone residenti nei presidi socio-sanitari. Qui, per disabilit si intende qualsiasi limitazione o perdita della capacit di compiere unattivit nel modo o nellampiezza considerati normali per un essere umano. Per i disabili, quindi, possono risultare dicili o impossibili anche operazioni relativamente semplici; riferendoci a un ambiente domestico, per esempio, potrebbe risultare dicoltoso anche il gesto di premere un interruttore per accendere una luce di una stanza, a causa dellimpossibilit di raggiungere la posizione del pulsante o per lassenza della forza necessaria a premerlo. In questo contesto, si possono inserire i concetti di controllo dellambiente domestico e di usabilit. Il controllo dellambiente domestico il controllo, linterazione e il monitoraggio di un ambiente attraverso una tecnologia intermediaria, come un computer; ci si riferisce a esso anche con il termine domotica. Per un disabile, un sistema di controllo ambientale potrebbe essere lunico modo per interagire con la sua casa, mantenendo cos la propria indipendenza. Lo scopo di un sistema domotico, allora, quello di ridurre il carico di lavoro giornaliero delloccupante di una casa e permettergli di vivere il pi possibile autonomamente. stato detto che la domotica necessita di una tecnologia, come un computer, che si ponga tra i dispositivi veri e propri della casa e il suo occupante. Il computer, a sua volta, pu avere diverse modalit di interazione verso luten- te, come mouse e tastiera, per citare le pi comuni. Non tutti questi dispositivi di input, per, possono essere utilizzati con facilit da una persona disabile. Bisogna, quindi, valutare una modalit di interazione dierente ed, eventualmente, modi- care o riscrivere del tutto linterfaccia utente che, in questo caso, il componente 1 7. 1 Introduzione utilizzato dallutente per interagire con la sua casa attraverso il computer. Qui entra in gioco il concetto di usabilit, denita dallISO (International Orga- nisation for Standardisation), come lecacia, lecienza e la soddisfazione con le quali determinati utenti raggiungono determinati obiettivi in determinati contesti. In pratica essa denisce il grado di facilit e soddisfazione con cui linterazione tra un essere umano e una macchina si compie. Riferendosi in particolare a questa interfaccia utente, lusabilit pu essere de- nita come lo strumento che indica quanto le funzionalit dellinterfaccia si adattino ai bisogni e alle aspettative, siche e mentali, dellutente disabile che, tramite essa, vuole controllare la propria abitazione. Quindi lapprendimento delle varie funzionalit dellinterfaccia e il loro successivo utilizzo dovrebbe essere un processo estremamente semplice e intuitivo, cos che essa possa davvero essere adatta al modello mentale e alle dierenti esigenze di ogni utente che la voglia usare. 1.2 Gaze tracking, interfacce utente e domotica Nel paragrafo precedente si aermava la necessit di valutare modalit di interazione tra lutente e il computer dierenti dai classici mouse e tastiera. Ci possono essere diverse alternative, ognuna che presenta dei vantaggi e degli svantaggi: per questo progetto stato scelto il gaze tracking (chiamato anche, in italiano, tracciamento del punto ssato), che una tecnica utilizzata per poter con- trollare il computer tramite la stima del punto osservato sullo schermo dallutente. In questo caso specico esso si basa sul tracciamento degli occhi, prendendo cos il nome di eye-tracking. Leye-tracking, o tracciamento oculare, una tecnica utilizzata in molti cam- pi, tra cui le scienze cognitive, la psicologia, linformatica e linterazione uomo- computer, per registrare i movimenti degli occhi. In particolare, vengono misurate e analizzate la posizione degli occhi e il loro movimento relativo alla testa, utilizzan- do svariati metodi: alcuni prevedono lutilizzo di immagini video dalle quali viene estratta la posizione dellocchio mediante tecniche di computer vision; altri utilizzano la tecnica del riesso corneale, che consiste nellinviare un piccolo fascio luminoso infrarosso al centro della pupilla e dedurre dalle variazioni del riesso ottenuto i movimenti eettuati dallocchio, solo per citarne un paio. Gli strumenti che permettono di eseguire queste misurazioni si chiamano eye- tracker e si possono distinguere in due categorie: sistemi a postazione ssa, che sono cio posizionati su un supporto di qualchetipo, distante dallutente; 2 8. 1 Introduzione sistemi indossabili, quindi a diretto contatto con lutente, in genere sottoformadi visori da utilizzare come fossero degli occhiali.Figura 1.1: Un esempio di eye-tracker commerciale: MyTobii P10A titolo di esempio, si considerino gli eye-tracker a postazione ssa, come quello mostrato in gura 1.1. Questi eye-tracker, generalmente, sono personal computer a tutti gli eetti, che integrano anche un paio di emettitori a raggi infrarossi e una telecamera ad alta denizione, sensibile agli infrarossi: il sistema utilizza la tecnica del riesso corneale per stabilire il punto dello schermo osservato. Non tutto il sistema funziona, per, grazie alleye-tracking: ne usufruiscono solo alcune applicazioni, in genere pre-installate allinterno della macchina. Il sistema operativo, che nelleye-tracker mostrato in gura Windows XP, a titolo di esem- pio, e nativamente funziona grazie al mouse e alla tastiera; questo accade poich linterazione basata su eye-tracking necessita che le interfacce utente dei programmi che la vogliano utilizzare abbiano alcune caratteristiche particolari, dettate dalla natura stessa di questo tipo di interazione. possibile utilizzare Windows anche con leye-tracker, ma necessario utilizzare un apposito programma che permetta di provare a compiere tutte le operazioni che normalmente si eettuerebbero con lausilio del mouse e che, in alcune occasioni, permetta anche di ingrandire certi oggetti che risultano troppo piccoli per essere selezionati col tracciamento dello sguardo.3 9. 1 Introduzione In generale, infatti, non possibile utilizzare leye-tracking come sostituto com- pleto del mouse: ci non fattibile per il modo in cui agiscono i nostri occhi e per la scarsa adabilit dei sistemi di eye-tracking esistenti.In particolare, leye-tracking: veloce e semplice poich gli occhi si possono muovere molto pi velocemente diqualsiasi altro dispositivo;rivela il punto di attenzione poich basta calcolare il punto in cui lutente sta guardando per capire dov diretta la sua attenzione;risente del tocco di Mida poich lo sguardo non fornisce lequivalente dei pul-santi di un mouse, non possibile sapere se lutente sta guardando un puntointenzionalmente oppure se sta solo spostando lo sguardo lungo lo schermo;bisogna pertanto utilizzare altri metodi di selezione, come il dwell time, checonsiste in un tempo di pausa, generalmente personalizzabile, durante il qualelutente dovr ssare loggetto dellinterfaccia con cui vuole interagire e poi,trascorso quel tempo, il sistema eettuer lazione collegata alloggetto chelutente stava ssando; sempre on poich linput fornito dallo sguardo sempre continuo, ntanto chesi rimane davanti al monitor;non invasivo poich il punto osservato viene rilevato senza bisogno di alcun tipodi contatto sico; anche per questo leye-tracking una buona scelta per idisabili che, magari, non possono utilizzare le mani;richiede calibrazione poich un sistema di eye-tracking, per essere usato con suc- cesso e al massimo delle sue possibilit, richiede di individuare correttamente la posizione degli occhi e il loro movimento durante una fase di test preliminare guidata.La gura 1.2 mostra una semplice interfaccia graca realizzata per un programma di video-scrittura da eseguirsi tramite eye-tracking. Com possibile vedere, essa dierisce molto dalle tipiche interfacce utente utilizzate, anche solo da quella di Windows, che si intravede sul fondo dellimmagine. Questinterfaccia condivide con altre interfacce basate su eye-tracking certe ca- ratteristiche, alcune delle quali sono molto evidenti. La dimensione degli oggetti: sono molto grandi. Questo perch leye-tracking, in linea generale, meno preciso di altri dispositivi di puntamento, come ilmouse, per esempio. 4 10. 1 IntroduzioneFigura 1.2: Un programma per la video-scrittura, basato su eye-tracking La semplicit e lordine dellinterfaccia: nella parte alta dello schermo si trovaun rettangolo di colore bianco che visualizza il testo man mano che lo si inse-risce, mentre nella parte bassa si trovano otto rettangoli equidistanziati lunodallaltro che permettono la scrittura. La facilit di navigazione: tutto l. Opzioni pi avanzate si possono trovare,probabilmente, selezionando lelemento Tools. La divisione a livelli : si immagini, ad esempio, di voler scrivere la parola ciao.Il primo passo da compiere sar quello di selezionare il primo quadrato, poichcontiene la prima lettera che serve. Una volta selezionato il primo quadrato,verranno visualizzati altri quadrati che conterranno un sottinsieme delle lettereselezionate. A questo punto, si potr selezionare direttamente la lettera c osi dovr selezionare un altro oggetto che, sempre per esempio, potr contenerele lettere cd. E cos via. Bisogner, quindi, navigare per livelli: infatti,visualizzare tutte le lettere dellalfabeto sullo schermo renderebbe i pulsantitroppo piccoli e si incorrerebbe in errori di scrittura molto frequentemente. La mancanza del puntatore: studi dimostrano che la presenza di un puntatoresempre presente sullo schermo potrebbe distrarre lutente, introducendo cosdegli errori. Pertanto, lutente non sa dove sta guardando nch non guardaun oggetto che selezionabile. A quel punto, infatti, entra in gioco il dwelltime e viene visualizzato un qualche tipo di feedback per indicare allutentequanto tempo manca prima che loggetto sia eettivamente selezionato. La scelta di utilizzare questo sistema di interazione nasce, inoltre, dal fatto che il Politecnico di Torino, dal 2004, entrato a far parte di COGAIN (Communication by Gaze Interaction), una rete di eccellenza per lo sviluppo e la ricerca di tecnologie per linterazione fra utenti disabili e computer. 5 11. 1 Introduzione COGAIN un consorzio nanziato dallUnione Europea, costituito da ricercatori, imprese e associazioni di utenti, che ha come scopo il miglioramento della qualit della vita per le persone aitte da disordini nel controllo motorio. Da allora il Politecnico, con il gruppo di ricerca e-lite, lavora per realizzare un sistema domotico controllabile con eye-tracking e rispondente alle speciche di questo consorzio. Sistema di controllo domotico che nasce soprattutto per risolvere il problema del basso livello di standardizzazione delle soluzioni domotiche, problema introdotto dal fatto che sono presenti molti produttori e molti dispositivi domotici che funzionano con protocolli diversi, ognuno dei quali incompatibile con laltro. Manca, cio, una soluzione di alto livello che, da un lato, permetta a questi dispositivi di comunicare senza problemi tra di loro e, dallaltro, consenta di avere un unico punto di accesso per tutte le tecniche di gaze control che si vogliono implementare. Questo sistema di controllo ambientale esiste, in continua evoluzione, sta- to sviluppato proprio dal Politecnico di Torino e si chiama DOG (Domotic OSGi Gateway). 1.3 Speciche COGAIN Tra i vari documenti realizzati da COGAIN, quattro sono quelli che, principalmente, riguardano la gaze interaction applicata a un ambiente domotico in generale (e a DOG, in particolare), analizzandone problematiche, caratteristiche e requisiti. Questi documenti prendono il nome di deliverable e sono indicati dalla lettera D seguita da un numero. Il report D2.4, intitolato A Survey of Existing de facto Standars and Systems of Environmental Control , fornisce la denizione di controllo ambientale, presen- tandone il rapporto con la disabilit e analizzando dierenti metodi di interazione, tra cui il gaze control. Presenta, inoltre, anche alcuni prodotti commerciali e non che possono essere considerati standard de-facto, evidenziando gli aspetti positivi e quelli negativi della loro adozione. Inne, propone la creazione di un sistema ad-hoc per applicazioni domotiche basate su gaze tracking. Il report D2.5, intitolato Draft Standars for gaze based environmental control , presenta alcune architetture di sistemi di controllo domotico basati su eye-tracking e propone una propria architettura, chiamata appunto DOG, fornendo anche alcuni casi di studio esemplicativi per meglio comprendere il funzionamento di tale sistema da parte dellutente disabile. Inoltre, espone la dierenza tra vista strutturale e vista funzionale per lorga- nizzazione dellinterfaccia graca: la prima mostra i dispositivi raggruppati come lo sono nella casa reale (cio per stanze), mentre la seconda li raggruppa in base alla6 12. 1 Introduzione loro funzione logica, a discapito della loro posizione eettiva. Trovare un equilibrio tra queste due viste essenziale. Inne, elenca una serie di requisiti necessari e consigliati che uninterfaccia uten- te basata su eye-tracking per un ambiente domotico dovrebbe implementare e che verranno riportati, dato il particolare interesse di questo elenco, nel capitolo succes- sivo. Il report D3.1, intitolato User requirements report with observations of dicul- ties users are experiencing, presenta la necessit di porre lutente nale al centro degli obiettivi di COGAIN. Fornisce, inoltre, alcune informazioni su chi pu utilizza- re la tecnologia di eye-tracking e chi, invece, non pu, mettendo a confronto ci che la letteratura specialistica dice e ci che levidenza sperimentale dimostra. Inne, elenca qualche alternativa alleye-tracking, indicando i vari aspetti positivi e nega- tivi e mostrando con quale percentuale di successo delle persone disabili possono utilizzare un sistema di gaze interaction. Per ultimo, il report D3.2, dal titolo Report on features of the dierent sys- tems and development needs, presenta alcune caratteristiche chiave dei sistemi di eye-tracking, sia per quanto riguarda la loro componente hardware che per quanto riguarda la componente software, analizzando diversi approcci e diverse possibili scelte riguardanti linterazione come, per esempio, la possibilit di utilizzare la vo- ce come strumento da aancare alleye-tracking o la scelta nellutilizzo di alcuni simboli per rappresentare elementi nellinterfaccia piuttosto che altri. 1.4 Struttura della tesi In questo primo capitolo, si cercato di introdurre il contesto e fornire alcuni stru- menti base per comprendere il punto da cui partita la realizzazione dellinterfaccia utente basata su eye-tracking che il prodotto nale di questo progetto. Nei prossimi tre capitoli, la tesi organizzata per presentare gli obiettivi e ap- profondire alcuni aspetti, seppur di background, necessari a comprendere appieno il come e il perch si realizzata linterfaccia utente; nei capitoli seguenti, inve- ce, si mostreranno le fasi di progettazione e di implementazione del progetto e si presenteranno i risultati ottenuti.In dettaglio: nel capitolo DUE Obiettivi , si riprenderanno e si approfondiranno alcuniconcetti presentati in questo primo capitolo per focalizzare gli obiettivi chesi vogliono ottenere nello realizzare questa interfaccia utente, basata su eye-tracking, per applicazioni domotiche; 7 13. 1 Introduzione nel capitolo TRE Soluzioni tecniche adottate, verr descritto lambiente do-motico proposto da COGAIN e dal Politecnico di Torino, cio DOG, analiz-zando brevemente lontologia che racchiude lo schema della casa e dei suoidispositivi.Inoltre, si presenter lEye Tracking Universal Driver, un driver universale,sempre proposto da COGAIN, che serve per utilizzare le tecniche di traccia-mento degli occhi necessarie per questa applicazione di controllo domotico. nel capitolo QUATTRO Tecnologia utilizzata, si illustrer la recente tec-nologia Microsoft, inclusa nel Framework .NET 3.x, utilizzata per realizzarelinterfaccia graca, dal nome di Windows Presentation Foundation, presen-tando la sua maggiore innovazione, XAML, ed elencando le dierenze rispettoalla tecnologia Microsoft della generazione precedente. nel capitolo CINQUE Progettazione e implementazione, si presenter larchi-tettura generale del sistema di controllo ambientale, le scelte progettuali e lefunzionalit inserite nellinterfaccia utente realizzata e, talvolta, si scender neldettaglio specicando quali componenti principali delle Windows PresentationFoundation si sono utilizzati e perch si fatta proprio quella scelta. nel capitolo SEI Risultati ottenuti, si presenter qualche risultato qualitativoe quantitativo derivato dallutilizzo dellinterfaccia, soermandosi in partico-lare ad analizzare quali delle speciche COGAIN si sono rispettate e qualino. nel capitolo SETTE Conclusione e sviluppi futuri , verranno elencati alcunisviluppi futuri che il progetto descritto in questa tesi potr avere.Inne, negli appendici, verr illustrato il rapporto tra il software Microsoft Ex- pression Design, utilizzato per realizzare la maggior parte degli elementi graci dellinterfaccia graca, e le immagini utilizzabili nel linguaggio XAML; seguir un esempio del modello della casa utilizzato e uno di parte del codice prodotto.8 14. Capitolo 2ObiettiviLobiettivo principale della tesi lo studio, la progettazione e la realizzazione di uninterfaccia utente basata su dispositivi di eye-tracking per funzionalit di con- trollo domotico. Si consideri, a tal proposito, limmagine seguente: Figura 2.1: Vista, ad alto livello, del contesto in cui si colloca linterfaccia utente da realizzareEssa mostra un utente che interagisce con la propria casa (ambiente domotico) attraverso un eye-tracker. Per interagire con ecacia, per, necessita di uninter- faccia utente che, da una parte, si possa collegare allambiente domotico e dallaltra sia utilizzabile con leye-tracking.9 15. 2 Obiettivi Assumendo di non avere alcun tipo di problema nel collegare una qualsiasi inter- faccia utente al sistema di controllo domotico proposto da COGAIN nel deliverable 2.5, cio a DOG, si pu notare che qualche problema sorge proprio nel trovare unin- terfaccia utente che sia utilizzabile con un eye-tracker, che abbia un numero su- ciente di funzionalit e che risponda a quei principi di usabilit che si accennavano nel capitolo precedente. Si considerino, come esempio, le seguenti interfacce utente commerciali (gura 2.2):(a) LC Technologies - Light and Appliances. (b) Domotica Labs - KonneXion. Figura 2.2: Due interfacce utente per ambienti domotici La prima fa parte di un software sviluppato da LC Technologies relativa al con- trollo di dispositivi domotici. Fornisce un controllo basilare di luci e altri dispositivi pi avanzati, ovunque essi siano presenti nella casa, permettendo semplicemente di accenderli o spegnerli ed utilizzabile tramite eye-tracking. La seconda uninterfaccia di un software per il controllo ambientale sviluppato da Domotica Labs. Permette uninterazione pi completa rispetto al programma di LC Technologies, basata sul web ma non utilizzabile con eye-tracking, soprattutto per la presenza dei men e a causa della ridotta dimensione dei pulsanti.In particolare, le interfacce utente esistenti, non rispettano in pieno nessuna delle raccomandazioni proposte da COGAIN o da altri enti. Si riportano, nella tabella 2.1, quelle pi signicative, evidenziando il comportamento delle due interfacce di gura 2.2 rispetto a esse. quindi necessario creare da zero uninterfaccia utente, che sia usabile, che si possa collegare a DOG e sia pronta per leye-tracking. Interfaccia a cui, dora in poi, ci si riferir anche con il nome di DOGeye, visto che unisce DOG allEYE interaction. 10 16. 2 ObiettiviRaccomandazione LC TechnologiesDomotica LabsCreare interfacce utente consistenti SNoCreare scelte standard di interfacce NoPossibiledierenti, adattabili a piacereFornire funzionalit di sicurezza in casoNoPossibiledi guasto del sistemaConvergenza di diversi modi operativiNoPossibileUtilizzare un insieme di metodi di input,SNotra cui leye-trackingPossibilit di scegliere la lingua daSPossibileutilizzareFornire una visualizzazione della po-NoSsizione dei dispositivi allinterno dellacasaUsare colori, testo e icone per evidenzia- NoParzialmentere un cambiamento di statoTabella 2.1: Rapporto tra raccomandazioni e interfacce utente per il controllo domotico esistenti Per farlo, ci si pone un altro obiettivo, quello cio di realizzare uninterfaccia graca con le ultime tecnologie a disposizione, in modo che sia moderna per lat- tuale stato dellarte. Qui entra in gioco la tecnologia della Microsoft, introdotta a partire dal framework .NET 3.0, chiamata Windows Presentation Foundation e la sua componente pi rilevante, XAML. Con questa tecnologia, di cui si parler pi approfonditamente nei prossimi ca- pitoli, si possono realizzare interfacce utenti in maniera semplice, potente, creando codice estremamente leggibile e permettendo la separazione quasi totale della parte di design (cio, come linterfaccia appare) dalla parte di logica (quali sono i meccani- smi per far s che svolga i suoi compiti). La parte di design, infatti, viene realizzata interamente in XAML, un linguaggio derivato da XML, mentre la parte di logica viene realizzato col cosiddetto code-behind che, essenzialmente, pu essere un qual- siasi linguaggio appartenente alla piattaforma .NET. Per i propositi di questa tesi, si utilizzer il linguaggio C#.Inoltre, dovendo linterfaccia rispettare le speciche COGAIN, per realizzare lin- terazione con leye-tracking si utilizzer un driver universale, sempre proposto da COGAIN, dal nome ETU-Driver, che permetter di utilizzare linterfaccia anche in simulazione (senza un eye-tracker vero e proprio, insomma) e che fornir unam- pia compatibilit con diversi modelli di eye-tracker, i cui driver sono generalmente11 17. 2 Obiettivi incompatibili lun laltro. Il fatto di dover usare lETU-Driver un altro motivo che ha inuito notevol- mente nella scelta di utilizzare la piattaforma .NET: il driver composto da oggetti di tipo COM e quindi possibile integrarlo in maniera semplice e veloce. COGAIN, inne, ha pubblicato alcune linee guida che verranno utilizzate come requisiti (riportati in tabella 2.2) per la realizzazione dellinterfaccia utente e per la sua valutazione. Questi requisiti sono divisi in quattro categorie e hanno come obiettivo principale quello di promuovere la sicurezza e laccessibilit: 1. sicurezza delle applicazioni di controllo; 2. metodi di input per lapplicazione di controllo; 3. caratteristiche operative delle applicazioni di controllo; 4. usabilit delle applicazioni di controllo.Ogni linea guida ha un livello di priorit basato sul suo impatto sulla sicurezza e sullaccessibilit nei confronti dellutente:priorit 1 - unapplicazione di controllo domotico DEVE soddisfare questa lineaguida;priorit 2 - unapplicazione di controllo domotico DOVREBBE soddisfare questalinea guida.Ai ni di questo progetto, lobiettivo quello di soddisfare almeno i requisiti che hanno priorit 1.Tabella 2.2: Linee guida COGAIN per la realizzazione di unapplicazione di controllo ambientale Linea guida DescrizionePriorit 1.1 Fornire un sistema di notiche per gli allarmi veloce,1 facile da capire e multimodale. Lapplicazione di controllo dovrebbe noticare un al- larme il prima possibile e in diversi modi, per esempio con suoni, icone lampeggianti e messaggi di testo. 1.2 Fornire allutente solo poche e chiare opzioni per2 gestire eventi di allarme. Molti eye-tracker sono poco accurati quando lutente agitato, quindi in caso di allarme lapplicazione di controllo dovrebbe fornire solo un limitato ma chiaro insieme di opzioni (al massimo tre). 12 Continua. . . 18. 2 Obiettivi Linea guidaDescrizionePriorit 1.3 Fornire unazione di default per arontare un evento 1 di allarme. In caso di emergenza, lutente potrebbe perdere il con- trollo del dispositivo di input, quindi lapplicazione di controllo dovrebbe prendere la decisione pi sicura do- po che scattato un timeout. La lunghezza del timeout dipendete dal tipo di allarme. 1.4 Fornire una richiesta di conferma per le operazioni1 critiche e possibilmente dannose. Con un inaccurato o mal congurato eye-tracker, ler- rore del tocco di Mida pu essere frequente, cio ogni oggetto o comando guardato dallutente selezionato o eseguito, quindi lapplicazione di controllo dovrebbe ri- chiedere una conferma per le operazioni che potrebbero essere dannose. 1.5 Fornire una funzionalit di STOP che interrompa ogni 1 operazione. In alcune occasioni, il sistema domotico pu esegui- re azioni che lutente non vuole, per esempio per via di una selezione di un comando errato o lesecuzio- ne di uno scenario pre-impostato. Lapplicazione di controllo dovrebbe permettere un metodo di stop per interrompere ogni operazione. 2.1 Fornire una connessione con il COGAIN ETU-Driver.1 Il COGAIN ETU-Driver uno standard di comunica- zione per la gaze interaction che permette ad appli- cazioni di terze parti di essere comandate da un ran- ge di diversi sistemi harware di eye-tracker. Usando questo driver, non c bisogno di cambiare o ricom- pilare nessuna applicazione nel caso in cui si cambi eye-tracker. 2.2 Supportare dierenti metodi di input.2 Leye-tracker, sfortunatamente, potrebbe rompersi, quindi lapplicazione di controllo dovrebbe supportare anche altri metodi di input, come la tastiera, il mouse, ecc. Continua. . .13 19. 2 Obiettivi Linea guidaDescrizione Priorit 2.3 Fornire un layout ricongurabile, appropriato per 2 diverse performance delleye-tracking e per diverse esigenze degli utenti. Gli eye-tracker hanno un range di performance mol- to ampio; quindi unapplicazione di controllo dovrebbe avere uninterfaccia graca ricongurabile in base alle diverse risoluzioni e precisioni degli eye-tracker. 2.4 Supportare pi metodi di input allo stesso tempo2 (interazione multimodale). Lutente potrebbe essere capace di usare canali di input alternativi alleye-tracking, come la voce o i movimen- ti delle dita, per esempio. Lapplicazione di control- lo dovrebbe supportare la combinazione di pi meto- di di input contemporaneamente, come ad esempio la selezione con locchio e il click con il mouse. 2.5 Gestire la perdita del controllo dellinput fornendo2 azioni di default automatiche. Lapplicazione di controllo dovrebbe capire quando lu- tente ha perso il controllo delleye-tracker e dovreb- be eseguire azioni di default (come eettuare una ricalibrazione o far suonare un allarme). 3.1 Rispondere agli eventi e ai comandi dellambiente 1 domotico nel giusto tempo. Lapplicazione di controllo dovrebbe essere reattiva: dovrebbe gestire gli eventi e i comandi con un ritardo accettabile. 3.2 Gestire eventi con diversa priorit temporale.1 Lapplicazione di controllo dovrebbe distinguere tra eventi con priorit dierente. Gli eventi temporalmen- te critici devono essere eseguiti con un breve perio- do di attesa (per esempio, lallarme antincendio o il rilevamento di unintrusione).Continua. . . 14 20. 2 Obiettivi Linea guidaDescrizionePriorit 3.3 Eseguire comandi con diversa priorit. 1 I sistemi domotici ricevono pi comandi contempora- neamente, a causa di diversi utenti o degli scenari, per esempio. Lapplicazione di controllo dovrebbe di- scriminare comandi con priorit dierente e dovrebbe adottare un comportamento prestabilito. 3.4 Fornire un feedback quando vengono eseguite operazio-2 ni e comandi automatici. Gli scenari, selezionati dallutente, potrebbero inclu- dere molti comandi da eseguire. Lapplicazione di controllo dovrebbe mostrare lazione in progresso e informare lutente quando uno scenario terminato. 3.5 Gestire (creare, modicare, cancellare) scenari. 2 Ripetere una lunga sequenza di comandi per eseguire un compito frequente potrebbe essere noioso per luten- te. E necessario raccoglierli in una lista di comandi e gestirli come se fossero uno solo. Lapplicazione di con- trollo dovrebbe permettere la creazione, la modica e la cancellazione di questi scenari. 3.6 Conoscere lo stato corrente di ogni dispositivo. 2 Lapplicazione di controllo dovrebbe conoscere lo sta- to corrente di ogni dispositivo della casa, per mostrare questa informazione e per prendere decisioni automati- che intelligenti (per esempio, prevenire una condizione dannosa o attivare un piano di risparmio energetico). 4.1 Fornire una chiara visualizzazione di ci che accade 1 nella casa. Linterfaccia dellapplicazione di controllo dovrebbe fornire una visualizzazione chiara e facile da capire del progresso dellesecuzione del comando. 4.2 Fornire uninterfaccia elegante e chiara.2 Un layout consistente, con un linguaggio facile da capi- re e una graca riconoscibile, avvantaggia ogni utente. Lapplicazione di controllo dovrebbe fornire uninter- faccia elegante e chiara, possibilmente utilizzando sia immagini che testo. Continua. . .15 21. 2 Obiettivi Linea guidaDescrizionePriorit 4.3 Fornire una visualizzazione dello stato e della posizione2 dei dispositivi della casa. Lapplicazione di controllo dovrebbe mostrare la map- pa della casa contenente, per ogni stanza, una rappresentazione dei dispositivi e il loro stato. 4.4 Usare colori, icone e testo per evidenziare un 2 cambiamento di stato. Linterfaccia dellapplicazione di controllo dovrebbe evidenziare un cambiamento di stato di un dispositivo utilizzando immagini, testo e suoni. 4.5 Fornire un metodo di selezione facile da imparare. 2 Anche se lapplicazione di controllo potrebbe presen- tare caratteristiche e funzionalit complesse, dovrebbe pure fornire un metodo di interazione usabile e facile da imparare. 16 22. Capitolo 3Soluzioni tecniche adottate3.1Introduzione Prima di parlare del progetto dellinterfaccia utente realizzata doveroso dedicare un po di tempo per presentare sucientemente nel dettaglio le soluzioni tecniche con cui lapplicativo deve interagire. In particolare, nei capitoli precedenti, si parlato di un sistema di controllo dellambiente domotico chiamato DOG e di un driver universale per leye-tracking chiamato ETU-Driver. Entrambi questi componenti, proposti o consigliati da CO- GAIN, hanno un ruolo essenziale per il progetto trattato in questa dissertazione ed entrambi sono strettamente correlati con linterfaccia utente, nel modo rappresentato nella gura 3.1: Figura 3.1: Come linterfaccia utente connessa a DOG e alleye-tracker 17 23. 3 Soluzioni tecniche adottate Nei paragra seguenti, si tratteranno in maniera pi dettagliata le caratteristiche dellambiente domotico e dellETU-Driver, procedendo quindi a un ingrandimento di alcune parti della gura 3.1. 3.2 Ambiente domotico Il termine domotica (o Smart Home) un neologismo derivante dalla parola latina domus (che, appunto, signica casa) e la parola informatica. La domotica, quindi, la disciplina che si occupa di studiare tecnologie informa- tiche e appartenenti allarea dellautomazione per poterle utilizzarle negli ambienti domestici, al ne di migliorarne il comfort, labitabilit e di semplicare la vita delle persone mentre vivono in questi ambienti. Figura 3.2: Un esempio di architettura logica di ambiente domoticoLa domotica si pu intendere in dierenti modi: da una parte, essa si occupa di automatizzare semplici funzioni della casa come, per esempio, laccensione e lo spegnimento delle luci; dallaltra cerca di sviluppare servizi pi intelligenti come, 18 24. 3 Soluzioni tecniche adottate per esempio, gli scenari, cio un elenco di attivit riguardanti determinati dispositivi domestici che possono venire attivati o disattivati tutti insieme in un certo momento della giornata, a scelta dellutilizzatore.Un ambiente domotico, pertanto, un ambiente opportunamente progettato e tecnologicamente attrezzato, in cui sono presenti impianti e dispositivi che sfruttano tecnologie che li rendono controllabili da remoto ed eventualmente anche in grado di comunicare tra di loro. Anche se il termine da remoto pu dare lidea che la casa venga controllata da un altro posto, al di fuori dellabitazione, in questo contesto si intende semplicemente che un oggetto o una funzionalit della casa pu essere controllata senza il bisogno di maneggiare o toccare sicamente loggetto in questione. Quindi, loggetto pu anche trovarsi di fronte allutente ma esso lo controlla in remoto grazie a un sistema di eye-tracking o attraverso lo schermo di un computer. Inoltre, un ambiente domotico come quello mostrato in gura 3.2 composto da una serie di componenti hardware e software. Le componenti hardware sono gli impianti domotici, che comprendono alcuni dispositivi e un gateway, che gestisce la comunicazione con ogni dispositivo appar- tenente al proprio impianto e con lHouse Manager. I gateway dei vari impianti domotici, a loro volta, sono collegati con un Domotic House Gateway che gestisce la rete di comunicazione tra i diversi gateway. La componente software, invece, il cuore del sistema domotico perch ha il compito di gestire i dispositivi della casa, non importa in quale impianto essi si trovino: tale componente prende il nome di House Manager. LHouse Manager si occupa anche di fornire servizi intelligenti e alcune appli- cazioni che permettano allutente di interagire con la casa. LHouse Manager, nel contesto che stiamo considerando, altro non che DOG, proposto da COGAIN e sviluppato dal gruppo di ricerca del Politecnico e-lite. 3.2.1 DOG DOG (Domotic OSGi Gateway) una piattaforma che permette linterfacciamento, la gestione e lintegrazione di dispositivi domotici di diversi costruttori in un singolo sistema software. Realizzato con tecnologia OSGi, fornisce un ambiente per gli sviluppatori orien- tato ai servizi e basato su componenti, orendo cos modi standardizzati di gestire il ciclo di vita del software stesso. Fornisce un framework Java stabile, sicuro e general-purpose che supporta lo sviluppo di applicazioni di servizio estensibili chia- mate bundle o, in italiano, moduli, che sono facili da integrare: basta, infatti, che siano conformi ai vincoli di comunicazione deniti nel framework stesso. 19 25. 3 Soluzioni tecniche adottateFigura 3.3: Larchitettura logica di DOG Come illustrato nella gura 3.3, DOG composto da dierenti moduli, che hanno i vari usi e ruoli descritti di seguito: Network Drivers permette linterazione diretta con le componenti hardwaredellambiente domotico. necessario un driver dierente per ogni protocollodi basso livello utilizzato dalle varie componenti.Attualmente formato da tre bundle: ND Konnex per i sistemi KNX, NDBTicino per i sistemi MyHome BTicino e ND Emulator che permette di emu-lare i dispositivi sicamente non disponibili, consentendo cos di utilizzare ilsoftware anche in assenza di un ambiente domotico reale, cio in simulazione; Message Dispatcher eettua il routing degli eventi in arrivo dai Network Dri-vers e i comandi in arrivo dallExecutor; contiene, quindi, una tabella di rou-ting per mappare la corrispondenza tra i dispositivi e i Network Drivers chepossono comandarli; Executor riceve i comandi dal modulo API, ne controlla la correttezza intera-gendo con il modulo Status e li esegue inviando i nuovi comandi al CommandDispatcher; House Model contiene la rappresentazione della casa e dei dispositivi apparte-nenti allontologia DogOnt, descritta nel prossimo sotto-paragrafo; 20 26. 3 Soluzioni tecniche adottate Status una sorta di cache che contiene lo status dei dispositivi presen-ti nel sistema; risponde alle richieste mandate dal modulo API, restituendoinformazioni sui vari dispositivi; Platform Manager gestisce linstallazione, lavvio e la sospensione dei bundleallinterno della piattaforma OSGi, fornisce informazioni sullo stato dei bundlee gestisce la sequenza di bootstrap di sistema; Congurator Registry fornisce i dati di congurazione necessari al funziona-mento dei singoli moduli; API il punto di accesso esterno al sistema; fornisce una serie di servizi comelelenco dei dispositivi presenti nella casa, la possibilit di eseguire comandi equella di registrarsi come listener per ricevere determinati eventi e conoscerelo stato di uno o pi dispositivi; XmlRpcConnector espone i servizi oerti dal modello API sottoforma di end-point XML-RPC: linterfaccia utente utilizzer questo modulo e il protocolloXML-RPC per interagire con DOG; DogLibrary, inne, specica le interfacce dei servizi oerti dai bundle, denen-do e implementando le classi di sistema e le eccezioni. Linterfaccia utente comunicher con DOG principalmente durante due fasi, quel- la iniziale in cui linterfaccia ricever il modello della casa con tutti i suoi dispositivi, insieme con il loro stato e la loro descrizione; e quella operativa in cui linterfaccia comunicher a DOG i comandi che vuole compiere (per esempio, accendere una lu- ce) e DOG risponder restituendo lesito delloperazione che gli stata richiesta (la luce si accesa).Sempre nella fase operativa, DOG potrebbe comunicare allinterfaccia che il ve- ricarsi di un evento (qualcuno ha premuto un pulsante e la luce si accesa) e linterfaccia tratter questa informazione di conseguenza, generalmente producendo una notica destinata allutente.La fase operativa, come facile intuire, una fase che viene ripetuta diverse volte, ntanto che DOG e linterfaccia sono entrambi in funzione e qualcosa capita allinterno dellambiente domotico. 3.2.2 DogOnt DogOnt il modello formale per la rappresentazione di un ambiente domotico, composto da due elementi: unontologia e un insieme di regole.21 27. 3 Soluzioni tecniche adottateUna ontologia una rappresentazione formale di una interpretazione condivisa di uno specico dominio di conoscenza. Non esistendo lontologia perfetta, la rappre- sentazione di un determinato dominio pu essere formalizzata in una moltitudine di modi e dipende dallo scopo per cui viene creata. Unontologia assume normalmente una struttura a grafo connesso con concetti e relazioni che li collegano.Le componenti fondamentali di una ontologia sono:Classi - insiemi, collezioni o tipi di oggetti;Attributi - propriet, caratteristiche o parametri che gli oggetti possono avere econdividere;Relazioni - modi in cui gli oggetti possono essere messi in relazione gli uni con gli altri;Individui - istanze del modello, che sono gli elementi di base.Le classi di unontologia sono concetti astratti che esprimono una classicazione delle entit rilevanti del dominio. Lontologia ha generalmente una classe radice chiamata Thing da cui discendono tutte le altre. Le classi nellontologia seguono il principio dellereditariet padre-glio a livello di classe e propriet.Analizzando la gura 3.4, si pu notare che lontologia di DogOnt si sviluppa lungo cinque rami principali: Building Thing: rappresenta gli oggetti disponibili (controllabili, come unaluce, oppure no); Building Environment: rappresenta dove gli oggetti sono collocati; State: rappresenta le congurazioni stabili (gli stati, come acceso o spento)che gli oggetti controllabili possono assumere; Functionality: rappresenta cosa gli oggetti controllabili possono fare (accender-si e spegnersi, sempre per esempio); la maggior parte degli oggetti istanziabilinon ha funzionalit comandabili con pi di tre comandi. Domotic Network Component: rappresenta delle caratteristiche peculiari diogni impianto domotico. Ogni ramo, a sua volta, avr un certo numero di altri rami gli, a seconda di cosa deve rappresentare: Building Thing, che uno dei rami dellontologia pi interes- santi poich contiene tutti i dispositivi, gli elementi di mobilio e quelli architetturali22 28. 3 Soluzioni tecniche adottateFigura 3.4: Lontologia DogOnt che ci possono essere nella casa, si divide in Controllable e Uncontrollable, per sepa- rare gli oggetti che sono controllabili da quelli che, come il tavolo del soggiorno, non lo sono. DogOnt, inoltre, rappresenta ogni dispositivo come un oggetto che possiede un insieme di funzionalit e di stati. Le funzionalit sono automaticamente aggiunte a ogni istanza del dispositivo, in base alle restrizioni denite al livello di classe. Esse sono condivise da tutti i dispositivi della stessa classe: pertanto, diversi tipi di lampade appartenenti alla stessa classe potranno avere delle funzionalit in comune. Daltra parte, invece, gli stati sono peculiari a ogni dispositivo. Quindi, se si volesse ottenere un modello della casa personalizzato e virtuale, per esempio per eseguire alcune simulazioni, basterebbe creare una istanza per ogni camera che si vuole avere nella casa (le stanze si trovano nel ramo Building En- vironment); dopodich basterebbe creare le istanze dei dispositivi che si vogliono 23 29. 3 Soluzioni tecniche adottate avere nelle singole stanze, come luci, interruttori o elettrodomestici (si trovano tut- ti in Building Thing > Controllable > White Goods) e assegnargli i tipi di funzionalit e i tipi di stato che sono previsti nelle loro classi. Lassegnazione dei singoli stati e delle singole funzionalit per ogni dispositi- vo istanziato nellontologia viene fatto in maniera automatica proprio grazie al ragionamento basato su regole oerto da DogOnt. Le regole di DogOnt, pertanto, facilitano il processo di modellazione generan- do automaticamente gli stati adeguati e le funzionalit dei dispositivi domotici, e associandoli al corretto dispositivo attraverso relazioni di tipo semantico. Fornendo alcune modalit di ragionamento, inoltre, DogOnt in grado di fornire la posizione di un dispositivo domotico nella casa, elencare linsieme delle sue carat- teristiche, fornire le caratteristiche tecnologie necessarie per interfacciarsi con quel dispositivo, dire come composto lambiente domestico e presentare gli elementi architetturali e di mobilio che sono presenti nella casa. Ci sarebbe ancora molto da dire riguardo questo argomento ma, per gli obiettivi di questa tesi non necessario sapere altro: linterfaccia utente si collega diretta- mente con DOG che gli fornisce il modello della casa con tutti i suoi dispositivi e non ha bisogno di modicare n lontologia n le regole di DogOnt. suciente sapere cos unontologia, che i vari dispositivi hanno delle funzionalit e degli stati e che DOG prende da qui il modello della casa, senza il quale nulla potrebbe funzionare. 3.3 Eye Tracking Universal Driver (ETU-Driver) Il driver universale di COGAIN Eye Tracking Universal Driver (ETU-Driver), uti- lizzato in questo progetto, stato sviluppato da Oleg pakov e si presenta come un livello che si pone fra il driver vero e proprio di alcuni modelli di eye-tracker e le applicazioni di terze parti, al ne di permettere il loro utilizzo su eye-tracker di produttori dierenti. Figura 3.5: Parte dellarchitettura dellETU-Driver 24 30. 3 Soluzioni tecniche adottate Il driver, la cui architettura rappresentata nella gura 3.5, costituito da una serie di oggetti COM che implementano ununica interfaccia per alcuni eye-tracker supportati e da un set di librerie (chiamate API-Converters), che convertono le API originali dei vari produttori in una API comune utilizzata, appunto, da questo driver universale. Attualmente, il driver universale contiene gli API-Converters dei seguenti eye- tracker: ITU GazeTracker; LC EyeGaze; SR EyeLink I/II; SMI iViewX v1.2x e v2.0; Tobii Technologies 1750, P10, D10, T60, T120 e X120.Inoltre, sono disponibili tre API-Converters di simulazione che possono essere utilizzati per scopi di debug, per eseguire applicativi di dimostrazione o per mostrare il comportamento di uninterazione basata su eye-tracking in assenza di un eye- tracker vero e proprio. Questi tre convertitori sono: Mouse, utilizza la posizione del puntatore del mouse sullo schermo come puntoosservato in quellistante. Questa API contiene un algoritmo di xation de-tection, i cui parametri sono completamente congurabili tramite le opzionidellETU-Driver. Gaze-data le, legge e interpreta un le contenente i dati sullo sguardo registra-to precedentemente dal driver universale utilizzando un altro API-Converter,mostrandoli sullo schermo. Simulator, genera scan-path casuali, cio memorizza su le dei dati casuali,generati come se appartenessero allo sguardo di un utente virtuale. Il driver universale dispone anche di alcuni ltri che sono in gradi di modicare, bloccare o generare dati relativi allo sguardo prima che questi vengano inviati alle applicazioni utente.Tali ltri sono:EyeMouse - questo ltro collega sguardo e mouse, ovvero il puntatore si muove seguendo con il punto osservato.25 31. 3 Soluzioni tecniche adottate ThinOut - questo ltro accetta solo un campione ogni N, con N impostabile a piacere.FixationDetector - questo ltro utilizza lo strumento di xation detection svilup-pato da Oleg pakov, che permette di rilevare quando lutente ssa lo sguardoin un punto, tramite opportuni algoritmi.Il vantaggio di utilizzare un driver universale consiste nel fatto che una qualsiasi applicazione implementata con questo driver pu interfacciarsi con un nuovo eye- tracker semplicemente utilizzando lopportuno API-Converter. Senza lausilio dellETU-Driver, ogni volta che unapplicazione dovesse essere eseguita su un nuovo modello di eye-tracker, bisognerebbe ricompilarla con i driver del nuovo dispositivo di eye-tracking: bisognerebbe, cio, realizzare una versione del programma per ogni eye-tracker su cui lo si volesse utilizzare.26 32. Capitolo 4Tecnologia utilizzataEsistono diverse tecnologie e diversi linguaggi adatti a realizzare uninterfaccia uten- te. Allinterno della piattaforma .NET, utilizzata per questo progetto, ne esisto- no principalmente due: Windows Forms e le pi moderne Windows Presentation Foundation. In questo capitolo, si presenteranno le caratteristiche peculiari proprio di Windo- ws Presentation Foundation, soermandosi in maniera particolare ad analizzare quel- la che potrebbe essere considerata la sua componente principale, cio il linguaggio XAML, ed evidenziando le dierenze con la tecnologia Microsoft della generazione precedente.4.1 Windows Presentation Foundation Il cinema hollywoodiano ci ha, da sempre, abituati a vedere personaggi che appaiono pi attraenti, pi reattivi e pi determinati della maggior parte delle persone che si incontrano nella vita di tutti i giorni.La stessa cosa potrebbe essere detta anche riguardo al software che questi perso- naggi utilizzano, soprattutto nei lm, non di fantascienza, realizzati negli anni 90: mi vengono in mente client di posta elettronica che mostrano scritte tridimensio- nali, che avvisano della ricezione di nuove e-mail visualizzando delle animazioni e riproducendo la frase Youve got mail! , e cos via.In confronto ai client di posta elettronica reali, esistenti quando quei lm ve- nivano realizzati, quelli erano molto pi belli e, per certi versi, irresistibili, anche considerando alcuni aspetti legati allusabilit.Solo in questi ultimi anni, si visto un avvicinamento tra gli standard del software reale e quelli del software presentato nei lm: suciente pensare agli eetti di Mac OS X, a quelli di Compix su Linux, a quelli introdotti da Windows Vista in poi o, 27 33. 4 Tecnologia utilizzata sul web, a quelli di Adobe Flash, senza dimenticare quelli che verranno introdotti da HTML 5, solo per fare qualche esempio. Gli utenti, stimolati forse anche dai lm che vedono, hanno aspettative sempre crescenti sulla cosidetta software experience e quindi si aspettano di poter utilizza- re dei programmi che abbiano le funzionalit che necessitano ma che siano anche intuitivi, stabili e, perch no, eleganti e chiari. A questo punto entra in gioco Microsoft con una soluzione che pu aiutare gli sviluppatori a creare software del ventunesimo secolo (Adam Nathan, 2006), sen- za sprecare troppo tempo e troppe risorse: questa soluzione , appunto, Windows Presentation Foundation (WPF), introdotta a partire dal framework .NET versione 3.0.Figura 4.1: Le tecnologie incluse nel framework .NET La maggior parte delle interfacce utente utilizzate oggigiorno in Windows sono realizzate usando il sottosistema graco che prende il nome di GDI+, la versione avanzata di Graphics Device Interface (GDI), che fornisce gli strumenti base per le interfacce che vogliano utilizzare la graca 2D ma che presenta alcune limitazioni, dovute soprattutto al fatto che tale sottosistema nato nel 1985, un tempo davvero molto lontano, tecnologicamente parlando.28 34. 4 Tecnologia utilizzataTali limitazioni sono state superate da WPF, di cui si riportano alcune tra le sue caratteristiche pi importanti: ampia integrazione - Prima di WPF, uno sviluppatore che volesse usarecomponenti 3D, video o vocali in aggiunta alla normale graca bidimensiona-le e agli usuali controlli, doveva utilizzare tecnologie indipendenti dalle GDIche avevano un gran numero di inconsistenze e davano alcuni problemi dicompatibilit.WPF copre tutte queste aree (e anche altre, come la gestione e la vista avan-zata di documenti testuali) con un modello di programmazione consistente euna buona integrazione tra i diversi tipi di oggetti. Inoltre, buona parte del-le tecniche che si possono utilizzare in una determinata area possono essereutilizzate direttamente anche in altre. indipendenza dalla risoluzione - Uninterfaccia sviluppata prima di WPF, generalmente, dipendente dalla risoluzione del monitor su cui viene visua-lizzata. Se, per esempio, essa veniva sviluppata per un Ultra-Mobile PC (che,tipicamente, ha un monitor da quattro a sette pollici e una risoluzione ade-guata) e poi veniva utilizzata su un computer con uno schermo da 20 (conuna risoluzione pi elevata, ovviamente), i vari elementi graci dellinterfacciautente apparivano sgranati oppure piccolissimi. E viceversa.WPF ore, invece, la possibilit di ridurre e allargare gli elementi sullo schermoin maniera indipendente dalla risoluzione. Molte di queste possibilit sonooerte grazie allorientamento di WPF verso la graca vettoriale: ingrandendoun elemento di uninterfaccia realizzata con WPF, esso rimane pulito e visibilesenza alcun tipo di sgranatura o imprecisione. accelerazione hardware - Anche se WPF una nuova tecnologia, essa costruita sopra Direct3D, appartenente alle DirectX. Questo signica che ilcontenuto di unapplicazione WPF, sia esso 2D o 3D, graco o testuale, vieneconvertito in triangoli 3D, texture e altri oggetti Direct3D e poi renderizzatovia hardware. Questo sempre pi vero per sempre pi contenuti man manoche il framework .NET evolve da una versione allaltra. Quindi, le applicazioniWPF sfruttano i beneci dellaccelerazione video per avere una graca piliscia, pi morbida e, di conseguenza, miglior performance, utilizzando per glielementi graci la GPU della scheda video invece che la CPU. Inoltre, questoassicura che le applicazioni WPF possano ricevere il massimo benecio dainuovi hardware e driver.Se, per, non fosse disponibile hardware graco di alto livello, WPF oreanche una pipeline di rendering graco via software. Questo, inoltre, permettedi sfruttare funzionalit che non sono ancora supportate dallhardware attuale 29 35. 4 Tecnologia utilizzatae pu anche essere utilizzato come un meccanismo di protezione (di fallback,a voler essere precisi) nel caso in cui unapplicazione venga eseguita su uncomputer con risorse hardware inadeguate per essa. programmazione dichiarativa - Prima di WPF i programmi che utilizza-vano la piattaforma .NET avevano la possibilit di includere diversi tipi diattributi, le di risorse e le di congurazione basati su linguaggi dichiarativi1come leXtensible Markup Language (XML).WPF porta la programmazione dichiarativa per le interfacce grache a tuttal-tro livello, introducendo leXtensible Application Markup Language (XAML).La combinazione di WPF con XAML fornisce una grande espressivit che siestende anche oltre i conni della produzione di interfacce utente; WPF uti-lizza XAML anche come un formato per alcuni documenti, per rappresentaremodelli 3D, immagini e molto altro. Il risultato che i designer graci possonocos contribuire direttamente al look-and-feel delle applicazioni, lasciando poiai programmatori la realizzazione della parte logica del programma. personalizzazione e composizione evoluta - I controlli WPF sono estre-mamente personalizzabili e componibili lun laltro: si pu, per esempio, creareun bottone che abbia allinterno un video. Anche se alcune di queste persona-lizzazioni possono suonare terribili, il fatto importante che esse siano possibilida realizzare senza scrivere tonnellate di codice, in maniera semplice e in pocherighe. Inoltre, possibile dichiarare questi controlli personalizzati in un unicopunto del codice e poi riutilizzarli tutte le volte che si ha bisogno. sviluppo facile - WPF fornisce opzioni per sviluppare sia applicazioni desktopper Windows sia per ospitare applicazioni allinterno di un browser web e ancheorire opzioni di navigazione simili a quelle di un browser allinterno di unaapplicazione desktop.In breve, WPF si pone come obiettivo quello di combinare le migliori caratteri- stiche di vari sistemi, come DirectX (per il 3D e laccelerazione hardware), Windows Forms (per la produttivit dello sviluppatore), Adobe Flash (per il supporto alle animazioni) e HTML (per il linguaggi dichiarativi e la semplicit di sviluppo). WPF, in termini di funzionalit, ovviamente, non permette di fare cose che in precedenza non si sarebbero potute fare. Le permette di fare, per, in un modo pi semplice, pi veloce, pi stabile, pi sicuro e senza ricorrere a tante tecnologie diverse che potrebbero dare problemi nel momento in cui esse vengono integrate.1linguaggi che si focalizzano sulla descrizione delle propriet della soluzione desiderata (il cosa), lasciando indeterminato o poco determinato lalgoritmo da usare per trovare la soluzione (il come). 30 36. 4 Tecnologia utilizzata Avendo, inoltre, citato DirectX, non bisogna pensare che questa tecnologia sia morta, visto che adesso esiste WPF: sono due cose distinte che agiscono a livelli diversi, pi alto WPF e pi basso DirectX. La scelta di utilizzare luna o laltra per applicazioni che utilizzino molto la graca, dipende dagli obiettivi che si vogliono ottenere e dalle possibilit di testing che si hanno. Per gli scopi di questa tesi, le possibilit oerte da WPF sono pi che sucienti. Inne, c ancora da spendere alcune parole a proposito di Adobe Flash. WPF non utilizza n direttamente n direttamente la tecnologia introdotta da Flash, che attualmente lopzione pi popolare per creare contenuti web evoluti. Le appli- cazioni WPF possono essere eseguite allinterno di un browser web, ma richiedono Windows e il framework .NET 3.0 o superiore installato. Per Flash, invece, basta un plug-in che disponibile per molte piattaforme diverse, non solo per Windows. Lalternativa Microsoft a Flash esiste e consiste in un sottoinsieme di WPF: il suo nome Silverlight, disponibile come un plug-in uciale per Mac e Windows (e uno non uciale per sistemi Linux), supporta XAML, JavaScript e alcune caratteristiche della piattaforma .NET. In questa dissertazione non si parler pi di Silverlight ma, vista la stretta parentela esistente tra WPF e questa tecnologia, sembrato opportuno almeno citarne lesistenza. 4.2 XAML XAML, la cui pronuncia corretta Zammel , uno strumento molto importante per integrare designer graci nel processo di sviluppo di un applicativo e permette di creare interfacce utente in un modo innovativo e molto produttivo. Infatti: XAML generalmente il modo pi conciso di rappresentare interfacce utenteo altre gerarchie di oggetti; luso di XAML incoraggia la separazione tra come il programma appare e comefunziona (la sua logica, cio) ed una cosa molto utile per la manutenzione elaggiornamento del software; XAML pu essere utilizzato in strumenti come XamlPad, presente nellSDKdi Windows, o in Visual Studio 2008 e successivi per vedere in real-time ilrisultato di ci che si sta scrivendo; XAML il linguaggio prodotto dalla maggior parte degli strumenti legati aWPF.31 37. 4 Tecnologia utilizzata In questo paragrafo non si intende insegnare a programmare in XAML o con le WPF, in quanto esula dagli scopi di questa dissertazione, ma solo presentare alcune caratteristiche peculiari di XAML in modo da permetterne la comprensione generale. Alcuni altri dettagli su XAML verranno poi forniti nel capitolo 5, dedicato al- la realizzazione di DOGeye; in ogni caso, si rimanda alla documentazione della Microsoft, disponibile su MSDN, per ulteriori informazioni e dettagli. 4.2.1Caratteristiche XAML , come gi detto nel paragrafo precedente, un linguaggio di programmazione dichiarativo atto a costruire e inizializzare oggetti .NET, incluso nel framework .NET a partire dalla versione 3.0, insieme a un suo compilatore, a un parser che agisce a tempo di esecuzione e a un plug-in che consente di visualizzare le XAML (chiamati pagine XAML libere o, in inglese loose XAML pages) allinterno del browser Internet Explorer. XAML un modo di utilizzare le API appartenenti al .NET e consiste di regole che indicano come i parser e i compilatori devono trattare XML e alcune parole chiave, ma non denisce nessun elemento XML interessante. Anche se XAML stato originariamente sviluppato e pensato per WPF, bisogna tenere presente che le due tecnologie possono essere utilizzate in maniera indipen- dente luna dallaltra: per fare un esempio, XAML si pu utilizzare anche con le Windows Workow Foundation e, addirittura, stanno nascendo plug-in per poter utilizzare XAML per realizzare interfacce utente con il linguaggio Java. Inoltre, tutto quello che pu essere fatto in XAML pu anche essere fatto con un qualunque linguaggio .NET, perdendo per tutti i suoi beneci: pertanto raro vedere WPF senza XAML. Le speciche di XAML deniscono, perci, regole che mappano i vari namespace, tipi, propriet ed eventi appartententi a .NET in namespace, elementi e attributi di tipo XML. Questo si pu vedere dal semplice esempio che segue e che mette a confronto lo stesso codice scritto in XAML e in C#: XAML: C#: System.Windows.Controls.Button b = new System.Windows.Controls.Button(); b.Content = "OK";Anche se le due porzioni di codice precedente sono uguali, si pu vedere istan- taneamente il risultato del codice XAML salvando un le con estensione .xaml e32 38. 4 Tecnologia utilizzata aprendolo in Internet Explorer, mentre per il C# bisognerebbe prima compilare tutto. Il risultato di entrambi la creazione di un bottone che avr come contenuto la parola OK. Com possibile vedere dallesempio, dichiarare un elemento XML in XAML, chiamato object element, equivalente a istanziare il corrispondente oggetto .NET attraverso il suo costruttore di default. Impostare un attributo, invece, equivale a impostare una propriet con le stesso nome, nel qual caso si parla di attributo di propriet, o assegnare un handler per un evento dello stesso nome, cio un attributo di evento. Inoltre XAML, come il linguaggio C#, un linguaggio case-sensitive, cio non la stessa cosa scrivere una parola in maiuscolo o in minuscolo. Facendo sempre riferimento allesempio precedente, si pu notare che nella pri- ma riga di XAML compare lidenticatore xmlns, seguito quello che sembra un in- dirizzo Internet: quello il namespace XML associato al namespace .NET System. Windows.Controls. Come per ogni namespace XML, non si trova nessuna web page a quellindirizzo: solo una stringa arbitraria. Il namespace XAML dellesempio contiene tutti i seguenti namespace C#, rea- lizzando quindi un mapping molti-a-uno: System.Windows; System.Windows.Automation; System.Windows.Controls; System.Windows.Controls.Primitives; System.Windows.Data; System.Windows.Documents; System.Windows.Forms.Integration; System.Windows.Ink; System.Windows.Input; System.Windows.Media; System.Windows.Media.Animation; System.Windows.Media.Effects; System.Windows.Media.Imaging; 33 39. 4 Tecnologia utilizzata System.Windows.Media.Media3D; System.Windows.Media.TextFormatting; System.Windows.Navigation; System.Windows.Shapes; Degni di nota sono soprattutto i namespace appartenenti a Controls che conten- gono i controlli principali XAML (come i bottoni, per esempio), Forms.Integration che introduce alcuni metodi per lintegrazione di XAML con elementi creati con le Windows Forms e Media che contiene tutti gli strumenti per integrare audio, video, animazioni e oggetti 3D in XAML.Proseguendo con le caratteristiche di XAML, bisogna osservare che loggetto radice di un le XAML deve specicare almeno un namespace che necessario per qualicare s stesso e tutti i suoi gli. In XAML si utilizza, generalmente, anche un secondo namespace, che include anche il presso x; si utilizzer poi tale presso per indicare che un oggetto o una propriet appartiene proprio a quel preciso namespace: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml/" Questo il namespace del linguaggio XAML che mappa i tipi del namespace C# System.Windows.Markup e denisce alcune direttive speciali per il compilatore o il parser XAML. Queste direttive appaiono spesso come attributi di elementi XML, sembrando propriet dellelemento senza per esserlo. I pi comuni sono riportati nella tabella 4.1. In maniera simile, si possono anche usare degli oggetti dichiarati in una classe C#, associando il namespace della classe a un presso inventato e utilizzando il presso per creare un nuovo elemento. Lultima caratteristica di XAML che si vuole presentare in questo sotto-paragrafo quella legata alla personalizzazione degli oggetti, accennata nel paragrafo prece- dente. Per farlo, si ipotizzi di voler costruire un bottone che abbia, come contenuto, il simbolo dello stop presente nei normali lettori musicali. Con XAML, suciente utilizzare i cosidetti elementi di propriet; in questo caso, come possibile vedere nellesempio che segue, si inserisce un quadrato di lato 40 pixel e di colore nero allinterno del bottone, utilizzando lelemento di propriet Button.Content, dove Button il nome del tipo mentre Content il nome della propriet: 34 40. 4 Tecnologia utilizzata KeywordDescrizione x:Name Associa un nome a un elemento cos che possa essere richiamato dalcodice procedurale.x:Class Denisce una classe per lelemento radice che deriva da unnamespace .NET creato ad-hoc. x:KeySpecica la chiave di un oggetto quando viene aggiunto a undizionario. x:UidSegna un elemento con un identicativo utilizzabile per lalocalizzazione in pi lingue.x:NullRappresenta un riferimento a null. x:Static Associa un elemento a una propriet, un campo, una costante o a unvalore di enumerazione statico denito nel linguaggio procedurale.Tabella 4.1: Alcune comuni keyword XAML Lo stesso risultato si pu anche ottenere omettendo lelemento di propriet perch oggetti come i bottoni utilizzano i loro gli come contenuto eettivo del bottone: Collegato al discorso della personalizzazione degli elementi XAML dovero- so parlare anche di dizionari, control template e stili, visto che si sono utilizzati abbondantemente in DOGeye. Uno stile unentit WPF relativamente semplice. La sua funzione principale quella di raggruppare insieme valori di propriet che altrimenti potrebbero essere impostate singolarmente. Lintento di questa entit quello di poter condividere questo gruppo di valori tra pi elementi, senza cos doverli riscrivere tutte le volte e per ogni singolo elemento. Per esempio, si potrebbe denire uno stile in cui si stabilisce che la dimensione del font della scritta che compare in un bottone deve essere di 22 punti, che il suo sfondo deve essere di colore arancione, che la scritta deve essere bianca e che il bottone deve essere ruotato di un angolo pari a 10 gradi. In questo modo: Denendo poi questo stile allinterno delle risorse dellelemento che pu contenere dei bottoni (o dellelemento radice, se si vuole poter applicare lo stile a tutto il le XAML), cio scrivendolo per esempio in , si possono assegnare queste propriet a qualsivoglia bottone. A un certo punto, quindi, si potr scrivere: creando cos due bottoni diversi ma con lo stesso aspetto in base alle propriet che si ha valorizzato denendo lo stile buttonStyle. Il markup StaticResource permette di andare a recuperare la risorsa (lo stile, in questo caso) il cui nome dichiarato subito dopo e di applicarlo alla propriet che lo invoca (nellesempio, la propriet Style). Uno stile, inoltre, pu essere ereditato da unaltro stile grazie alla propriet BasedOn. Se si volesse, invece, cambiare totalmente laspetto di un elemento WPF, per esempio un bottone, bisognerebbe utilizzare i control template. Tramite i con- trol template, infatti, possibile cambiare forma a un bottone, rendendolo magari rotondo. I control template, poi, si possono utilizzare allinterno di uno stile cos da poter usufruire delle caratteristiche di entrambi. In questo modo, cio, ogni controllo WPF pu essere stilizzato nuovamente in maniera del tutto personalizzabile. Se poi si volessero raggruppare tutti gli stili in un unico le, in modo da poterli trasferire da un progetto allaltro o in modo da permettere allutente di cambiare aspetto allapplicazione in base alle sue preferenze, basta utilizzare i dizionari, che servono proprio a questo scopo.Come si potuto vedere viene naturale rappresentare uninterfaccia utente in XAML a causa della sua natura gerarchica, derivata da XML. In WPF, infatti, le interfacce utente sono costruite da un albero di oggetti chiamato albero logico, da non confondere con lalbero visuale. Grazie allalbero logico, i modelli di contenuto possono scorrere prontamente i possibili elementi glio e quindi essere estendibili. Inoltre, lalbero logico fornisce un framework per alcune notiche, come il caso in cui tutti gli elementi dellalbero logico vengono caricati ed esso viene cos utilizzato per la ricerca delle risorse. 36 42. 4 Tecnologia utilizzata Lalbero visuale, invece, unespansione dellalbero logico, in cui i nodi sono sviluppati nei rispettivi componenti visuali, mostrando cio i dettagli della loro implementazione visuale. Per esempio, un bottone logicamente un solo controllo, ma nella sua rappre- sentazione visuale composto da pi elementi primitivi, come un bordo, una casella di testo per il suo contenuto e cos via.4.2.2Code-behind Introducendo le caratteristiche di XAML, si mostrato un semplice esempio in cui veniva creato un bottone che conteneva, allinterno, la scritta OK. Quel bottone, per, una volta cliccato non produceva alcuna operazione, non faceva niente. Per far s che un bottone esegua un qualche tipo di operazione una volta cliccato, necessario assegnargli un handler a un evento. In XAML, questo risultato si ottiene nel modo seguente: Lequivalente, in C#, sarebbe: System.Windows.Controls.Button b = new System.Windows.Controls.Button(); b.Click += new System.Windows.RoutedEventHandler(button_Click); b.Content = "OK";Oltre a vedere la praticit nello scrivere in XAML, da questi esempi si possono osservare altre due caratteristiche proprie di WPF: levento Click riportato in XAML richiama il metodo button_Click, che vadichiarato nel codice procedurale; nellesempio scritto in C# si nota che il metodo button_Click viene richiama-to da un RoutedEventHandler; gli eventi in WPF, infatti, sono tutti di tipoRouted, cio un evento glio richiama gli eventi che lo precedono nellalberodei controlli, se esistono dello stesso tipo e se non gli stato imposto di nonfarlo.Il codice procedurale che sta dietro a XAML e nel quale si dovr dichiarare il metodo button_Click prende il nome di code-behind e pu essere un qualsiasi linguaggio appartenente alla piattaforma .NET, anche se generalmente si predilige lutilizzo di C# o di VB.NET. Quando si crea, con Visual Studio, un nuovo progetto WPF, viene automatica- mente creato un le XAML che ha come radice lelemento Window (a indicare che quello un le XAML creato per realizzare unapplicazione desktop) e un le di 37 43. 4 Tecnologia utilizzata codice procedurale, per esempio C#, che conterr una classe parziale che eredita proprio dal le XAML.Eccone un esempio: ... namespace MyNamespace { partial class Window1 : Window { public Window1 { InitializeComponent(); //Necessario per inizializzare gli elementi XAML ... } ... //Altri metodi, come gli eventi dei bottoni, per esempio } } In fase di compilazione, poi, il le XAML verr convertito in un formato binario speciale, chiamato BAML (Binary Application Markup Language), verr inserito il contenuto di tale le come risorsa binaria dellassembly costruito dal C# e si eettueranno le connessioni automatiche tra XAML e il codice procedurale. Nonostante il fatto che tutto quello che si pu fare in XAML si pu realizzare anche nel suo code-behind, ci sono alcuni meccanismi e strumenti che sono ottimizzati per XAML e che richiederebbero la scrittura di molto codice in C#; daltra parte, esistono metodi che si possono utilizzare solo nel codice procedurale. La raccomandazione che viene fatta quella di cercare di rispettare il pi possibile lidea che sta dietro allaccoppiata XAML e code-behind, quella cio di utilizzare XAML per scrivere come appare linterfaccia utente e il codice procedurale per realizzare la logica di questa interfaccia. 4.3 Compatibilit con le tecnologie precedenti Windows Presentation Foundation pienamente compatibile e pu interoperare con le seguenti tecnologie: 38 44. 4 Tecnologia utilizzata Win32 - possibile inserire controlli Win32 in applicazioni WPF e controlliWPF in applicazioni Win32; Windows Forms - possibile inserire controlli Windows Forms in applicazioniWPF e controlli WPF in applicazioni Windows Forms; ActiveX - possibile inserire controlli ActiveX in applicazioni WPF.Anche se ci sono chiari beneci ad avere una interfaccia utente tutta realizzata con WPF, questa possibilit di interazione pu essere una cosa molto utile, soprat- tutto nel caso in cui si sia gi realizzato un controllo e non lo si voglia o non lo si possa riscrivere da zero. Per realizzare DOGeye, ci si ispirati ad alcune di queste tecniche per integrare lETU-Driver che, ricordiamolo, composto da oggetti COM e sfrutta il sottosistema graco GDI+ per le sue necessit interne. Un altro motivo per cui si pu voler integrare WPF con una delle tecnologie precedenti, pu essere perch si vuole utilizzare qualche caratteristica del sistema operativo come, per esempio, leetto glass introdotto da Windows Vista in poi.Un discorso un po a parte richiede linterazione con HTML, in quanto non propriamente una tecnologia precedente a WPF. In ogni caso, possibile integrare una pagina HTML dentro un controllo WPF chiamato Frame e anche un controllo WPF dentro HTML, creando una XAML Browser Application oppure come una pagina XAML libera, utilizzando il controllo iFrame di HTML.WPF, inoltre, compatibile con tutte le tecnologie gi utilizzabili con la piatta- forma .NET.Nei prossimi sotto-paragra, si fornir una panoramica di come queste interazioni sono possibili, analizzandole caso per caso. 4.3.1Integrare controlli Win32 in WPF In Win32, tutti i controlli sono considerati come nestre e le API di Win32 inte- ragiscono con loro attraverso degli handle conosciuti come HWND. Tutte le tecnologie basate su Windows, come DirectX, MFC e cos via, usano HWND a qualche livello, cos labilit di lavorare con HWND ore a WPF la possibilit di interagire con tutte queste tecnologie. Anche se i sottosistemi di WPF, come quello di layout o quello di animazione, non sanno come interagire con HWND, WPF denisce un FrameworkElement (una delle classi pi alte e generali nella gerarchia delle classi WPF) che pu ospitare proprio un HWND. Questo FrameworkElement si chiama System.Windows.Interop.HwndHost e permet- te di utilizzare questi controlli proprio come se fossero controlli nativi WPF.39 45. 4 Tecnologia utilizzata Lunico problema che questi controlli sono generalmente scritti in C++, e do- vr essere incluso in un altro le C++ in modalit managed che, per, non supporta la compilazione di XAML. 4.3.2 Integrare controlli WPF in Win32 Sono molte le funzionalit interessanti di WPF che possono essere integrate in unap- plicazione Win32: il 3D, il supporto avanzato per i documenti, lanimazione e cos via. Anche se non si ha bisogno di tali funzionalit, ci si pu avvantaggiare utilizzando altre caratteristiche di WPF, come il suo layout essibile e lindipendenza dalla risoluzione. Linteroperabilit di WPF con HWND bidirezionale, cos che i controlli WPF possono essere inseriti nelle applicazioni Win32 pi o meno allo stesso modo in cui i controlli Win32 sono inseriti in applicazioni WPF: si utilizza, in questo caso, la classe HwndSource, che espone ogni controllo visuale di WPF come un HWND. Questa classe si pu utilizzare anche in unapplicazione pura WPF per rispondere ad alcuni messaggi di Windows che, magari, si ha bisogno di intercettare. 4.3.3 Integrare Windows Forms e WPF Siccome i controlli Windows Forms sono facilmente esponibili come controlli Win32, si potrebbero utilizzare le stesse tecniche presentate in precedenza per realizzare questo tipo di interazione. WPF, per, ore anche altre opportunit in modo da fornire uninterazione pi ricca e completa con Windows Forms, siccome entrambi sono basati su oggetti .NET che hanno propriet ed eventi molto simili. Questa interazione costruita sopra linteroperabilit con Win32 ma resa pi semplice introducendo molte altre funzionalit, senza bisogno di scrivere alcuna riga di codice non gestito. Come per linteroperabilit con Win32, WPF denisce una coppia di classi per co- prire entrambe le direzioni dellinterazione. Lequivalente di HwndHost prende il nome di WindowsFormsHost e fa parte del namespace System.Windows.Forms.Integration. Lhost di integrazione va creato allinterno di un nuovo metodo privato che viene chiamato dallevento Loaded di WPF. Tale evento dice non solo che lalbero logi- co dellapplicazione costruito e inizializzato, cosa che tra laltro fa gi levento di inizializzazione richiamato dal metodo InitializeComponent(), ma anche che il layout deve agire su di esso, che i dati sono stati tutti collegati, che stato connesso a una supercie di rendering (la nestra) e che sul punto di essere renderizzato completamente. 40 46. 4 Tecnologia utilizzata Il controllo Windows Forms va inserito proprio in quel punto poich necessita di avere gi tutte le informazioni relative alla nestra e al suo rendering, essendo basato su un sottosistema graco diverso da quello di WPF. Inoltre, aggiungendo un manifest le, possibile applicare anche ai controlli Windows Forms le eventuali modiche stilistiche che sono state eettuate ai controlli WPF, facendo s che tutta linterfaccia abbia lo stesso look-and-feel. Per integrare, invece, un controllo WPF in unapplicazione Windows Forms si utilizza la classe ElementHost, un controllo Windows Forms che, internamente, sa come trattare contenuti WPF. 4.3.4Integrare controlli ActiveX in WPF Lintegrazione con i controlli ActiveX un esempio di retro-compatibilit piuttosto che di innovazione: WPF, infatti, eredita questa possibilit da Windows Forms. In pratica, si utilizza Windows Forms come livello intermedio tra ActiveX e WPF. Lintegrazione pu essere fatta in due modi dierenti: eseguendo lActiveX Importer, unutility inclusa nella SDK di Windows, sullaDLL ActiveX; aggiungendo il controllo ActiveX in un progetto Windows Forms tramite ildesigner di Visual Studio; questo causer la chiamata dellActiveX Importerda parte di Visual Studio.Indipendentemente da quale approccio si voglia seguire, come risultato si ottiene la generazione di due DLL. Per ottenere linteroperabilit tra le due tecnologie, basta aggiungerle al progetto WPF e predisporlo per lintegrazione con le Windows Forms, richiamando poi i metodi necessari dalla seconda DLL ActiveX (quella il cui nome inizia con Ax).Lintegrazione di controlli WPF in ActiveX, invece, non pu essere fatta con meccanismi simili ai precedenti: gli sviluppatori di WPF non hanno predisposto questa eventualit. per possibile creare un controllo ActiveX con qualche tecnologia non-WPF, come Active Template Library (ATL), e innettarvi contenuto WPF al suo interno. 4.4 Dierenze rispetto alle Windows Forms Arrivati a questo punto del capitolo, le dierenze tra Windows Presentation Foun- dation e Windows Forms (in seguito, abbreviato con WinForms) dovrebbero essere abbastanza evidenti, anche se WPF non nasce per sostituire Windows Forms.41 47. 4 Tecnologia utilizzata Allo stesso modo, dovrebbe essere evidente quale delle due preferire, se non si hanno particolari esigenze e si vuole costruire uninterfaccia utente moderna e potente, risparmiando tempo e risorse. In questo paragrafo, si riassumeranno queste dierenze, sottolineando prima i vantaggi che si ottengono utilizzando WPF e poi gli svantaggi, facendo sempre riferimento alle Windows Forms come termine di paragone.4.4.1Vantaggi I vantaggi nellutilizzare WPF invece di WinForms possono essere: 1. la possibilit di avere una struttura potente per realizzare layout complicati apiacere e con lo stile che si vuole: se si preferisce o si deve mantenere lo stiledellinterfaccia utente perfettamente coerente con linterfaccia di Windows sipu fare; se la si vuole stravolgere completamente, pure.Questo strumento, di per s, potrebbe essere anche uno svantaggio, se usatosenza cognizione, creando cos interfacce scarsamente usabili.2. la semplicit con cui possibile creare un proprio look-and-feel nellinterfac-cia utente che si sta realizzando; addirittura esiste un programma, chiamatoMicrosoft Expression Blend, che permette di costruire la parte XAML del-linterfaccia senza scrivere una riga di codice dichiarativo. Ovviamente, cometutti i programmi che producono codice automaticamente, non produce uncodice pulito come uno scritto a mano, ma pu essere un buon punto di inizio.3. il supporto alle Windows Forms, attraverso linteroperabilit di cui si parlatobrevemente nel paragrafo precedente.4. WPF rappresenta la futura tecnologia per sviluppare applicazioni per Windowsutilizzando la piattaforma .NET. Quindi pu essere una buona idea dedicarcidel tempo.5. la possibilit di riutilizzare il codice esistente prodotto con il framework .NET:in alcuni casi, i cambiamenti del codice C# da WinForms a WPF sono davverominimi; in altri, addirittura inesistenti. Quindi, con poco sforzo, si possonoriadattare parti di applicativi per essere utilizzati con WPF, anche se poibisogna comunque sviluppare la parte in XAML.6. il databinding nettamente superiore rispetto a quello di WinForms, dove perdatabinding si intende un modo per gli sviluppatori di creare un collegamentodi lettura/scrittura tra i controlli dellinterfaccia utente e i dati necessari perla parte logica dellapplicazione.42 48. 4 Tecnologia utilizzata 7. lintegrazione semplice e potente di diversi tipi di media nellinterfaccia uten-te. Per esempio, se c bisogno di includere un video o un documento o uncontenuto 3D o una transizione animata tra una sequenza di immagini o unacombinazione dei precedenti.8. la possibilit oerta da XAML di essere visualizzato direttamente in un browserweb e in tempo reale, senza necessit di compilazione.9. la possibilit di caricare dinamicamente solo una porzione di una interfacciautente da un servizio Web o se si vuole creare unapplicazione desktop conun sistema di navigazione simile a quello che si utilizza per i browser (avanti,indietro, cronologia, ecc.). 10. la possibilit di separare la parte visuale dellinterfaccia utente da quella logica;la prima sar prodotta in XAML, mentre la seconda nel code-behind. 11. la possibilit di avere parti dellinterfaccia graca virtualizzate: viene cio cari-cata (e scaricata) la parte di un controllo utente che interessa solo nel momentoin cui essa viene visualizzata. Per esempio, si immagini di avere una lista dicentomila elementi, magari rappresentati con delle immagini. Sullinterfacciautente, se ne possono visualizzare dieci alla volta, per il semplice fatto chetutti e centomila sullo schermo non ci stanno. La virtualizzazione consistenel caricare in memoria solo i dieci elementi visibili e di non caricare tutti glialtri. Appena si andr avanti nella lista, gli elementi non pi visibili sarannoscaricati, mentre quelli visibili verranno caricati. 12. il supporto interno al 3D e alle operazioni grache di base (rotazione, trasla-zioni, eetti bitmap e cos via). 4.4.2Svantaggi Tra gli svantaggi derivati dallutilizzo di WPF nei confronti di WinForms, neces- sario ricordare:1. unapplicazione prodotta con WPF richiede almeno il framework .NET versio-ne 3.0, installato di default a partire da Windows Vista ma disponibile ancheper Windows XP.2. la necessit di avere una scheda graca compatibile con le DirectX 9, se si vuoleusufruire di alcuni aspetti avanzati della graca e della possibilit di utilizzarela GPU per determinate operazioni, invece che la CPU. 43 49. 4 Tecnologia utilizzata 3. la curva di apprendimento di WPF; se si volesse rappresentare con una curvamatematica, si potrebbe utilizzare la funzione esponenziale: lapprendimento molto semplice allinizio ma, man mano che si apprendono cose nuove e sinecessita di funzionalit sempre pi avanzate, lapprendimento diventa moltodicoltoso.4. la giovent di WPF rispetto a WinForms: queste ultime hanno certamentepi controlli di terze parti disponibili, risorse online, comunit di sviluppatorie cos via.5. gli strumenti per il design dellinterfaccia inclusi in Visual Studio 2008 funzio-nano molto meglio per WinForms che per XAML.6. interoperabilit non ancora perfetta di WPF con componenti perfettamentefunzionanti se utilizzate con WinForms.C per da dire che la maggior parte di questi svantaggi o non sono cos rilevanti o sono derivati dalla relativa giovent di questa tecnologia. E questultimo aspetto sar superato dal trascorrere del tempo. . . Tabella 4.2: Vantaggi e svantaggi di WPF VantaggiSvantaggialta personalizzazione dellaspetto designer di Visual Studio 2008 perfe-della UIzionabileseparazione tra UI e logica del necessit di scheda video compati-programma bile con DirectX 9 per performancemigliorifutura tecnologia .NETcurva di apprendimento molto ripidapossibilit di riutilizzare codice proce- ancora poche risorse di terze partidurale .NET disponibilidatabinding estremamente potentenecessita .NET 3.0 o superioreorientato al webintegrabile con dei servizi webadatto a contenuti multimediali e 3Dpossibilit di avere parti della UIvirtualizzate 44 50. Capitolo 5Progettazione e implementazioneIn questo capitolo verranno presentate le varie fasi che hanno portato alla realizza- zione dellinterfaccia utente DOGeye (nome formato da DOG pi EYE interaction, ndr ), mostrando larchitettura dellambiente in cui andr a collocarsi, esponendo e motivando le scelte progettuali fatte e analizzando gli aspetti pi interessanti del- la sua realizzazione da punto di vista della programmazione con le WPF e con lambiente .NET in generale. 5.1 Introduzione DOGeye stato