Measurement Studio for VC++

cancel
Showing results for 
Search instead for 
Did you mean: 

daqmx howto stop trigger on timeout

Hello,

 

I've got a problem on a trigger.

 

When my signal doesn't arrive, the trigger doesn't occur. My task has also a time-out, so when the timeout arrives, I want to sto the task. But then in the "RemoveHandler" function an exception is raised. In fact I want to stop the trigger when

 

a timeout occurs.

 

 

Could you help me ?

 

Thanks.

0 Kudos
Message 1 of 3
(6,718 Views)

Bon ne voyant pas de réponse, j'essaie de préciser le pb :

 

* je fais une acquisition qui démarre sur triggerde la voie AI1

* la lecture se fait de manière asynchrone sur la voie AI1

* j'attends l'arrivée d'un evenement posté sur réception handler

 

m_P_O_toolBox->F_acquisitionTrigger

m_P_O_toolBox->startTension

 

* Attente fin de la mesure pedant 10s maxi

 

F_waitingForDataReadyTension (m_P_O_toolBox->F_getEventDataReadyTension(), (DWORD) 10000)

 

* Arret mesure

 

       F_stopperTrigger;


 

 

 

Tout va bien lorsque le signal de trigger arrive.

 

En revanche si le signal de trigger n'arrive pas, je sors en time-out dans la fonction "waitingForDataReadyTension"et lorsque je fais un arrêt de la tâche j'ai l'erreur -200284.

Après quelques recherches je pense que c'est parce que le trigger attends toujours le signal de déclenchement . Et apparemment on ne peut pas arrêter une tache quiest bloquée sur un trigger ...

 

Donc ma question est simple :

 

Comment faire pour stopper un trigger ?

 

j'ai un semblant de réponse avec le code suivant "F_stopperTrigger (true)":

 

 

* stopper la tache  CDaqmxTask

* stopper le trigger 

* relancer la tache

 

mais cela ne semble pas fonctionner , j'ai parfois toujours l'erreur -200284  ...

 

 

Quelqu'un a-t-il une idée car là je sèche depuis un bon moment.

 

 

Merci.

 

 

 je joins le code source des classes pour infos.

0 Kudos
Message 2 of 3
(6,694 Views)

Bonjour,

 

Selon moi, l'erreur que vous obtenez ici est normale. En effet voici l'explication de l'erreur :

 

 

L'erreur -200284 s'est produite à : un endroit inconnu Raisons possibles : Measurements: Certains des échantillons demandés, voire tous, n'ont pas encore été acquis. Afin d'attendre que les échantillons soient disponibles, augmentez le timeout de lecture ou effectuez la lecture plus tard dans le programme. Pour que de l'espace soit disponible plus tôt, augmentez la vitesse d'échantillonnage. Si votre tâche utilise un déclenchement de démarrage, assurez-vous que celui-ci est correctement configuré. Il est possible aussi que vous ayez configuré la tâche pour un cadencement externe et ce, sans fournir d'horloge. Dans ce cas, il vous suffit de fournir une horloge externe.

 

 Vous avez configuré votre tâche pour acquérir un certains nombre d'échantillons, et vous tentez de l'arrêter avant que celle-ci n'ait terminé ce pourquoi elle a été configurée.

 

Vous pouvez soit "gérer" cette erreur soit essayer la méthode suivante.

 

Ainsi, je vous conseil de procéder comme cela :

 

Abandonner la tâche courante en utilisant la fonction : int32 DAQmxTaskControl (TaskHandle taskHandle, int32 action); avec le paramètre "action" à DAQmx_Val_Task_Abort.

 

 

Supprimer la tâche : int32 DAQmxClearTask (TaskHandle taskHandle);

 

Cordialement,

0 Kudos
Message 3 of 3
(6,648 Views)