NI TestStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Comment utiliser des fonctions d'une DLL via le menu "TOOLS"

Bonjour,
j'utilise un module fieldpoint dans TestStand, pour lequel j'ai créé une DLL.En dépannage (donc sequence "PAUSED"),je souhaite utiliser mes commandes en chargeant un panneau UIR. Cela fonctionne bien tant le test n'est pas lancé. Mais quand il est lancé, le panneau n'est plus dans le même thread et j'ai une erreur "unknown source position" pour une fonction de la dll. (ça ne concerne pas le panneau,mais une fonction déclenchée par un contrôle).
MultiThreading ??

Merci pour toute aide
JMC
JMCe
0 Kudos
Message 1 of 7
(4,040 Views)
Bonjour JM,

Ce n'est pas tres clair quand tu as l'erreur. Est-ce que t'as deja fait que le DLL se lance via le menu "TOOLS"? Ou c'est ca aussi ta question?
Si c'est ca 1 de tes questions, tu dois creer une sequence qui lance le DLL. Apres fait ceci:
- Ouvre "Tools > Customize..."
- Fait Click en "Add" et selectione "Sequence" (dans "Item Type"), ton "Sequence File" et la sequence qui lance le DLL.
Et voila. Maintenant tu peux toujours lance ton DLL en via le Tools menu et en choisisant ta sequence.

Puisque tu dis que tu as une erreur, j'imagine que t'as deja reussi a lancer ton DLL via le Tools menu, n'est-ce pas? De le contraire, comment ou quand est-ce que tu as l'erreur?
Tu dis que cela fonctionne bien quand le test (la sequence) n'est pas en pause, n
'est-ce pas? Est-ce que ca veut dire que tu lance ton DLL via le tools menu, le panneau apparait et tu peux utiliser tous les controles sans aucun probleme?
Et quand la sequence est en pause, est-ce que le panneau apparait sans probleme? Et t'as l'erreur quand tu appuis sur un des controles? Qu'est-ce que la fonctionne qui donne l'erreur fait en relation a la sequence qui est en pause? Quelle logiciel tu utilises pour creer le DLL, LabWindows/CVI? Et finalement, est-ce que tu es en train d'utiliser la nouvelle version de TestStand (3.0)?

Carlos
National Instruments
0 Kudos
Message 2 of 7
(4,040 Views)
Bonjour Carlos,
La dll est compilée avec CVI6.0, et j'utilise TestStand 2.01
Les fonctions déclenchées par le panneau sont chargées dans le FileLoad.
l'ouverture du panneau fonctionne correctement, et comme tu l'as indiqué. Tout fonctionne bien quand aucune séquence n'est "running".
Ca ne marche plus quand, avec une séquence "PAUSED":
je reprends le menu "tools" pour lancer mon panneau,
il se charge bien, mais les fonctions utilisée dans la dll se plantent. (j'ai vu que le panneau est créé dans un autre thread que mes fonctions).
JMCe
0 Kudos
Message 3 of 7
(4,040 Views)
JM,

C'est sur que ta sequence "paused" est dans un thread different a celui utilise par une autre sequence lancee via le menu Tools. Par contre, ce que je comprends pas tres bien c'est ce que tu veux dire avec "Les fonctions déclenchées par le panneau sont chargées dans le FileLoad". Par FileLoad, j'imagine que tu veux dire le "SequenceFileLoad" callback.

Où est-ce que tu ajoutes ce callback, au "sequence file" que tu appelles via le menu "Tools" OU au "sequence file" où ta sequence "paused" se trouve?

En plus, qu'est-ce que tu as dans le "SequenceFileLoad" callback? Est-ce que tu as un "step" qui lance le meme DLL que celui lancé via le menu Tools? Sinon, comment tu fait pour "charger" les fonctions qui seront utilisés par le panneau du
DLL?

Carlos
0 Kudos
Message 4 of 7
(4,040 Views)
Carlos,
d'abord merci de me répondre en français, c'est trés sympathique.
Je vais essayer d'être clair :
J'utilise deux modules FieldPoint RS232, un pour des mesures, l'autre pour des relais. L'utilisation du FieldPoint avec CVI et TestStand est délicate car il n'y a qu'un serveur pour les deux, donc :

Une dll de commande des relais appelle des fonctions dans une autre dll commune aux deux FieldPoint qui elle même appelle les fonctions de base de la librairie CVI. L'initialisation des FieldPoints se fait dans le SequenceFileLoad de la sequence principale.(c'est là qu'on retrouve tous les "Tags" à créer).
La fonction qui charge le panneau de commande se trouve dans le même fichier dll que l'initialisation du FieldPoint.
-> je lance cet
te fonction du menu Tools sans sequence running : ça marche (le thread est le même)
-> je lance cette fonction dans un step de type action, je lance la sequence : ça marche !! (le thread est le même)
-> je mets la sequence en "Pause",je lance à partir du menu tools : ça plante (Fatal error:unknown source position :(le thread est différent).

La fonction qui plante est une des fonction de la librairie CVI "FP_Read".
J'ai essayé de charger le panneau dans l'initialisation mais c'est pareil.

Est-ce plus clair ?
Merci
JMC
JMCe
0 Kudos
Message 5 of 7
(4,040 Views)
J'ajoute un zip pour essai avec des modules FieldPoint:
Charger le workspace "DebugMenuTools.cws" puis le projet "DebugMenuTools.prj"
JMCe
0 Kudos
Message 6 of 7
(4,040 Views)
Bonjour à tous,
mon problème n'est toujours pas résolu.
Si quelqu'un a une idée, merci de me répondre.

In other words :
Hi, if somebody is interested by this problem, thanks for your response.
JMC
JMCe
0 Kudos
Message 7 of 7
(4,040 Views)