le 02-18-2011 03:51 AM
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
le 02-18-2011 08:56 AM
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.
le 02-18-2011 09:15 AM
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.
le 02-18-2011 09:24 AM
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.
le 02-18-2011 10:10 AM
Après un petit test, je confirmes vos dires le problème ne vient pas du .NET.