Aller au menu - Aller au contenu

Icône Le SDK

Mise à jour : 23/03/2011
Difficulté : Facile Facile Creative Commons BY-NC-ND
270 visites depuis 7 jours, dont 36 sur ce chapitre classé 363/786
Après avoir présenté Microsoft Surface, nous allons passer à son Software Development Kit, ou plus communément SDK. Dans cette partie, nous allons passer de l'installation, à certains détails des API fournies avec Surface, ainsi que des outils fournis avec, en particulier le simulateur (probablement ce qui est le plus intéressant d'ailleurs :) ).
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Installation

Je pense que vous vous en doutez, Microsoft n'allait pas proposer autre chose que Visual Studio pour développer pour Microsoft Surface. De plus, certains pré-requis sont nécessaires pour pouvoir installer et utiliser le SDK de Microsoft Surface. Vous devrez donc avoir :
  • Visual Studio 2008/2010
  • XNA Framework 2.0
  • Windows Vista/7 Pro ou Ultimate en 32 bits
  • Un écran avec une définition d'écran supérieure à 1280x960 (le 1280x800 ne passe pas, 1400x900 passe)


Si vous avez accès à une version complète de Visual Studio, tant mieux, autrement, il est possible d'utiliser la version Express de Visual C#. Néanmoins, cela devient un petit casse-tête puisque la version 2010 ne vous permettra pas directement l'installation du SDK de Surface, en particulier à cause d'une dépendance qui n'est pas présente dans cette version. Néanmoins, si vous installez la version 2008, vous pourrez procéder quand même à l'installation, tout en ayant la possibilité d'utiliser Visual C# Express 2010 pour développer ;) .

Concernant le XNA, cela consiste juste à l'installation du Framework et non du Game Studio. Vous le trouvez sur le site de Microsoft.

Enfin, pour Windows, et j'imagine que ca a dû en choquer plus d'un, il y a deux limitations. L'installation du SDK ne peut se faire que sur un Windows Vista ou 7 en 32 bits, mais doit en plus être en édition Pro et Ultimate. Cependant, pas de quoi s'inquiéter, ces limitations sont contournables.

Passons maintenant au SDK lui-même. Vous le trouverez lui aussi sur le site de Microsoft : Microsoft Surface SDK SP1.
Si vous respectez déjà les conditions d'entrée, vous pouvez l'installer sans problèmes, et donc sauter la partie sur l'installation pour les Windows non supportés, et aller directement à la partie sur l'utilisation du simulateur.

Installation sur un Windows non supporté

Cette partie ne va concerner que les personnes ayant un Windows non compatible avec le SDK, à savoir les Windows 64 bits et les éditions Familiales. Pour les Windows XP, il n'y a néanmoins aucun moyen de faire tourner le SDK.
J'imagine que certains n'ont pas résisté et ont quand même essayé de lancer l'installation pour se retrouver avec un message d'erreur :

Message d'erreur à l'installation


Pour pouvoir contourner ces limitations, nous allons avoir besoin d'Orca, un petit utilitaire permettant de modifier les installeurs MSI.
Si vous avez installé le SDK de Windows, vous trouverez certainement son installeur dans : C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\. Autrement, vous pouvez toujours le télécharger à cette adresse : http://www.technipages.com/download-orca-msi-editor.html.

Contrairement à la première version du SDK qui était directement fourni sous la forme d'un installeur MSI, le SP1 est packagé dans un fichier exécutable. Afin de récupérer l'installeur depuis le package, je vous propose une solution relativement simple : ouvrez le fichier exécutable avec Visual Studio (oui, oui : Fichier -> Ouvrir).
Vous devriez obtenir ceci :

Image utilisateur


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

Cas des Windows 64 bits


Si vous êtes en 32 bits, vous pouvez sauter cette partie pour continuer avec Orca. Pour ceux qui sont en 64 bits, nous allons avoir besoin d'effectuer une opération supplémentaire.
Alors que nous pourrions dès lors utiliser directement Orca pour supprimer les conditions d’installation, nous allons rencontrer un problème avec un exécutable qui est exécuté 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 cet exécutable pour la forcer à se lancer en 32 bits. 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:\surface_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 à votre guise.

Une fois ceci fait, vous devriez trouver un ensemble de fichiers, dont un installeur MSI (encore un :p ), c'est celui-ci que vous devrez par la suite ouvrir avec Orca. Mais revenons à notre problème initial. Nous allons devoir forcer un exécutable à se lancer en 32 bit. Pour cela, ouvrez l’invite de commandes de Visual Studio (menu Démarrer -> Microsoft Visual Studio 2010 -> Outils 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

Dans le cas où vous n'avez pas l'invité de commandes de Visual Studio, vous pouvez essayer de télécharger corflags et de l'utiliser depuis l'invité de commandes classique de Windows.

Modification avec Orca


Maintenant que nous avons notre MSI prêt (rappel pour les utilisateurs en 64 bits, c'est le MSI extrait du premier MSI qu'il faudra ouvrir et exécuter), nous allons pouvoir procéder à la suppression des contraintes.
Ouvrez donc le MSI avec Orca. Vous devez obtenir une vue avec des noms de tables à gauche, et les conditions à droite. Dans la liste des Tables, cherchez celle nommée LaunchCondition. Faites un clic-droit, et supprimez là.

Image utilisateur

Sauvegardez les changements et quittez Orca. Vous devriez alors pouvoir lancer l'installation sans soucis, et même utiliser le Simulateur, sauf si vous êtes en 64 bits (eh oui, encore...).

Configuration du simulateur (64 bits uniquement)


Bien que l'installation se soit bien déroulée (du moins, j'espère :) ) le simulateur ne fonctionne pas, et 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 (au même titre que pour l'installation). 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 devra être compilé 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.

Image utilisateur


Utilisation et configuration du simulateur

Installation des applications fournies


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 (à faire en Administrateur). Les utilisateurs de Windows 64 bits auront ici besoin de faire un corflags sur les projets avant de pouvoir les lancer. Autrement, vous pouvez aussi ouvrir les différentes solutions avec Visual Studio et forcer la génération en x86.

Utilisation


Au lancement du Simulateur, une application est automatiquement lancée. On obtient alors la fenêtre suivante :

Image utilisateur


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é).

Les outils


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.
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. C'est d'ailleurs l'outil par défaut.

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

Enfin, 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), tandis que la seconde 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. Celle-ci est accessible depuis l'Application Launcher.
L’application affiche des informations sur chacun des contacts posés sur la Surface. Depuis le simulateur, il va être difficile de tester les capacités multi-touch. Pour cela, le simulateur gère plusieurs souris (dont le touchpad des ordinateurs portables) qui créent donc autant d'interacteurs que de souris, chacun étant contrôlable par une des souris.
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). Le contact apparaît alors en rouge et reste actif. Pour le supprimer, il faudra refaire la même manipulation dessus.

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

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ée, il faut simplement charger le fichier enregistré avec le bouton Ouvrir, puis cliquer sur Play.

Microsoft Surface et le Framework .Net

WPF et XNA


Microsoft Surface étant bâti sur Windows Vista SP1, il a été conçu de manière à ne pas changer les habitudes de développement. Ainsi Microsoft Surface utilise le Framework .Net, en particulier WPF et XNA. Bien évidemment, Surface n'est pas limité à ces langages. Il sera possible d'utiliser n'importe quel Framework utilisant le .Net (WinForm par exemple... ou pas).

Actuellement, Surface est basé sur les technologies intégrées à Windows Vista, donc pas de WPF4 et a donc nécessité une adaptation des contrôles pour qu'ils puissent retourner des informations liées au tactile.
Les applications peuvent donc toujours être développées entièrement depuis Visual Studio avec le SDK de Surface. Néanmoins, quelques modifications doivent être effectuées pour rendre une application WPF compatible avec Surface. Il sera nécessaire d'utiliser les contrôles spécifiques à Surface (que ce soit des boutons, sliders, listes,…), capables de gérer le tactile. Certains contrôles n'existant tout simplement pas (ComboBox par exemple), il vous faudra passer par des méthodes de substitution. En soi, même si une application WPF peut être portée simplement vers Microsoft Surface, si elle n'a pas été pensée pour être utilisable de manière tactile, il faudra refaire une grande partie de l'UI.

Enfin, vous noterez que les Frameworks proposés de base sont capables d'exploiter la carte graphique. C'est cette particularité qui vous permettra de créer des contrôles riches, avec de grandes possibilités de manipulation (je vous laisse imaginer le développement d'une application tactile en WinForm :D ).


Portage WPF vers Surface


Nous avons vu que Microsoft Surface utilise ses propres contrôles WPF. La plupart de ces contrôles sont des équivalents des contrôles classiques de WPF. Voici la liste de ces équivalences (à noter que Surface intègre aussi d'autres contrôles) :
WPFSurface
Button SurfaceButton
CheckBox SurfaceCheckBox
ContentControl SurfaceContentControl
ContextMenu SurfaceContextMenu
Control SurfaceControl
FrameworkElement SurfaceFrameworkElement
InkCanvas SurfaceInkCanvas
ItemsControl SurfaceItemsControl
ListBox SurfaceListBox
ListBoxItem SurfaceListBoxItem
Menu SurfaceMenu
MenuItem SurfaceMenuItem
PasswordBox SurfacePasswordBox
Popup SurfacePopup
RadioButton SurfaceRadioButton
RepeatButton SurfaceRepeatButton
ScrollBar SurfaceScrollBar
ScrollViewer SurfaceScrollViewer
Slider SurfaceSlider
TextBox SurfaceTextBox
Thumb SurfaceThumb
ToggleButton SurfaceToggleButton
Track SurfaceTrack
UserControl SurfaceUserControl
Window SurfaceWindow


J'espère que je n'ai oublié personne ^^
Pour en revenir au portage d'une application WPF, vous faudra donc utiliser cette table de correspondance. Ces contrôles sont disponibles dans un namespace spécifique à Surface.
Voici les changements à effectuer :
  • Ajouter la référence à Microsoft.Surface.Presentation à votre projet (Projet -> Ajouter une référence)
  • Ajouter les namespaces dans le code C# :
    • Microsoft.Surface.Presentation
    • Microsoft.Surface.Presentation.Controls
  • Changer le type de la Window dans le code C# en SurfaceWindow
  • Ajouter le namespace xmlns:s="http://schemas.microsoft.com/surface/2008" dans les XAML
  • Modifier les contrôles WPF par les équivalents Surface


Voici un exemple de code XAML (en WPF classique) :
Code : XML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<Window x:Class="WpfApplication3.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <StackPanel>
            <Button Height="23" Width="75">Button</Button>
            <CheckBox Height="16" Width="120">CheckBox</CheckBox>
            <CheckBox Height="16" Width="120">CheckBox</CheckBox>
            <RadioButton Height="16" Width="120">RadioButton</RadioButton>
        </StackPanel>
    </Grid>
</Window>


L'équivalent pour Microsoft Surface sera :
Code : XML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<s:SurfaceWindow x:Class="WpfApplication3.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:s="http://schemas.microsoft.com/surface/2008"  
    Title="Window1" Height="300" Width="300">
    <Grid>
        <StackPanel>
            <s:SurfaceButton Height="23" Width="75">Button</s:SurfaceButton>
            <s:SurfaceCheckBox Height="16" Width="120">CheckBox</s:SurfaceCheckBox>
            <s:SurfaceCheckBox Height="16" Width="120">CheckBox</s:SurfaceCheckBox>
            <s:SurfaceRadioButton Height="16" Width="120">RadioButton</s:SurfaceRadioButton>
        </StackPanel>
    </Grid>
</s:SurfaceWindow>



Développer pour Microsoft Surface


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).

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».

Image utilisateur

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.
J'en profite pour rappeler aux utilisateurs de Windows 64 bits qu'ils ont besoin de forcer la génération en mode x86 comme vu dans la partie précédente.
Vous devez maintenant être prêt à développer vos premières applications pour Microsoft Surface. Vous verrez que le SDK de Surface est rempli d'outil intéressant. Nous verrons dès la prochaine partie l'utilisation de la technologie tactile de Surface.
Chapitre précédent Sommaire Chapitre suivant

Partager

2 commentaires pour "Le SDK"
Note moyenne : 3.84 / 4 (25 votes)
Pseudo Commentaire
Hors ligne gretro # Posté le 06/12/2010 à 15:45:12
Avatar

Avis : Bon

Ville : Longueuil
Pays : Canada

J'aime beaucoup la manière dont tu apportes l'information et le sujet semble passionnant. Malheureusement, il semble qu'on ne sera jamais capable de tester nos applications dans une situation réelle... Microsoft Surface a-t-il vraiment un avenir vu son prix exorbitant ?

De toute manière, cette question ne concerne pas la qualité de ton tutoriel qui est très bien fait !
Hors ligne Strimy # Posté le 06/12/2010 à 17:34:19
Avatar

Avis : Très bon

Ville : Albi
Pays : France métropolitaine
Études : SUPINFO Midi-Pyrénées à Toulouse

C'est sûr que ca reste une technologie très peu abordable en pratique. Ceci dit, ca peut être une façon de trouver du boulot dans le domaine.
Personnellement, ca m'a permit de trouver un stage dans le tactile.

A priori, une prochaine version de Surface devrait sortir, et pourrait être plus abordable. J'espère pouvoir ensuite adapter rapidement le tuto.
 

Voir tous les commentaires