.NET Micro Framework – Interaction avec l’utilisateur

by Fabien Lavocat 26. July 2009 23: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 23. July 2009 23: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

About

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