Enum fonction dll
Bonjour a tous,
Je souhaiterais pouvoir recuperer la liste des fonctions accessibles d'une DLL (en l'occurence faite en CVI) dynamiquement.
Malgré toutes mes recherches sur le forum et sur le net, je n'ai pas trouvé de solution
Je suis parti de l'exemple fourni que ni.com http://www.ni.com/example/31151/en/
SimpleDLL.dll à une fonction : int ShowMyNumberAndString (int number, char* string)
ce que je voudrais c'est pouvoir recuperer le nom de cette fonction (les parametres seraient un plus) par code (en utilsant cvi)
je pensais qu'en utilisant la fonction EnumResourceNames mais non, cela ne fonctionne pas
Si quelqu'un a une idée je suis preneur
merci
cordialement
Bonjour,
Dans un premier temps, est-ce un appel implicite ou explicite à votre DLL ?
Si c'est un appel explicite, il faudra sûrement faire appel à la Win32 API, car il n'y a pas de fonction disponible de ce type dans CVI
Bien cordialement,
Jérôme Henrion | NIF - Application Engineer | PXI Captain
Certified LabVIEW Developer
Similar Messages
-
Appel d'une fonction Dll avec un tableau de long en parametre
Je dois communiquer sous labview avec un DLL comportant de fonction importante definie ainsi
long DLLCALL DLL_Read( long Array[]);
long DLLCALL DLL_WRITE( long Array[]);
ces deux fonction prennent en parametre un tableau de 30 long. ...
je ne sais comment configurer sous labview l'appelt à ces deux fonctions?
quelqu'un peu m'aider (en français S.V.P)Bonjour,
Pour passer un tableau de données de type long d'une DLL sous LabVIEW, vous devez configurer le noeud d'appel "Appeler une fonction d'une DLL" de la manière suivante:
* function name = FuncName
* parameter = arg1
* type = array
* data type = signed 32-bit integer
Le prorotype équivalent est: void FuncName (long *arg1).
Vous trouverez de nombreuses informations sur l'intégration des DLLs dans LabVIEW au lien ci-dessous:
* Integrating DLLs
http://zone.ni.com/devzone/devzone.nsf/webcategories/E2A99E7E10D5725D862567AC004F0A53
Bonne continuation.
Matthieu Gourssies
National Instruments France -
Lire la valeur retournée par une fonction (DLL) dans Pass/Fail test
Bonjour,
comme le titre l'indique je charche à tester une fonction en l'appelant d'une DLL (en C) en utilisant le Pass/Fail test. La fonction retourne la somme entre deux entier x et y.
Quel sont les étapes à suivre et surtout comment je peux récupérer la valeur retournée et faire un teste sur elle!!
Que dois-je écrire dans la rubrique "Data Source"...
Vous trouvez ci-joint une idée de ce que j'ai fait..
merci pour votre réponse
Pièces jointes :
PassFail.JPG 94 KBLa question n'est pas très claire...
Disons que si le but est de vérifier si la valeur est entre certaines bornes ex: 10<x<15 ou x<20 par exemple, alors il faut utiliser un "numericlimit test"
Pour réutiliser une valeur (variable) dans TestStand, le plus simple est de l'assigner à une variable locale dans TestStand. (Même méthode qu'en haut mais remplacer l'expression par Locals.MaVariable )
Rodéric L
Certified LabVIEW Architect -
Bonjour.
J'ai une carte d"acquisition vidéo dont je souhaite réaliser les
drivers sous labview. Une DLL est fournie avec le manuel SDK
d'utilisation.
Mais je coince à ce niveau :
Register Draw callback function: RegisterDrawFun()
API:
int RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun), LONG nUser)
Parameters:
DWORD nport Channel Index
DRAWFUN(DrawFun) callback function
LONG nUser user data
Callback function explanation:
void CALLBACK DrawFun(LONG nPort,HDC hDc,LONG nUser)
nPort channel number
hDc devide context of offscreen surface is similar to the DC of display window
nUser user data
Return Values:
If the function succeeds, the return value is 0.
Remarks:
When the video is previewed with offcreen mode, the
application call this function to get the device context of offscreen
surface so that the application can draw lines, strings, rectangles on
the surface of video.
C'est le callback de la fonction "drawfun" que je ne sais pas mettre
en oeuvre. Et dans quelle DLL de windows ce trouve cette fonction car
elle n'est pas dans la DLL fournie.
Pourriez vous aussi me dire , comment obtient t'on le "handle" d'une
valeur contenu dans un indicateur pour le donner en argument d'un appel à
une DLL.
Merci d'avance pour votre aide.
Cordialement,
MH.Salut,
Tu dois utiliser un "Call Library Function Node". Je ne saurais comment traduire en francais.
Ca se situe a l'interieur des fonctions de connectivite sous libraries et executables.
Lorsque tu installes le "Call Library Function Node" sur ton diagramme, tu dois par-apres le configurer.
Tu cliques (2x) sur l'icone et tu choisi la fonction dll auquel tu veux envoyer des valeurs. Une fois choisi, tu peux joindre les parametres. -
Paramètrer les fonctions d'un fichier dll.
bonjour
j'essai d'appeler un dll avec call library function node, j'ai besoin uniquement de faire une interface sur labview pour afficher des résultats acquis par une autre application. le problème se pose au niveau du paramètrage des fonctions du fichier dll, est-il possible de paramètrer uniquement les fonctions qui vont m'afficher les résultats souhaités ou il faut paramèter toutes les fonctions du fichier dll.
merciBonjour,
Je crois avoir repondu a votre question ici:
appel d'une fonction dll avec labview
regards,
Cyril Bouton
Active LabVIEW Developper -
Apple drivers for MS Windows (from BootCamp Bdon't work with Windows XP Pro
Hello,
I'm trying to run MS Windows XP Pro under Parallels on a Mac OS X
(I also trying to run GNU/Linux Ubuntu)
I want to fix some problems with keyboard... (not the good characters)
I have download BootCamp and burn a Apple CD Driver
Unfortunately I get the following message when I trying to install
them on MS Windows under Parallels
Numéro d'erreur : 0x80040707
Description : Echec de l'appel de la fonction DLL :
DASupport.WMIGetComputerModel
L'assistant d'installation va maintenant se terminer.
which means something like
Error number : 0x80040707
Description : faillure when calling DLL function
DASupport.WMIGetComputerModel
Installation will abord now
Regards
PS :
see also
https://launchpad.net/bugs/48632
about GNU/Linux Ubuntu problems with Apple MacBookPost your question in the Boot Camp discussions: http://discussions.apple.com/forum.jspa?forumID=1165 or
-
Bonjour,
je réalise un programme de test sous teststand 2 et CVI7.1 qui permet de:
- piloter un alimentation
- dialoguer avec un boitier CAN
- lire et ecrire des fichiers excel.
J'ai écrit les fonctions dll sous cvi pour la gestion de l'alimentation, du dialogue CAN et des fichiers excel. Le programme tesstand réalise le sequencement et l'appel des fonctions ecrites sous cvi sous forme de dll. Cependant, auprès quelques bonnes executions, une erreur apparait sur les composantes active X (soit erreur -17502 ou -17702) et l'execution s'arrête. Tesstand est alors bloqué et un message me demande de redemarrer l'application. A quoi est du cette erreur et comment la corriger?
Florence DELAUNEY
SAFIR ETUDES
[email protected]Hi,
This link maybe of help
http://digital.ni.com/public.nsf/allkb/901B5E1C33A102A18625671C007C501F
Regards
Ray Farmer
Regards
Ray Farmer -
TestStand pointeur en valeur retournée
Bonjour,
je dois utiliser une fonction dll standard, qui renvoie une chaine de caratctères : Prototype C : char * version();
Vu qu'il n'y a pas de possibilité de récupérer un pointeur dans une valeur retournée, comment peut-on récupérer la texte dans un appel de fonction TestStand ?
Merci pour votre aide.
Jean-Marie.
JMCe
Solved!
Go to Solution.TestStand does not currently support string return values because TestStand doesn't know how to deallocate the memory associated with the string. If you must call a function in a standard DLL that returns a string, you have a couple of options. Each of them requires you to write your own DLL.
1. Write a wrapper function in a DLL that calls the string function. Your wrapper DLL must link to the standard DLL. For example,
void VersionWrapper(char returnValue[], int bufferLength)
char *versionString = version();
if (versionString != NULL)
strncpy(returnValue, versionString, bufferLength);
// You must deallocate versionString here if necessary.
2. Call the string function in TestStand manually specifying the return value as an integer. Write a conversion function in a DLL that converts the integer to a char pointer. For example,
void ConvertIntToString(int returnValueFromTestStand, char returnValue[], int bufferLength)
const char *returnValueString = (const char *)returnValueFromTestStand;
if (returnValueString != NULL)
strncpy(returnValue, returnValueString , bufferLength);
// You must deallocate returnValueString here if necessary.
Note: If the string function in the standard DLL is exported with a C++ decorated name, the function will not appear in the function list in TestStand and you cannot use option 2. -
Bonjour,
Je souhaite appeler une fonction coder en c++. Pour celà, j'utilise une dll générer avec Visual C++ 6 et j'utilise labview 8.0.
Je me sert du manuel suivant http://www.ni.com/pdf/manuals/370109b.pdf .
Dans la partie
Preventing C++ Name Decoration
je n'ai pas compris comment comment éditer la partit "extern c"Bonjour
Je ne comprend pas bien le problème.
Avez vous des difficultés pour la création ou l'appel de la dll?
Kamal
NI France -
Erreur 6 à l'exécution de plusieurs fonctions de la DLL "nicaiu.dll" DAQmx
Bonjour,
Une application sous VB6 a été développée afin d'utiliser la carte DAQmx (DAQ6250) via la dll "nicaiu.dll".
L'exécution des fonctions pas à pas s’effectue correctement.
Le problème intervient lors de l'exécution d'une traite.
par exemple:
a: Call DAQmxErrChk(DAQmxCreateTask("", Task))
b: Line = DEVICE & "/ai" & Channel
c: Call DAQmxErrChk(DAQmxCreateAIVoltageChan(Task, Line "", DAQmx_Val_RSE, -10, 10, DAQmx_Val_Volts, ""))
Une erreur 6 (dépassement de capacité) intervient systématiquement à l'exécution de la ligne suivant
La fonction "DAQmxCreateTask" soit sur la ligne b dans l'exemple ci-dessus.
Merci de votre aide
RDBonjour,
L'erreur 6 correspond dans Visual Basic 6.0 à un dépassement de tableau ou "overflow". Si l'erreur se produit à la ligne b de votre exemple, c'est sans doute que le résultat de la concaténation est trop grand pour être rangé dans la variable "Line".
Vérifiez que la variable "Line" n'est pas déclarée comme chaîne de caractère de longueur fixe (Dim Line As String * ). Vérifiez également le contenu de la variable "channel" lorsque l'erreur se produit. Vous pouvez également tester votre exemple en affectant un nom de voie de manière statique.
Quoiqu'il en soit, d'après les informations que vous me communiquez, l'erreur n'est pas liée aux pilotes NI-DAQ. Vous pouvez vous en assurer en récupérant le code d'erreur retourné par les fonctions DAQmx.
Sincères salutations. -
Problème fonction externe DLL lors du lancement d'un executable
Bonjour à tous,
J'ai créé un installeur qui génére mon application sous forme d'éxécutable. L'installeur et l'éxécutable fonctionne parfaitement sur certains PC. Par contre sur d'autres PC lors du lancement de l'application j'ai le message d'erreur suivant qui apparaît :
À noter que c'est le même installeur et le même éxécutable qui sont utilisés. La DLL est bien présente. Je n'ai pas accès aux fonctions de la DLL donc je ne sais pas comment elles sont rédigés.
Quelqu'un a-t-il déjà rencontré ce problème? Il faut que je puisse faire fonctionner cette application sur tout nos PC.Bonjour,
Il semblerait que ton application ne trouve pas la DLL. Pourrais tu donner quelques détails supplémentaires qui pourraient avoir leurs importance en comparant les cas qui fonctionnent et ceux qui ne fonctionne pas. Donc si tu peux les configs qui marchent avec au moins les points suivants et les configs qui ne fonctionnent pas.
- Système d'exploitation : Windows 7, Windows 8 ...?
- Version 32 ou 64 bits de Windows ?
- Origine de la DLL ? Installé avec ton exe ? driver a installer sur le PC ?...
- Emplacement de la DLL. A côté de ton EXE ? ailleurs
- Emplacement de ton exe : dossier spécifique, programs files ?
- Les droits d'accès du compte utilisé sur le PC .
Je demande ces différents points car sur ta capture, tu sembles utiliser Windows 8. Avec les Dll, les chemins et les droits d'accès ont leurs importance et suivant les versions de Windows, ca change pas mal.
Dans tous les cas, tiens bon et ne te recogne pas la tête contre ton écran, on va trouver une solution
.mesLeft{float:left} .mesInfo{border-left:solid 1px #989898;font-size:x-small;color:#989898} .mesLogo{float:right;opacity:0.18} .mesLogo:hover{opacity:0.9}
Maxime R.
CLD - Certified LabVIEW Developer / Développeur LabVIEW Certifié
CLAD - Certified LabVIEW Associate Developer -
Comment créer une dll sous labview avec plusieurs fonctions venant du même VI et possédant un tabcontrol ?
Bonjour,
L’utilisation d’une « commande d’onglet », ou « tabcontrol », ne pose pas de problème pour la définition d’une DLL à partir d’un VI.
Selon la version de LabVIEW que vous utilisez, le processus de création de DLL sera différent.
Si vous utilisez une version antérieure à la v8, vous pouvez vous reporter à ce lien : Construire une DLL avec LabVIEW 7.0.
Sinon, vous devez enregistrer votre VI dans un projet, puis définir le connecteur de votre VI avec les paramètres d’entrées/sorties (cette opération est indépendante des différentes « commandes d’onglet » que vous avez pu implémenter).
Sélectionnez, dans le projet les « spécifications de construction » dans le projet (via un click droit), pour créer une DLL. Dans la boite de dialogue qui s’ouvre alors, à l’onglet « fichiers source », vous pouvez ajouter votre VI parmi les « VIs exportés » et configurer, en fonction des E/S câblées sur le connecteur de votre VI, les fonctions contenues dans la DLL.
J’espère que ces quelques éléments auront pu vous éclairer.
Cordialement,
Guillaume H.
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
>> NIDays 2011, le mardi 8 février au CNIT de Paris La Défense -
Generer un dll qui contient plusieur fonction dans un seul VI avec labview
Bonjours
est ce qu'il ya une possibiliter de cree un seul VI qui contient plusieur fonction et l'integrer dans un seul Dll avec labview
best regardsBonjour
Merci Eric pour votre reponce ,mais peut être je n'ai pas bien expliqué
la solution que je connais est que :
je développe une seul fonction voulût dans un vi propre à elle
si j'ai besoin de plusieurs fonction je doit développé plusieurs VI
enfin j'intègre tous les vi dans un seul dll
ma demande est : est ce que au lieu de développé beaucoup des VI , il y a une solution de rassemblé tous les fonctions dans un seul -
Appel d'une dll avec un callback d'une autre fonction
Bonjour.
J'ai une carte d"acquisition vidéo dont je souhaite réaliser les drivers sous labview. Une DLL est fournie avec le manuel SDK d'utilisation.
Mais je coince à ce niveau :
Register Draw callback function: RegisterDrawFun()
API:
int RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun), LONG nUser)
Parameters:
DWORD nport Channel Index
DRAWFUN(DrawFun) callback function
LONG nUser user data
Callback function explanation:
void CALLBACK DrawFun(LONG nPort,HDC hDc,LONG nUser)
nPort channel number
hDc devide context of offscreen surface is similar to the DC of display window
nUser user data
Return Values:
If the function succeeds, the return value is 0.
Remarks:
When the video is previewed with offcreen mode, the application call this function to get the device context of offscreen surface so that the application can draw lines, strings, rectangles on the surface of video.
C'est le callback de la fonction "drawfun" que je ne sais pas mettre en oeuvre. Et dans quelle DLL de windows ce trouve cette fonction car elle n'est pas dans la DLL fournie.
Pourriez vous aussi me dire , comment obtient t'on le "handle" d'une valeur contenu dans un indicateur pour le donner en argument d'un appel à une DLL.
Merci d'avance pour votre aide.
Cordialement,
MH.Dupliqué >> http://forums.ni.com/t5/LabVIEW/appel-d-une-dll-avec-un-callback-d-une-autre-fonctionappel-d-une/m-p...
-
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
JMCeCarlos,
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
Maybe you are looking for
-
Time Machine spends hours partially backing up and then fails with "Time Machine couldn't complete the backup due to a network problem." I've tried various suggestions I've seen on the forum but nothing has worked. TIme Machine worked fine for the
-
Out of Sync Audio after capturing video
I have a video that I captured that the audio is in sync during the capture by using audo preview but, when view it in the view window, the words are out of sync from her lips. The video was recorded on my sony pd150, 48k audio, and Im using prostudi
-
Resultset in the same order as saved in the database
Hi Folks! I'm having some trouble with an old development, because for some really strange reason, the same select statement i'm getting the same records but in different order from time to time randomly. For example in day 1 i can get: 1 Text1 2 Tex
-
I had been using CS-2 but when I upgraded to Win 7 my trouble started. CS 2 kept saying " not responding) I assumed it was compatibility.I purchased CS 5 and now have same problem. In addition when I choose " file" I get a grayed out all chopped up
-
Hi; I have a customer who has a test site with one ACE doing load balancing for a small farm ( 8 servers). Recently the customer moved his servers to to VMware. The customer claims that since that change, the ACE is causing for large delays. His cla