Présentation du .NET Micro Framework

by Fabien Lavocat 5. août 2009 09:30
.NET Micro Framework

J’ai commencé il y a 15 jours à écrire une petite série d’articles sur le .NET Micro Framework. Il s’agit d’une série très technique, et très accès code, mise en application… Je vais donc maintenant essayer de vous présenter ce framework.

Qu’est ce que le .NET Micro Framework ?

Il s’agit d’une version très légère du .NET Framework que nous connaissons tous sur nos postes clients ou serveurs. Les différentes versions étant 1.1, 2.0, 3.0, 3.5. La version 3.5 SP1 pèse environ 230 Mo. Pour des machines très petites comme les systèmes embarqués (Bornes SNCF ou des voitures par exemple…) qui tournent sous Windows CE ou bien des téléphones mobiles qui tournent sous Windows Mobile, nous utilisons le .NET Compact Framework qui est beaucoup plus petit en taille et qui utilise moins de ressources, mais par conséquent, il ne contient pas toutes les classes disponibles dans le .NET Framework. A noter que pour les développeurs XNA pour Xbox 360, la console embarque un .NET Compact Framework, alors que la version PC de XNA utilise le .NET Framework.

Enfin, pour les machines encore plus petites avec des processeurs encore moins puissants, encore moins gourmands en énergie, nous utiliserons le .NET Micro Framework qui n’a pas besoin d’un système d’exploitation pour être utilisé. Celui-ci contient environ 70 classes pour 420 méthodes. Par exemple, sur la carte Tahoe-II, que Pierre Cauchois a eu la gentillesse de me prêter, DeviceSolutions a utilisé un processeur Meridian de chez Freescale. Le processeur MC9328MXS est un ARM 32 bits (Architecture à jeu d’instructions réduit) cadencé à 100 MHz, avec 4 Mo de mémoire Flash, 8 Mo de SDRAM). Ce .NET Micro Framework peut être utilisé pour des robots, des périphériques audio / vidéo, des systèmes embarqués, des GPS…

Comment développer pour le .NET Micro Framework ?

Vous avez besoin de Visual Studio 2008 (Express ou supérieure) pour développer pour le .NET Micro Framework. Vous pourrez développer en C#. Visual Studio vous permettra de débugger vos applications. Il vous faudra commencer par installer le SDK Micro Framework v3.0. Puis vous aurez le choix entre plusieurs types d’applications. Soit vous créez une application Console, soit vous créez une application Windows qui vous permettra d’afficher des contrôles WPF (nous verrons plus tard comment). L’autre type d’application est un émulateur. Les émulateurs servent à émuler une carte contrôleur telle que la Tahoe-II. En effet, vous n’aurez pas forcement une carte sous la main, et il est assez long de déployer et d’exécuter une application sur ce type de carte. Créer un émulateur (ou en utiliser un déjà existant) peut vous faire gagner beaucoup de temps lors de la phase de développement. L’un des prochain tutoriel que je suis en train de préparer est la création d’un émulateur en WPF (par défaut ils sont en Winform).

Quelques liens

Tags:

.NET Micro Framework – Afficher du texte à l’écran

by Fabien Lavocat 29. juillet 2009 08:00

.NET Micro Framework

Plutôt que de perdre du temps à réécrire un article qui existe déjà, je préfère vous fournir un article écrit par Julien Corioland sur son blog. Cet article vous présente le fonctionnement des polices d’écriture avec le .NET Micro Framework. L’utilisation est assez similaire au développement XNA (Développement de jeux vidéos sur Xbox 360, PC et Zune).

Je vous recommande donc cet article qui fait partie des tutoriaux de base de la programmation .NET Micro Framework.
A venir, un article sur les émulateurs, avec une petite idée de projet que m’a donné Pierre Cauchois.

Tags:

.NET Micro Framework – Interaction avec l’utilisateur

by Fabien Lavocat 27. juillet 2009 08:00

.NET Micro Framework

Dans le dernier article sur la Découverte du .NET Micro Framework, nous avons vu comment afficher une image à l’écran. Maintenant nous allons voir comment utiliser les boutons présents sur la carte électronique pour interagir avec le programme, et par exemple modifier l’image qui est affichée à l’écran.

Il va nous falloir référencer deux nouvelles bibliothèques, DeviceSolutions.SPOT.Hardware.TahoeII et Microsoft.SPOT.Hardware :

Références

Créons ensuite une méthode qui va nous afficher à l’écran, une image que l’on passera en paramètre :

   1:  /// <summary>
   2:  /// Dessiner l'image passée en paramètre
   3:  /// </summary>
   4:  /// <param name="img">Image à dessiner</param>
   5:  static void DrawImage(Bitmap img)
   6:  {
   7:      // Définition d'une image de la taille de l'écran
   8:      Bitmap screen = new Bitmap(SystemMetrics.ScreenWidth, SystemMetrics.ScreenHeight);
   9:   
  10:      // On dessine une image dans le buffer
  11:      screen.DrawImage(0, 0, img, 0, 0, SystemMetrics.ScreenWidth, SystemMetrics.ScreenHeight);
  12:      // Envoyer l'image à l'écran
  13:      screen.Flush();
  14:  }

Je créé ensuite des objets InterruptPort qui me permettrons de capter les clics sur les boutons de ma carte. C’est dans l’initialisation de ces objets que je vais spécifier quel bouton je vais surveiller. Sur ma carte TahoeII, SW6 correspond au bouton de gauche et SW8 au bouton de droite. Lorsque je clic sur un des boutons, l’événement OnInterrupt est déclenché.

   1:  public static void Main()
   2:  {
   3:      // TahoeII.Pins.SW6 => Bouton de gauche
   4:      InterruptPort left = new InterruptPort(TahoeII.Pins.SW6, false, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth);
   5:      // Abonnement à l'événement OnInterrupt pour savoir lorsque le bouton est appuyé
   6:      left.OnInterrupt += new NativeEventHandler(left_OnInterrupt);
   7:   
   8:      // TahoeII.Pins.SW8 => Bouton de droite
   9:      InterruptPort right = new InterruptPort(TahoeII.Pins.SW8, false, Port.ResistorMode.PullUp, Port.InterruptMode.InterruptEdgeBoth);
  10:      // Abonnement à l'événement OnInterrupt pour savoir lorsque le bouton est appuyé
  11:      right.OnInterrupt += new NativeEventHandler(right_OnInterrupt);
  12:   
  13:      // Pause infinie
  14:      Thread.Sleep(-1);
  15:  }

Il ne faut pas oublier la ligne 14 ci-dessus sinon le programme se terminera.

Voici les méthodes d’abonnement à mes événements :

   1:  static void left_OnInterrupt(uint data1, uint data2, TimeSpan time)
   2:  {
   3:      // Récupération des images stockées dans les resources du projet
   4:      Bitmap img = Resources.GetBitmap(Resources.BitmapResources.msdnL);
   5:   
   6:      // Dessin de l'image
   7:      DrawImage(img);
   8:  }
   9:   
  10:  static void right_OnInterrupt(uint data1, uint data2, TimeSpan time)
  11:  {
  12:      // Récupération des images stockées dans les resources du projet
  13:      Bitmap img = Resources.GetBitmap(Resources.BitmapResources.msdnE);
  14:   
  15:      // Dessin de l'image
  16:      DrawImage(img);
  17:  }

 

Lorsque je clic sur un bouton, je déclenche l’événement OnInterrupt qui appelle la méthode correspondante. Cette méthode appellera DrawImage qui affichera l’image sur l’écran.

Vous trouverez pour les prochains article, une vidéo qui montrera le résultat (si je n’oublie pas mon appareil photo, qui fait également caméra vidéo).

N’oubliez pas de visiter le blog de Pierre Cauchois et de Julien Corioland. Téléchargez la solution complète : SolutionMF2.zip (204,70 kb)

[Mise à jour] Ajout de la vidéo :

[silverlight:width=640,height=480,xapPlayer=MediaPlayerTemplate.xap,mediafile=.NETMicroFx.wmv]

Tags:

.NET Micro Framework

Découverte du .NET Micro Framework

by Fabien Lavocat 24. juillet 2009 08:00

.NET Micro Framework

Vous connaissez le .NET Framework dans ses différentes version (1, 1.1, 2.0, 3, 3.5, 4.0), vous connaissez le .NET Compact Framework qui est intégré dans différents périphériques tels que la Xbox 360 et qui permet de créer des jeux vidéos en XNA. Mais connaissez-vous le .NET Micro Framework ? Cette édition du Framework de Microsoft est encore plus petit que le .NET Compact Framework ce qui permet de l’intégrer sur des cartes électroniques.

Tout d’abord, je tiens à remercier Pierre Cauchois, responsable des relations techniques avec les développeurs sur les technologies embarquées et mobiles chez Microsoft France, qui m’a prêté une carte électronique Tahoe II de chez Device Solutions, dont voici une photo ci-dessous :

TahoeII-Large

Dans ce premier article de découverte, nous allons voir comment afficher des images sur l’écran LCD. Plus tard nous verrons comment utiliser les boutons présents sur la carte pour faire évoluer notre programme, donc finalement, avoir des interactions avec l’utilisateur.

Commencez par télécharger le .NET Micro Framework 3.0 sur Microsoft Download. Il vous faudra Visual Studio 2008 C# Express ou supérieure, et de préférence en version Anglaise sinon lisez le manuel pour le faire fonctionner sur une version française.

Ajoutons deux images dans les ressources de notre projet pour les afficher sur la carte :

Ressources

Puis il faut ajouter la référence vers Microsoft.SPOT.TinyCore afin de pouvoir utiliser la classe SystemMetrics qui nous servira à récupérer la taille de l’écran :

References

Venons en au code C# :

   1:  // Définition d'une image de la taille de l'écran
   2:  Bitmap screen = new Bitmap(SystemMetrics.ScreenWidth, SystemMetrics.ScreenHeight);
   3:   
   4:  // Récupération des images stockées dans les resources du projet
   5:  Bitmap imgA = Resources.GetBitmap(Resources.BitmapResources.msdnE);
   6:  Bitmap imgB = Resources.GetBitmap(Resources.BitmapResources.msdnL);
   7:   
   8:  // Flag
   9:  Boolean value = true;
  10:   
  11:  while (true)
  12:  {
  13:      // On va choisir une image en alternant entre imgA et imgB
  14:      Bitmap img = (value ? imgA : imgB);
  15:   
  16:      // On dessine une image dans le buffer
  17:      screen.DrawImage(0, 0, img, 0, 0, SystemMetrics.ScreenWidth, SystemMetrics.ScreenHeight);
  18:      // Envoyer l'image à l'écran
  19:      screen.Flush();
  20:   
  21:      // Pause de 2 secondes
  22:      Thread.Sleep(2000);
  23:      // Effacer l'écran
  24:      screen.Clear();
  25:   
  26:      // Flag pour changer d'image à chaque tour dans la boucle
  27:      value = !value;
  28:  }

Dans le prochain article, nous verrons comment changer d’image en utilisant les boutons de la carte.

Téléchargez la solution complète : DemoImages.zip (198,94 kb)

Consultez également le blog de Julien Corioland.

Tags:

.NET Micro Framework

A propos de l'auteur

Fabien Lavocat

Lavocat Fabien
Ingénieur Multimédia - TMM Communication



"Blog-Microsoft.fr is an independent blog and is not affiliated with, nor has it been authorized, sponsored, or otherwise approved by Microsoft Corporation."

Contactez-moi Send mail

MVP
Microsoft Most Valuable Professional
Client Application Development