Club robotique de Sophia-Antipolis

Accueil > POBOTpedia > Cartes à micro-contrôleurs > Solution embarquée .NET > Première application .NET MicroFramework

Première application .NET MicroFramework

samedi 16 janvier 2010, par Julien H.

Vous trouverez quelques exemples fournis avec le framework Microsoft, notamment le fameux "Hello World" pour afficher du texte sur l’écran. Pour commencer en douceur, on va donc changer et afficher une image.

Matériel nécessaire

On peut très bien tester ce code avec uniquement des logiciels :
 Visual Studio ou Visual C# Express 2008
 Microsoft .NET Micro Framework 3.0 ou 4.0

Mais bien sûr ce sera plus émouvant avec une carte :
 Tahoe II de Device Solutions

Préparation

Pas de préparation particulière, mais une connexion Internet peut être un plus pour trouver de l’aide. Notamment par mon expérience personnelle j’étais habitué à l’aide en ligne de Processing et d’Arduino avec des exemples pour chaque fonction, et l’aide intégrée à Visual Studio est un peu limitée en comparaison (mais je n’ai pas accès à toute la MSDN).

Démarrer un nouveau projet

Ceux qui ont la version complète de Visual Studio bénéficient de l’assistant de création d’un nouveau projet. Dans la partie dédiée au C#, une nouvelle catégorie est ajoutée par le SDK Micro Framework qui propose différents projets. On choisira "Window Application" et on donnera un nom explicite.

[rectificatif] : c’est aussi disponible pour ceux qui ont la version Express mais avec le Micro Framework 4.0

Pour ceux qui utilisent Visual C# Express, pas de création de nouveau projet, il faut repartir d’un exemple (ci-dessous "HelloWorld" qui correspond à une "Window Application" de base).

Projet .NET MF (Hello World)

Ajouter une ressource image

Avant de modifier le code source, on va parler des "ressources". Il s’agit d’un mode de gestion utilisé dans les applications .NET classiques pour gérer des constantes textuelles, des images, des polices de caractères... et qu’on retrouve également dans le Micro Framework.

Dans tout projet .NET, on va donc avoir un fichier "Resources.resx" qui est particulier, puisqu’il ouvre une fenêtre de configuration quand on clique dessus.

Par défaut vous allez retrouver la chaine de caractère "hello, world" de l’exemple de base, vous pouvez le supprimer, et sélectionner "Images" à la pace de "Strings". Puis dans le menu juste à droite vous choisissez d’ajouter une image existante (récupérez n’importe quelle image, moi j’ai pris le logo Pobot comme de bien entendu).

Au final votre image est copiée dans le répertoire "Resources" du projet et le fichier Resources est mis à jour, ce qui signifie qu’on peut récupérer simplement cette image depuis le code source de l’application.

Modifier le code

On ne part pas de zéro mais d’un projet de base pour une "Window Application". Cela signifie que le fichier source principal "Program.cs" contient déjà un certain nombre de lignes de code qui fonctionnent déjà (tapez la touche F5 du clavier pour vous en persuader, un petit mail si ce n’est pas le cas ou un tour par la FAQ).

Ce code suit les règles du WPF (Windows Presentation Foundation) qui sont réutilisées de manière minimale dans le Micro Framework. Donc on trouve une "Application" contenant une "Window" (fenêtre) qui elle même peut contenir des éléments d’interface utilisateur ou "UIElements".

On va donc enlever les lignes existantes qui mettent un Text comme contenu unique (Child) de la fenêtre (Window.Child = text) et le remplacer par une Image contenant notre ressource.

En fait, la ressource est vue comme une Bitmap (image point à point) qui va servir à créer notre Image : "new Image(bitmap)". Voici le code spécifique à notre exemple :


private Window mainWindow ;

public Window CreateWindow()

// Create a window object and set its size to the
// size of the display.
mainWindow = new Window() ;
mainWindow.Height = SystemMetrics.ScreenHeight ;
mainWindow.Width = SystemMetrics.ScreenWidth ;

// Suppression du code par défaut (texte "hello world")

// Ajout du code pour afficher une image

// 1) charger la ressource
Bitmap logo = Resources.GetBitmap(Resources.BitmapResources.logo_Pobot) ;

// 2) créer un UIElement de type Image pour charger notre bitmap
Image img = new Image(logo) ;

// 3) mettre cet élément d’interface (Image) dans la fenêtre (Window.Child)
mainWindow.Child = img ;

// Connect the button handler to all of the buttons.
mainWindow.AddHandler(Buttons.ButtonUpEvent, new ButtonEventHandler(OnButtonUp), false) ;

// Set the window visibility to visible.
mainWindow.Visibility = Visibility.Visible ;

// Attach the button focus to the window.
Buttons.Focus(mainWindow) ;

return mainWindow ;

Je ne garantis pas que ce soit optimal, c’est mon premier programme .NET (hormis quelques travaux pratiques quand j’étais étudiant et que le C# balbutiait : clin d’oeil à Alain).

Voici l’archive :

Projet "Logo Pobot" .NET MF

Tester le programme

Il y a deux manières de tester : soit en utilisant un émulateur (par défaut, un simple F5 et il se lance) ou en spécifiant le transfert via USB vers la carte Tahoe II.

Emulateur Tahoe II

Dans la photo ci-dessus, on peut remarquer que j’ai utilisé un émulateur spécial qui ressemble à la carte réelle. Il est fourni avec le SDK de Device Solutions.

Affichez les propriétés du projet (et pas de la solution) par clic droit et sélection du dernier élément du menu, et en choisissant l’onglet "Micro Framework" tout en bas, vous pourrez sélectionner le mode de transfert (USB, émulateur, ...) et les options (émulateur Microsoft, Tahoe, Tahoe II).

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.