Calculs & affichages / Matplotlib /
Interactions PC → Graphiques

Modifications depuis le PC appliquées en direct


Avant-propos

Étudiez ou révisez Numpy : nombreux cours et tutos sur internet.

Debug

 


Description

But de ce tuto


Plan du tuto
  1. Préparation.
  2. Principe de fonctionnement.
  3. Le watcher.
  4. La méthode watch().
  5. La méthode update_figure() : live-update du titre de la fenêtre.
  6. Les objets (instances) d'affichage.
  7. L'objet Calcul.
  8. La méthode update_figure() : update des calculs.
  9. Affichage des courbes.
  10. La méthode update_figure() : live-update de l'affichage.

1 - Préparation :

 

 


2 - Principe de fonctionnement :

Retour au plan


3 - Le watcher :

Retour au plan


4 - La méthode watch()

Retour au plan

  1. Vérification :
    • Nous commençons par vérifier le code ci-dessus, à savoir si cette méthode watch() est bien appelée lorsqu'un fichier du dossier /backups/Signaux/node0 est modifié, créé ou supprimé.
      ShowMatPlotLib.watch() :
          def watch(self, l_files=None):
              if l_files is None:
                  self.ut.watch_file([self.final_path] + self.l_watched, self.watch)  # Rafraîchissement de la surveillance.
              else:
                  print('Watch', l_files)
      

       

    • Lancer le poste de contrôle, comme d'habitude : main.py > Run.
    • Lancer l'afficheur, ne pas utiliser le bouton Voir, mais depuis Pycharm, lancer un deuxième process : show_matplotlib.py > Run.
    • Placer les 2 fenêtres côte à côte à l'écran.
    • Pycharm présente 2 onglets, en bas dans la console Run, vérifier que show_matplotlib est sélectionné, afin de voir les messages du print().
    • Depuis le poste de contrôle, apporter des modifications aux paramètres des 2 nodes et à l'infrastructure.
    • Observer les messages dans la console Run de Pycharm.

  2. Lecture des fichiers .pkl modifiés.
    • Pour chaque fichier .pkl modifié, le dictionnaire qu'il contient est converti en super-dictionnaire puis ajouté à une liste.
    • Compléter le code précédent en retirant le print() de vérification et en ajoutant ce code.
      La méthode ShowMatPlotLib.watch() devient :
          def watch(self, l_files=None):
              """ 1er passage lors de l'initialisation. Passages suivants lors de modifications de fichiers '.pkl'. """
              l_files = self.l_watched if l_files is None else l_files
              if len(l_files) < 2:
                  """ Les fichiers .pkl ont été supprimés, l_files ne contient plus que le chemin du dossier.
                  Ceci se produit lors de modifications de l'infrastructure : edges ou nodes supprimés, ajoutés, etc. """
                  l_files = self.l_watched
      
                  """ Lorsque des fichiers surveillés on été supprimes, ils ne sont plus surveillés lorsqu'ils sont recréés.
                  D'où la nécessité de rafraîchier la surveillance. """
                  self.ut.watch_file([self.final_path] + self.l_watched, self.watch)  # Rafraîchissement de la surveillance.
      
              self.lod_calc = list()   # lod_calc = Liste des modèles de calcul (od = ordered dic) affectés à ce node.
              for file in l_files:
                  """ Paramètres de calcul des graphiques et de leur fenêtre. """
                  if os.path.basename(file)[:5] + file[-4:] == 'calc_.pkl':
                      """ Paramètres de calculs. """
                      try:
                          with open(file, 'rb') as pk:
                              self.lod_calc.append(Dictionary(pickle.load(pk)))
                      except (Exception,) as e:
                          """ Entrée devenue inactive => Le fichier pkl a été supprimé. """
                          pass
              """ La méthode self.update_figure() est chargée des mises à jour des calculs et des affichages. """
              if self.lod_calc != self.lod_calc_ante:
                  self.lod_calc_ante = self.ut.deepcopy(self.lod_calc)
                  self.update_figure()
      

       

    • Oui mais ... comme expliqué ci-dessus au point 2 - Principe de fonctionnement, cette méthode watch() délègue la mise à jour des calculs et des affichages à la méthode update_figure() (en dernière ligne).
      Celle-ci n'existe pas, créons-la.

5 - La méthode update_figure() : live-update du titre de la fenêtre.

Retour au plan


6 - Les objets d'affichage :

Retour au plan

 


7 - L'objet Calcul :

Retour au plan

Importer CtrlCalcul et numpy (alias np).

 


8 - La méthode update_figure() : update des calculs.

Retour au plan

 


9 - Affichage des courbes.

Retour au plan

 


10 - La méthode update_figure() : live update de l'affichage.

Retour au plan

 


Vérification

  • Cliquer sur le bouton Voir du poste de contrôle :



Si le lancement a lieu depuis le PC, Mode local n'apparaît plus dans le titre.
 

  • Modifier divers paramètres des nodes depuis le poste contrôle, observer les updates (modifications en direct).

Snippets

Essayez de résoudre cette fonctionnalité par vous-même.
Consultez les réponses (snippets) seulement si vous n'avez pas trop de temps.

Bonjour les codeurs !