Introduction à Microsoft Surface - Version 1.0

La page est créée Thomas Peltier
 
CONTINUER À LIRE
Introduction à Microsoft Surface - Version 1.0
Introduction à Microsoft Surface
                                        Version 1.0

Adrien OLIVENCIA
Jérémy BASCANS
James RAVAILLE
http://blogs.dotnet-france.com/jamesr
Introduction à Microsoft Surface - Version 1.0
2       Introduction à Microsoft Surface

                                                                  Sommaire

    1      Présentation .................................................................................................................................... 3
        1.1       Qu’est-ce que Microsoft Surface ? .......................................................................................... 3
        1.2       La reconnaissance tactile ........................................................................................................ 4
           1.2.1          Le fonctionnement .......................................................................................................... 4
           1.2.2          Les Tags............................................................................................................................ 5
    2      Le kit de développement ................................................................................................................. 6
        2.1       Installation ............................................................................................................................... 6
        2.2       Utilisation du simulateur ......................................................................................................... 6
           2.2.1          Les outils .......................................................................................................................... 7
           2.2.2          La fonction d’enregistrement .......................................................................................... 7
        2.3       Cas exceptionnel : Installer Surface SDK sur un Windows non supporté ............................... 7
    3      Microsoft Surface et le Framework .Net ....................................................................................... 12
        3.1       WPF et XNA ........................................................................................................................... 12
        3.2       Portage WPF vers Microsoft Surface ..................................................................................... 12
        3.3       Développer pour Microsoft Surface ...................................................................................... 14
           3.3.1          Quelques détails ............................................................................................................ 14
           3.3.2          Création de projets ........................................................................................................ 14
    4      Conclusion ..................................................................................................................................... 16

               Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
3    Introduction à Microsoft Surface

    1 Présentation

    1.1   Qu’est-ce que Microsoft Surface ?

                                 Sorti en 2008, et présenté à plusieurs reprises par Microsoft, Surface est
                                 un des rares produits issu d’un projet Microsoft Research, à avoir trouvé
                                 une utilisation commerciale.

             Microsoft Surface est un ensemble de technologies logicielles et matérielles utilisant une
    interface tactile multipoints. Le principe est d’offrir une interface entièrement pilotable de manière
    tactile, sans souris ni clavier, et par plusieurs utilisateurs simultanément. Il est ainsi possible
    d’interagir avec plusieurs éléments en même temps, que ce soit des menus, boutons, images,…

             Techniquement, Microsoft Surface
    n’a que peu de différences avec un
    ordinateur (3) classique. Le produit
    fonctionne avec un processeur Intel Core 2
    Duo (ou Core 2 Quad selon les modèles) et
    d'une     carte    graphique     gérant      la
    composition de l’affichage de Vista (Aero).
    L’affichage est effectué par un projecteur
    (4) sur un écran de 30’’(en 1024x768) (1), et
    la reconnaissance tactile par différentes
    caméras et capteurs infrarouges (2). Le tout
    est intégré dans une table. Enfin,
    l’ensemble fonctionne avec une version
                                                                  Source : Popular Mechanics
    adaptée de Windows Vista SP1, intégrant
    l’interface de Surface, et ses API (utilisables
    par les développeurs).

           Voici quelques images montrant une utilisation d’une table, intégrant la technologie
    Microsoft Surface :

            Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
4    Introduction à Microsoft Surface

           Le coût d’acquisition de cette table est très onéreux. Le prix d’une table décrite ci-dessus,
    pour les développeurs d’applications .NET est de 13 000 € (au 24/03/2009), incluant une licence
    Microsoft Surface Software et 5 licences d’utilisation du SDK (voir la prochaine partie de ce cours).

            Lors de la réunion DemoFest (réunion annuelle avec des universitaires américains), Microsoft
    a présenté un nouveau type d’écran sous le nom de « Sphere », directement inspiré de Microsoft
    Surface. Comme son nom l’indique, cet écran n’est pas plat, mais sphérique. Voici une illustration de
    ce bijou de technologie :

    1.2 La reconnaissance tactile
    1.2.1    Le fonctionnement
             Plutôt que d’utiliser un écran tactile tel qu’une tablette PC, Microsoft Surface exploite,
    comme précisé précédemment, des caméras et capteurs
    infrarouges. Ceux-ci récupèrent la lumière renvoyée par ce qui
    se rapproche de l’écran. Microsoft Surface ne récupère donc
    pas de simples points, mais une véritable image en niveaux de
    gris, reflétant les différents contacts. A partir de cela, il est
    capable de reconnaitre trois catégories d’empreintes :

               -   les doigts
               -   les objets taggués (décrits dans la prochaine
                   partie)
               -   les autres empreintes que nous appellerons « blob ».

            Cela permet d’éviter les sélections non désirées (quand le contact n’est pas reconnu comme
    un doigt par exemple). De plus, cela permet de différencier certains évènements dans le code.

            Par extension, il est aussi potentiellement possible de scanner un document, bien que la
    résolution de l’image ne soit pas assez importante pour avoir une qualité correcte.

            Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
5    Introduction à Microsoft Surface

    1.2.2   Les Tags
            Nous avons vu que Microsoft Surface était capable de reconnaître des objets, néanmoins,
    cela n’est possible que par le biais de tags associés aux objets. Un tag est une image particulière qu’il
    est nécessaire de coller sur l’objet devant être reconnu. Une fois l’objet posé sur la table, Microsoft
    Surface pourra lire l’information donnée par l’image, et pourra reconnaitre l’objet. Sans ce tag,
    Surface considèrera l’objet comme un blob.

             Il existe deux types de tags : les Byte Tags et les Identity Tags. Les Byte Tags sont codés sur 8
    bits et peuvent donc avoir 256 valeurs différentes. Les Identity Tags sont codés sur 128 bits, ce qui
    permet des milliards de valeurs différentes.

            Les deux types de Tags utilisent des modèles différents.

                -   Un Byte Tags :

                -   Un Identity Tags :

           On remarquera surtout que les modèles ne sont pas symétriques, et permettent donc
    d’obtenir l’orientation de l’objet. Sur chacun de ces modèles sont ajoutés d’autres points blancs (8
    pour un Byte Tag, 128 pour un Identity Tag) servants à coder la valeur du Tag.

              En pratique, un Byte Tag sert plutôt à détecter la nature de l’objet posé (verre, outil,…). En
    effet, on peut utiliser dans la pratique un tag identique ; on installe un tag unique sur plusieurs
    objets semblables. Par exemple lors d’une conférence, plusieurs personnes pourront utiliser des
    objets       identiques    afin      d’exécuter      des    actions    semblables      simultanément.
    Tandis qu’un Identity Tag permet de réellement identifier chaque objet, notamment si ceux-ci
    communiquent avec Microsoft Surface (un téléphone portable par Bluetooth par exemple).
    Lors du développement d’applications avec Microsoft Surface, il faudra donc bien faire attention à
    utiliser le bon type de Tag afin d’éviter de se retrouver :

                -   Soit limité par le nombre d’empreintes.
                -   Soit avec une application trop lourde.

             Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
6    Introduction à Microsoft Surface

    2 Le kit de développement

    2.1 Installation
           Afin de pouvoir concevoir et développer des applications pour Microsoft Surface, il est
    nécessaire d’installer le kit de développement (SDK). Celui-ci intègre tout ce qui est nécessaire pour
    développer et tester les applications, tel que Microsoft Surface Simulator. Au besoin, il peut être
    nécessaire d’installer aussi le Framework XNA 2.0.

             Avec le SDK, sont inclus plusieurs exemples. Par défaut, ils ne sont pas accessibles dans
    l’Application Launcher du simulateur. On peut accéder à ces exemples depuis le menu démarrer (MS
    Surface SDK 1.0 -> Samples), en les extrayant de l’archive, puis en exécutant le script batch
    « InstallSample.bat » pour les installer dans Surface.

    2.2 Utilisation du simulateur
            Au lancement du Simulateur, une application est automatiquement lancée. On accède aux
    applications par les quatre coins du simulateur (l’orientation de l’Application Launcher dépend du
    coin par lequel on y a accédé). On obtient alors la fenêtre suivante :

           En haut de la fenêtre se trouve une barre d’onglets donnant accès aux outils et aux fonctions
    d’enregistrement. La partie outil permet de sélectionner les options d’interaction avec la fenêtre.

            Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
7    Introduction à Microsoft Surface

    2.2.1    Les outils
             La première icône, en forme de croix, permet de sélectionner les contacts présents sur la
    table, afin de pouvoir interagir avec eux.

            La deuxième icône permet de simuler les doigts. Comme nous l’avons vu, Microsoft Surface
    différencie les formes, mais sur le simulateur, pour que le contact soit reconnu comme un doigt, il
    faudra passer obligatoirement par cet outil.

              La troisième icône sert à simuler les contacts quelconque, qui ne sont ni des tags, ni des
    doigts.

            Les deux autres parties sont dédiées à la simulation des Tags. La première correspond aux
    Byte Tags, auquel on peut assigner une valeur (en hexadécimal, parmi les 256 possibles). La seconde
    partie correspond donc aux Identity Tags, pour lesquels on peut préciser la Série et la Valeur.

            Pour bien comprendre les différences, il est possible d’utiliser l’application DataVisualizer.
    L’application affiche des informations sur chaque contact. Pour pouvoir utiliser plusieurs contacts
    simultanément, le simulateur gère plusieurs souris (dont le touchpad des ordinateurs portables), il
    est aussi possible de fixer un contact en maintenant le clic gauche, puis en effectuant un clic droit
    (manipulable ensuite avec l’outil de sélection).

           Enfin, les deux icônes à droite permettent respectivement de supprimer l’ensemble des
    contacts fixés, ou de les cacher.

    2.2.2    La fonction d’enregistrement
            Cette fonction est assez simple. Elle permet d’enregistrer l’ensemble des contacts effectués
    et de les refaire automatiquement.

           Le début de l’enregistrement se fait en cliquant sur le bouton « Enregistrer ». Ensuite, tous
    les contacts seront enregistrés. En arrêtant l’enregistrement (bouton « Stop »), le simulateur
    demande à l’utilisateur où enregistrer le fichier.

           Pour lire une séquence enregistré, il faut simplement charger le fichier enregistré avec le
    bouton Ouvrir, puis cliquer sur Play.

    2.3 Cas exceptionnel : Installer Surface SDK sur un Windows non supporté
             Le SDK n’est officiellement compatible qu’avec Windows Vista SP1 32 bits et Windows 7 32
    bits, édition Professionnelle, Entreprise et Intégrale. Sur n’importe quelle autre version de Windows,
    notamment les Windows 64 bits, l’installeur refusera tout simplement de se lancer.

              Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
8    Introduction à Microsoft Surface

            Il est possible d’outrepasser ces conditions en utilisant Orca. L’installeur d’Orca se trouve
    dans le dossier C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\Orca.msi (uniquement si Visual
    Studio 2008 est installé). S’il n’y est pas, téléchargez-le à cette adresse :
    http://www.technipages.com/download-orca-msi-editor.html, et installez-le.

             Contrairement à sa première version, le SP1 du SDK est fourni sous la forme d’un fichier
    exécutable qui extrait l’installeur MSI. Comme il n’est pas évident de récupérer cet installeur dans les
    fichiers temporaires, nous allons extraire le fichier manuellement. Pour cela, il suffit d’ouvrir le fichier
    exécutable avec Visual Studio. Nous obtenons alors ceci :

            En développant la partie RCDATA, une liste d’élément apparait, dont un est nommé
    « MSI00 ». Faites clic-droit dessus, puis Exporter. Enregistrez-le où vous souhaitez, et modifiez
    l’extension en .msi à la place .bin.

            Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
9    Introduction à Microsoft Surface

              Nous pourrions dès lors utiliser directement Orca pour supprimer la condition d’installation.
    Le problème c’est que, durant l’installation, une exécutable est exécutée en 64 bits alors qu’elle
    devrait se lancer en 32 bits, causant une erreur et annulant l’installation. Nous avons besoin de
    modifier le comportement de cette exécutable. Pour cela, nous allons extraire tout le contenu de
    l’installeur MSI. Lancez un invité de commandes (cmd.exe) en mode Administrateur, placez-vous
    dans le dossier contenant l’installeur MSI, puis tapez la commande suivante : « msiexec /a
    SurfaceSDK_SP1.msi /qb TARGETDIR=c :\sdk », en étant dans le dossier contenant l’installeur, et
    adaptant bien sûr le nom du fichier MSI. Le paramètre TARGETDIR indique le dossier où seront extrait
    les fichiers, adaptez-le (en évitant espaces et accents).

            Dans ce dossier, nous avons toujours un installeur MSI, mais aussi plusieurs autres dossiers.
    Lancez l’invite de commandes de Visual Studio en mode Administrateur, puis placez-vous dans le
    dossier où vous avez extrait l’installeur, puis dans le dossier « Microsoft Surface\v1.0\ ». Enfin,
    exécutez la commande :

            corflags setupcustomaction.exe /32bit+ /force

              Il nous reste enfin à supprimer la condition d’installation avec Orca. Faites clic-droit sur
    l’installeur MSI (celui présent avec les fichiers extraits du premier MSI), puis « Edit with Orca ».
    Cherchez et sélectionnez la table « LaunchCondition » dans la partie de gauche dans Orca.
    Supprimez-la en effectuant un clic-droit dessus puis Drop Table.

            Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Introduction à Microsoft Surface - Version 1.0
10    Introduction à Microsoft Surface

               Sauvegardez ensuite le fichier (File -> Save). L’installation devrait alors pouvoir se faire sans
     soucis.

             Pour les utilisateurs de Windows 64 bits, bien que le SDK se soit bien installé, le simulateur
     ne fonctionne pas, cela se traduit simplement par un crash du simulateur au lancement. Il est
     néanmoins possible de résoudre le problème en forçant l’application à se lancer en 32 bits et non en
     64 bits. Pour cela, lancez l’invite de commandes de Visual Studio, placez -vous dans le dossier du
     simulateur (Program Files (x86)\Microsoft SDKs\Surface\v1.0\Tools\Simulator), et exécutez la
     commande :

               corflags SurfaceSimulator.exe /32bit+ /force

             Cette même commande doit être utilisée pour tous les fichiers exécutables du dossier
     « Program Files (x86)\Microsoft Surface\v1.0 » (Attract.exe, AttractConfig.exe, SurfaceInput.exe,
     SurfaceOutOfOrder.exe et SurfaceShell.exe). Une fois fait, le simulateur devrait pouvoir se lancer
     sans problème.

             Au même titre que le simulateur, si l’application se lance en 64 bits, elle plantera au
     démarrage. Ce qui fait que l’ensemble de vos applications devront être compilés en 32 bits. Par
     défaut, Visual Studio compile en utilisant la plateforme Any CPU, qui fait que l’exécutable se lance
     dans la même architecture que l’OS (donc 64 bits avec un Windows 64 bits). Pour modifier ce
     comportement, une fois le projet chargé, il faut aller sur Générer -> Gestionnaire de configurations.

            Dans la fenêtre : « Plateforme de la solution active -> Nouveau ». Sélectionnez x86 comme
     nouvelle plateforme.

               Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
11    Introduction à Microsoft Surface

             Vérifiez que la plateforme du projet soit bien « x86 » puis fermez la fenêtre. Recompilez
     votre application. Elle ne devrait plus planter au lancement (à noter que les binaires compilées en
     x86 se trouvent dans le dossier \bin\x86).

             Pour les exemples du SDK, après avoir utilisé le script batch pour les ajouter à l’Application
     Launcher, il est nécessaire de recompiler toute la solution en mode Release et en 32 bits depuis
     Visual Studio (avec les modifications vues précédemment), puis de déplacer la nouvelle exécutable
     de chaque application de {nom_application}\bin\x86\Release vers {nom_application}\bin\Release
     (par exemple de E:\VS2008\Surface\WPF\DataVisualizer\bin\x86\Release\DataVisualizer.exe vers
     E:\VS2008\Surface\WPF\DataVisualizer\bin\Release\DataVisualizer.exe).

             Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
12    Introduction à Microsoft Surface

     3 Microsoft Surface et le Framework .Net

     3.1 WPF et XNA
             Microsoft Surface étant bâti sur Windows Vista SP1, a été conçu de manière à ne pas changer
     les habitudes de développement. Ainsi Microsoft Surface utilise le Framework .Net, notamment WPF
     et XNA. Les applications peuvent être développées entièrement depuis Visual Studio 2008 avec le
     SDK de Surface. Néanmoins, quelques modifications doivent être effectuées pour rendre une
     application WPF compatible avec Surface. On trouve alors des contrôles adaptés à Surface (que ce
     soit des boutons, sliders, listes,…) ainsi que d’autres contrôles supplémentaires, conçus
     spécifiquement pour Surface. L’utilisation de ces deux technologies permet à Surface d’exploiter au
     mieux la carte graphique pour l’affichage.

     3.2 Portage WPF vers Microsoft Surface
            Lors d’un portage d’une application WPF vers Surface, les changements sont minimes. Dans
     l’ordre des changements à effectuer :

        -   Ajouter la référence pour Microsoft.Surface.Presentation (Projet -> Ajouter une référence)
        -   Ajouter les espaces de nom suivant dans le code C# :
                o Microsoft.Surface.Presentation
                o Microsoft.Surface.Presentation.Controls
        -   Renommer dans le code C# le type de classe Window en SurfaceWindow
        -   Ajouter le namespace xmlns:s="http://schemas.microsoft.com/surface/2008" dans le
            XAML
        -   Modifier les contrôles pour leurs équivalents Surface dans le XAML

            Par exemple, voici un bloc de code XAML (WPF) :

      // XAML
      
                  Button
                  CheckBox
                  CheckBox
                  RadioButton
              
            Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
13    Introduction à Microsoft Surface

            Voici le bloc de code équivalent pour Microsoft Surface :

      // XAML
      
                        Button
                  
                           CheckBox
                     
                           CheckBox
                     
                        RadioButton
                  
            Nous pouvons observer que :

        -   Des espaces de noms sont à ajouter.
        -   Les noms des contrôles doivent être modifiés.

             Le défaut d’un portage sans ces modifications, ne permettra pas d’exploiter au mieux les
     fonctionnalités de Microsoft Surface.

            Voici un tableau de correspondance des contrôles entre WPF et Surface :

                          WPF                                                  Surface
                         Button                                            SurfaceButton
                        CheckBox                                          SurfaceCheckBox
                     ContentControl                                     SurfaceContentControl
                      ContextMenu                                       SurfaceContextMenu
                        Control                                            SurfaceControl
                   FrameworkElement                                SurfaceFrameworkElement
                        InkCancas                                       SurfaceInkCancas
                      ItemsControl                                    SurfaceItemsControl
                          ListBox                                          SurfaceListBox
                       ListBoxItem                                       SurfaceListBoxItem
                          Menu                                              SurfaceMenu
                        MenuItem                                          SurfaceMenuItem
                      PasswordBox                                        SurfacePasswordBox

            Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
14    Introduction à Microsoft Surface

                           Popup                                             SurfacePopup
                        RadioButton                                       SurfaceRadioButton
                       RepeatButton                                      SurfaceRepeatButton
                          ScrollBar                                         SurfaceScrollBar
                        ScrollViewer                                      SurfaceScrollViewer
                            Slider                                           SurfaceSlider
                           TextBox                                          SurfaceTextBox
                           Thumb                                             SurfaceThumb
                        ToggleButton                                     SurfaceToggleButton
                            Track                                             SurfaceTrack
                        UserControl                                       SurfaceUserControl
                          Window                                            SurfaceWindow

             Les contrôles WPF classiques restant accessibles, il faudra faire veiller à utiliser ceux de
     Surface si un équivalent existe.

     3.3 Développer pour Microsoft Surface
     3.3.1   Quelques détails
             Développer pour Microsoft Surface implique quelques changements dans le fonctionnement
     de l’application. Bien qu’utilisant un concept multi-utilisateurs, Surface ne peut afficher qu’une
     application à la fois. Cela implique que l’application lancée occupe l’intégralité de l’espace d’affichage
     (qui pour rappel a une résolution de 1024*768). Il n’est pas donc pas nécessaire de spécifier la
     hauteur ou la largeur de la fenêtre. Plusieurs applications peuvent toutefois être lancées, mais elles
     ne pourront s’afficher en même temps. Il faut alors utiliser l’Application Launcher pour passer d’une
     application à une autre.

            De plus, une application Surface n’est pas forcément destinée à une utilisation spécifique.
     Par exemple, elle peut donner la possibilité à deux utilisateurs d’effectuer des tâches différentes en
     même temps (un utilisateur trie des photos pendant que l’autre regarde ses mails).

     3.3.2   Création de projets
             Commencer un projet pour Surface se fait de manière classique sur Visual Studio 2008. C'est-
     à-dire en utilisant le menu Nouveau -> Projet. Il reste ensuite à aller sur Visual C# et à sélectionner le
     type de projet «Surface».

             Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
15    Introduction à Microsoft Surface

            Comme nous l’avons vu précédemment, il est possible d’utiliser WPF ou XNA pour
     développer notre application. Nous nous contenterons de WPF pour le moment.

              Une fois le projet créé, le fonctionnement à l’intérieur de Visual Studio est identique à celui
     d’un projet WPF. On trouve toujours le code XAML et le code C#. A noter qu’avant d’exécuter
     l’application, il est nécessaire de lancer le simulateur.

             Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
16    Introduction à Microsoft Surface

     4 Conclusion
              Il est évident que Microsoft Surface est une technologie d’avenir. Même si son coût onéreux
     freine son déploiement dans les entreprises et dans notre vie courante, cette technologie permettra
     d’utiliser les matériels et logiciels informatiques autrement, par rapport à leurs utilisations actuelles.

             Microsoft propose un kit de développement, permettant d’utiliser pleinement les possibilités
     de cette technologie, et de pouvoir développer des applications .NET s’intégrant pleinement dans
     l’environnement.

             Dotnet France Association / Adrien OLIVENCIA - Jérémy BASCANS - James RAVAILLE
Vous pouvez aussi lire