LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

utilisation de CmtScheduleThreadPoolFunction

Bonjour,

 

Comment CVI gère des appels successifs à un même thread si celui-ci n'a pas le temps de se terminer entre 2 appels? Dans mon soft, je dois acquerir les data de 8 bancs identiques toutes les 500ms à partir d'un chassis PXI.

 

mon probleme est le temps consommé pour envoyer des commandes pour piloter 8 ventilateurs en Modbus (ie: un port COM permet de piloter les 8 ventilateurs, chaque ventilateur a une adresse differente), il faut attendre quelques dizaines de ms entre l'envoi des commandes sinon j'ai des erreurs de communication (j'utilise simplement des ComWrt() et ComRd()).

 

mon soft utilise un timer regle sur 500ms avec une boucle for pour acquerir sequentiellement les 8 postes. je pense utiliser la fonction CmtScheduleThreadPoolFunction(DEFAULT_THREAD_POOL_HANDLE, SetFanBridge, NULL, &FunctionId) pour ne pas perdre de temps à chaque iteration de ma boucle for où SetFanBridge sera une fonction callback pour piloter le ventilateur du poste correspondant. d'où ma question: y a t-il une erreur lors de l'execution du programme si on appelle la fonction callback " SetFanBridge" si celle-ci est en cours d'execution.

 

Merci,

 

JF

 

 

0 Kudos
Message 1 of 2
(3,442 Views)

Bonjour,

 

Le problème que vous pourrez rencontrer lors de l'appel successif de votre callback dépendra de la protection des données partagées entre les threads.

Dans votre cas, le fait de partager un unique port COM pour plusieurs communications risque d'engendrer certains soucis de ressources.

 

Vous trouverez dans les liens suivants beaucoup d'informations sur l'utilisation du multithreading avec LabWindows/CVI:

Multithreading in LabWindows™/CVI

Building Multithreading Applications with LabWindows/CVI

 

Cordialement,

Olivier L. | Certified LabVIEW Developer


Message 2 of 2
(3,397 Views)