Pierre's Embedded and Mobile Blog

Soulevons le capot des systèmes embarqués et mobiles

April, 2010

Posts
  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Le SDK pour VS2010 RTM est disponible!

    • 5 Comments

    Nombre d’entre nous, développeurs mobiles, n’en pouvions plus de ne pouvoir installer la RTM de Visual Studio 2010, car le SDK pour Windows Phone 7 n’était compatible qu’avec la RC. La CTP Refresh vient corriger tout ça!

    Les outils sont comme d’habitude téléchargeables à partir de http://developer.windowsphone.com

    Les liens utiles:

    happy installing // happy coding!

  • Pierre's Embedded and Mobile Blog

    Media Center pour systèmes embarqués avec Windows Embedded Standard 7

    • 1 Comments

    La RTM de Windows Embedded Standard 7 a été annoncée à l’ESC Silicon Valley et avec ça une fonctionnalité bien intéressante: la présence de Windows Media Center dans les composants intégrables dans le système embarqué!!!

    Comme la CTP est disponible depuis un certain temps, il y a déjà du contenu disponible sur le sujet… on avait notamment fait 2 sessions aux Techdays 2010 :

    Avec le nouveau composant Media Center, on va probablement voir arriver des équipements embarqués type set-top box, disques durs multimedia, etc

    Steve Guggenheimer, qui dirige la division OEM chez Microsoft, profite également de cette annonce pour partager sur son blog sa vision de l’importance des systèmes embarqués chez Microsoft

    A l’occasion du lancement une petite vidéo a été tournée pour illustrer les utilisations qui ont déjà été faite, depuis la sortie de la CTP, de Windows Embedded Standard 7 par les industriels: Vous pouvez la voir sur cette page

    Quelques liens en plus pour les plus curieux d’entre vous:

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Le Framework de Navigation

    • 0 Comments

    La plupart des applications mobiles sont (logiquement) multipages : que ce soit sur un contrôle de type pivot, panorama, ou une simple navigation entre des pages, il faut prévoir la meilleure façon possible pour l’utilisateur de naviguer entre les pages.

    La base de la navigation

    Le framework de navigation introduit dans Silverlight 3 a été repris dans Windows Phone 7. On dispose de deux types d’objets : PhoneApplicationFrame et PhoneApplicationPage. Chaque application possède une unique PhoneApplicationFrame et de multiples PhoneApplicationPages.

    Dans une application WindowsPhone, chaque PhoneApplicationPage est en général contenue dans sa propre page en XAML. Pour naviguer d’une page à l’autre, il suffit d’appeler la méthode Navigate() de la classe statique NavigationService, qui est contenue dans l’espace de nommage Microsoft.Phone.Navigation.

    La base de la navigation se fait donc très simplement de la façon suivante :

    NavigationService.Navigate(new Uri("/DetailsPage.xaml", 
    UriKind.Relative));

    Le passage d’argument entre les pages

    Il arrive (c’est même fréquent) qu’on doive passer des arguments entre les pages. Il y a pour cela deux manières de procéder.

    La première et la plus simple est de créer un objet qu’on assignera au datacontext de la page vers laquelle on navigue. On pourra ensuite directement binder les éléments de la page cible sur cet objet :

    _selectedItem = (sender as ListBox).SelectedItem;
    FrameworkElement root = Application.Current.RootVisual 
        as FrameworkElement;
    root.DataContext = _selectedItem;

    La seconde manière consiste à passer des arguments directement dans l’URI de la page cible. Dans ce cas, dans la page cible, il est possible de récupérer les arguments en utilisant une autre classe statique, le NavigationContext, et notamment sa méthode QueryString. Voici un exemple :

    Dans la page principale :

    NavigationService.Navigate(new Uri("/DetailsVille.xaml?Ville="
            + ((Ville)listBox1.SelectedItem).Nom + "&Pays=" 
            + ((Ville)listBox1.SelectedItem).Pays, 
            UriKind.Relative));

    Et dans la page cible :

    string ville = this.NavigationContext.QueryString["Ville"];
    stringpays = this.NavigationContext.QueryString["Pays"];

    Si l’on veut utiliser des URL « simples » ou de la logique de routage dans le code, il est possible d’utiliser des UriMappers pour refactorer les URL des pages au moment de la navigation. Voici un exemple simple (tiré de la librairie MSDN) qui illustre bien le principe des UriMapper :

    <navigation:Frame x:Name="ContentFrame" 
                      Style="{StaticResource ContentFrameStyle}"
    Source="/Home" Navigated="ContentFrame_Navigated" 
                      NavigationFailed="ContentFrame_NavigationFailed">
        <navigation:Frame.UriMapper>
            <uriMapper:UriMapper>
                <uriMapper:UriMapping Uri="" 
                                      MappedUri="/Views/Home.xaml"/>
                <uriMapper:UriMapping Uri="/{pageName}" 
                                      MappedUri="/Views/{pageName}.xaml"/>
            </uriMapper:UriMapper>
        </navigation:Frame.UriMapper>
    </navigation:Frame>
    

    La gestion du bouton back

    La plupart du temps, on peut laisser le système gérer le bouton back. Il reviendra automatiquement en arrière dans la pile des pages. Ceci étant dit, il peut être utile de capturer cet évènement, afin par exemple de reforger une url avec des arguments pour la page appelante, ou pour démarrer le storyboard d’une animation de changement de page.

    Dans le handler de l’évènement PhoneApplicationPage_BackKeyPressed, il faut commencer par annuler la navigation par défaut, avant de rajouter son code. Voici un exemple de gestion de l’appui sur le bouton back, tiré du template d’application Windows Phone List Application

    private void PhoneApplicationPage_BackKeyPress(object sender, 
        System.ComponentModel.CancelEventArgs e)
    {
        // Cancel default navigation
        e.Cancel = true;
        // Do page transition animation
        PageTransitionDetails.Begin();
    }

    Les différentes manières d’agencer les pages

    On peut imaginer plusieurs manières d’agencer les pages d’une application : le plus simple étant justement de ne pas les agencer. Une page remplace l’autre à l’écran et on navigue simplement entre elles de manière plus ou moins linéaire avec des boutons et des menus.

    Il est également possible avec Windows Phone 7 d’utiliser d’autres agencements pour vos données, que ce soit sous forme de page ou pas. Les deux contrôles d’agencement de pages les plus connus sont le pivot (comparable à un TabControl) et le panorama (dont les meilleurs exemples sont les hubs)

    Il convient cependant de ne pas utiliser ces contrôles n’importe comment : sans qu’il y ait de règle établie, on peut d’une manière générale considérer :

    - Le pivot est un moyen efficace d’afficher des données, alors que le panorama est un moyen immersif d’afficher du contenu

    - Le panorama peut être considéré comme la « couverture » de votre application, comme la couverture d’un magazine

    - Un pivot peut servir de filtre, un panorama peut servir pour naviguer à travers un contenu « éclaté » sur plusieurs vues, et de préférence varié.

    - Les panoramas sont faits pour attirer l’utilisateur à l’intérieur de l’application. Les pivots pour séparer les données en catégories, tris, etc.

  • Pierre's Embedded and Mobile Blog

    Tout ce que vous avez toujours voulu savoir sur les robots de combat… en 367 pages d’explications et de schémas

    • 0 Comments

    367 pages de lecture qui couvrent tout ce qu’il faut savoir pour construire un robot qui ferait peur au T1000: analyse des différents types de robots de combats, calcul de résistance des structures et des matériaux, différents types de propulsion et d’armement, avec les qualités et défauts de chacun, transmissions, moteurs, alimentation, batteries, et même jusqu’à la gestion de l’évènement et du combat… L’équipe RioBotz nous offre avec un superbe guide, très exhaustif, documenté, et ponctué de l’expérience du terrain qu’ils ont acquis au fur et à mesure de nombreux championnats. Une bible pour tout roboticien, qu’il construise des robots guerriers ou pas!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Comprendre la plateforme dans son ensemble

    • 0 Comments

    En attendant que le centre de développement MSDN sur Windows Phone subissent le lifting qu’il mérite sur Windows Phone 7, je vous propose d’ores et déjà d’y retrouver 2 articles traitant du sujet: le premier est une visite quasi-exhaustive de la plateforme Windows Phone 7: en quelques pages, ils vous permettra de comprendre toutes les notions clefs et les possibilités offertes aux développeurs d’applications sur la première version du SDK

    Le deuxième article traite d’un sujet beaucoup plus précis mais néanmoins critique d’une application Windows Phone 7: l’Application Bar: comment l’utiliser à bon escient, et quelles sont les règles à respecter pour en tirer le meilleur parti possible.

    Bonne lecture!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] Des contrôles “Panorama” de partout

    • 2 Comments

    Autre grand absent de la première version du SDK Windows Phone 7, un moyen de faire une application sous forme de “Panorama” (dans la logique des “hubs” de l’interface Metro). De nombreux développeurs se sont attelés à la tâche, en voici quelques uns: 

    N’hésitez pas à vous en servir dans vos applications et surtout à contribuer à leur amélioration en postant des commentaires dans les blogs de chacun de ces développeurs!

  • Pierre's Embedded and Mobile Blog

    [Windows Phone 7] 2 manières de simuler l’accéléromètre dans l’émulateur

    • 0 Comments

    L’émulateur livré avec le SDK Windows Phone 7 étant encore un béta, un certain nombre de fonctionnalités ne sont pas disponibles dans les API. Notamment la simulation de l’accéléromètre, qui est sur un écran de toutes façons un problème relativement épineux… Deux personnes ont donc proposé 2 solutions différentes avec un peu de hardware:

    Dans les deux cas, on se sert d’API .NET pour récupérer l’état du capteur et l’exposer à travers un WebService qu’on consomme dans l’émulateur – Donc avec un petit temps de latence… mais c’est toujours mieux que rien :)

Page 1 of 1 (7 items)