Re: .Net Core 3.0 (C#,F#, Visual basic .Net)
Posté : mer. 11 déc. 2019 15:51
Pour l’exemple d‘utilisation du GPIO, on va faire un grand classique à savoir, faire clignoter une led. On ne va pas la faire clignoter pour rien, on va dire que son clignotement indique que l’application est bien démarrée et qu’elle tourne. Pour ça, je vais créer un service que je vais inclure dans l’application (si si, on peut …) et je ne vais bien sûr pas utiliser un abominable pool while comme on le voit dans des millions de tuto qui font ça, mais utiliser un timer asynchrone exclusivement dédié à ce service.
Comme ici tout est objet, le service est aussi un objet, donc première chose à faire, créer une nouvelle class que l’on appellera par exemple AppRunning.cs
Clik droit sur le projet (MyApp)->Ajouter->Classes … et dans le champ Nom : on replace Class.cs par AppRunning.cs puis on clique sur le bouton Ajouter. Le fichier est maintenant dans l’explorateur de solution et on l’ouvre en double cliquant dessus.
Dans un premier temps je ne vais pas utiliser de led mais me contenter de logger l’état d’un boolean dans la console. Pour ça, je vais permettre à mon service de logger, ce qui me permettra de savoir quand il démarre ce qu’il fait et quand il s’arrête. En plus ce service va utiliser un timer et une pin du GPIO, il faut donc que je puisse libérer proprement ces ressources si je décidais de disposer du service ou tout simplement quand l’application s’arrêtera. Voila donc le code que je mets dans la classe AppRunning.cs (1). Bon si vous le tapez à la main, vous aller vite vous rendre compte que VS écrit la moitié du code tout seul juste en cliquant sur les bons choix proposés en temps réel par l’IntelliSense. Ensuite, il ne reste plus qu’à ajouter le service dans le conteneur d’injection prévu a cet effet (ConfigureServices dans le fichier Startup.cs) (2).
Démarrez l’application (MyApp) depuis l’IDE. On accède toujours à la page hello world, dans la console on a bien l’indication que le service a démarré (AppRunning Service Started). Toutes les seconde on à l’état changeant du booléen qui prouve bien que le service tourne. Faite maintenant un ctrl+c dans la console, l’application s’arrête et on a bien l’indication que le service s’est arrêté (AppRunning Service Stopped) et que le timer a bien été libérer (Timer Dispose).
Dans le post suivant, je remplacerais le logger par un contrôleur GPIO et j’attacherai une pin au booléen _etat.
Ps : Pour avoir de l’aide sur un mot clé que vous ne comprenez pas, sélectionnez le dans l’éditeur de code et faite F1. Dans la plus grande majorité des cas, ça vous ouvrira une page qui pointe sur la doc.
Comme ici tout est objet, le service est aussi un objet, donc première chose à faire, créer une nouvelle class que l’on appellera par exemple AppRunning.cs
Clik droit sur le projet (MyApp)->Ajouter->Classes … et dans le champ Nom : on replace Class.cs par AppRunning.cs puis on clique sur le bouton Ajouter. Le fichier est maintenant dans l’explorateur de solution et on l’ouvre en double cliquant dessus.
Dans un premier temps je ne vais pas utiliser de led mais me contenter de logger l’état d’un boolean dans la console. Pour ça, je vais permettre à mon service de logger, ce qui me permettra de savoir quand il démarre ce qu’il fait et quand il s’arrête. En plus ce service va utiliser un timer et une pin du GPIO, il faut donc que je puisse libérer proprement ces ressources si je décidais de disposer du service ou tout simplement quand l’application s’arrêtera. Voila donc le code que je mets dans la classe AppRunning.cs (1). Bon si vous le tapez à la main, vous aller vite vous rendre compte que VS écrit la moitié du code tout seul juste en cliquant sur les bons choix proposés en temps réel par l’IntelliSense. Ensuite, il ne reste plus qu’à ajouter le service dans le conteneur d’injection prévu a cet effet (ConfigureServices dans le fichier Startup.cs) (2).
Démarrez l’application (MyApp) depuis l’IDE. On accède toujours à la page hello world, dans la console on a bien l’indication que le service a démarré (AppRunning Service Started). Toutes les seconde on à l’état changeant du booléen qui prouve bien que le service tourne. Faite maintenant un ctrl+c dans la console, l’application s’arrête et on a bien l’indication que le service s’est arrêté (AppRunning Service Stopped) et que le timer a bien été libérer (Timer Dispose).
Dans le post suivant, je remplacerais le logger par un contrôleur GPIO et j’attacherai une pin au booléen _etat.
Ps : Pour avoir de l’aide sur un mot clé que vous ne comprenez pas, sélectionnez le dans l’éditeur de code et faite F1. Dans la plus grande majorité des cas, ça vous ouvrira une page qui pointe sur la doc.