Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Conflit ActiveX et .NET?

Bonjour,

 

Je développe un programme pour piloter un système de translation 3 axes THORLABS avec le controlleur BDC103 (http://www.thorlabs.de/NewGroupPage9.cfm?ObjectGroup_ID=3033), je communique avec le controlleur via leur logiciel APT par des ActiveX.

En parrallèle je fais l'acquisition de signaux à l'aide d'une carte d'acquisiton Data Translation, leur driver LV-Link (http://www.datatranslation.com/products/dataacquisition/software/lv-link.asp) sont en .NET.

 

Mon problème est lorsque j'envoie une commande pour déplacer une translation avec attente de la fin du mouvemement, l'acquisition s'arrête jusqu'à ce la commande soit terminé d'être executé.

J'ai la possibilité d'utiliser une commande sans attente de la fin du mouvement en utilisant un vi callback d'évènement mais ça risque de provoquer aussi une interruption de l'acquisition même très brève que ça ne se vera pas à la visualisation mais pour le traitement des données par la suite ça sera un problème.

 

Ci-joint un extrait du code simplifié qui pose problème.

 

Quelqu'un aurait il déjà eu le même genre de problème ou des infos?

Merci

Kant

 

0 Compliments
Message 1 sur 5
3 554 Visites

Bonjour,

 

Je ne pense que ce soit un problème d'incompatibilité.

J'ai eu le même problème avec une platine Thorlabs, en utilisant le bWait le noeud prend la main sur le programme, et le reste ne s'exécute pas. Je ne me rapelle plus exactement comment j'avais contourner le problème, mais je sais que je n'utilisais pas le wait.

Je crois que j'avais fait une boucle while qui lisait la position pour la comparer avec la position à ateindre. Ou sinon il doit y avoir une méthode qui donne le status du mouvement.

 

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
0 Compliments
Message 2 sur 5
3 530 Visites

La commande de l'axe et la lecture sur la carte d'acquisition sont dans 2 boucles en parallèles alors même si le bWait prend la main dans sa boucle, la 2éme ne devrait pas être affectée mais elle l'est.

En utilsant un enregistrement VI Callback événement, on peut agir dès la fin du mouvement.

 

Alors oui je peux utilser cette solution mais comment savoir si mon acquisition est stoppée un bref instant à chaque fois que j'envoies un ordre au controlleur?

 

J'aimerai bien comprendre ce qui se passe mais j'avoue ne rien y connaitre en ActiveX et .NET.

0 Compliments
Message 3 sur 5
3 528 Visites

C'est sur que le problème ne vient pas du .NET, je ne m'en suis jamais servit et pourtant j'avais observé ce comportement bizarre du wait, qui gelait toute l'application. Je ne m'y connait pas trop non plus en activeX, je n'avais pas eu le temps de m'y pencher vraiment, mais peut-être que Thorlabs pourrait vous donner des infos sur ce comportement et comment l'éviter.

Cordialement,

Simon D.
CLA | Certified LabVIEW Architect
CTA | Certified TestStand Architect
0 Compliments
Message 4 sur 5
3 526 Visites

Après un petit test, je confirmes vos dires le problème ne vient pas du .NET.

 

0 Compliments
Message 5 sur 5
3 523 Visites