Articles Tagués ‘producteur’

Bonjour,

Dans ce nouvel article je vais vous présenter un modèle de conception simple et courant pour l’acquisition de données. Grâce à cet article les débutants pourront créer des applications plus efficaces, plus simple, et plus robustes sans se creuser la tête…

Le principe est simple, si je dois faire de l’acquisition de données, mais que je veux traiter ou afficher ces données en différé ou à un cadencement plus lent, soit par ce que l’acquisition est trop rapide pour l’oeuil humain, ou trop gourmande pour l’IHM en terme de ressources PC, il est intéressant d’utiliser une architecture en producteur/consommateur. Pour cela on utilise deux threads en parallèle (deux boucles while), une appelée « producteur » elle produit les données et les empile dans une file d’attente (voir articles précédents) et l’autre boucle appelée « consommateur » dépile les éléments pour les afficher ou les traiter etc…

Dans l’exemple ci-dessous, l’architecture est divisée en 6 sections:

1-Créer une file d’attente (pour y placer nos données)

2-Dans le producteur:Créer des données (ici un nombre aléatoire, mais typiquement on placera une tâche DAQmx)

3-Dans le producteur: On empile la donnée dans la file d’attente

4-Dans le consommateur: on dépile une donnée et on l’affiche (on peut rajouter un code de traitement, d’enregistrement, etc..)

5-On détruit la file d’attente

6-Dans le consommateur: on a câblé le fils d’erreur à la condition d’arrêt, cette technique assez classique mérite une petite explication, quand la boucle productrice est arrêtée, la file d’attente est détruite, donc quand il n’y a plus d’éléments à dépiler dans le consommateur, la fonction va retourner une erreur, et c’est cette erreur qui arrête la boucle consommatrice. notez que si vous ne souhaitez pas arreter votre programme sur erreur il est possible de mettre en œuvre des solutions plus ou moins complexes.

Bon code à tous!

PS: je pense faire un prochain article sur l’acquisition de données car c’est très utilisé et souvent assez laborieusement par les débutants, et comme le but de ce blog est de les aider…

Publicités