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

Similar Messages

  • 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 KB

    La 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

  • 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-av​ec-un-callback-d-une-autre-fonctionappel-d-une/m-p​...

  • Appel d'une dll avec un callback d'une autre fonctionappel 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.

    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.

  • Formalisme Donnée pour appel d'une DLL

    Bonjour à tous,
    Je suis confronté à un problème dans le cadre de l'utilisation d'une DLL externe, je n'arrive pas à formaliser les données sous labview pour qu'elle soit correctement interprété par la dll via un noeud d'appel externe.
    Les informations fournies par les fichiers d'entête sont les suivantes :
    /** \brief Permet de lire et vérifier l'EEPROM BARTON HILL */
    EXPORT int EEPROM_BARTONHILL_CheckRead(FATHANDLE fatHandle, Read_EEPROM_BARTONHILL* data);
    /** \brief parametres de la lecture de l'EEPROM BARTON HILL */
    typedef struct
    char errorCode; /** \brief code erreur de la requete */
    char refFile[FILENAME_SIZE]; /** \brief Chemin et nom du fichier de reference */
    char maskFile[FILENAME_SIZE]; /** \brief Chemin et nom du fichier de mask */
    unsigned int testResult; /** \brief Nombre d'octet different de la reference */
    } Read_EEPROM_BARTONHILL;
    /** \brief Taille maximum en octets du chemin d'un fichier */
    #define FILENAME_SIZE 50
    Sous python, elles sont interprétées de la manière suivante :
    class Read_EEPROM_BARTON(Structure):
    _pack_ = 1
    _fields_ = [("errorCode", c_byte),
    ("refFile", c_char*50),
    ("maskFile", c_char*50),
    ("result", c_uint),
    J'arrive à faire fonctionner correctement cette bibliothèque sous Python, mais je n'arrive pas à mettre en forme correctement les chaines de caractères pour que labview les interprètes correctement. Il s'agit de lien relatif vers un fichier.
    Comment faire pour que labview interprète correctement les pointeurs inclus dans la structure, je pense avoir utiliser quasiment toutes les possibilités du noeud d'appel sans succès.
    Je vous remercie d'avance pour vos réponses.
    Cordialement,
    Michael.

    Bonjour Eric,
    Merci de ta réponse.
    Comme tu l'as signalé, j'ai bien réaliser l'appel à DLL avec un cluster, en configurant le noeud de méthode en "Adapter au type".
    A partir de là, j'ai tester de les configurations possibles (handle par valeur, pointeur sur les handles, .....), rien n'y fait la dll me retourne un code d'erreur me signalant que mes paramètres sont non valides.
    Quand tu parles de préallouer les chaines de caractères, tu signifies quoi ?
    Pour ma part, j'ai forcé la taille des chaines de caractères à 50 via deux méthodes (soit avec la fonction formater chaine qui force la taille de la chaine résultat à 50, soit en passant par un tableau de U8 redimensionner).
    Je pense que mon problème vient justement de la gestion des chaînes de caractères, mais je ne vois pas le problème dans ma gestion.
    Cordialement,
    Michael

  • Recupérer les valeur d'un Control via un .obj appelé depuis une DLL- Getting a Control value from an .obj file called from a dll

    Bonjour,
    Suite au passage à la version CVI 2013, il faut passer par un fichier .obj au lieu du .c quand on veut utiiser la LoadExternalModule.
    Le pb qui en résulte impossibilité de récupérer la valeur des control dans l'uir géré par le .obj qui est appelé par une dll.
    Autrement, il m'est impossible de faire parvenir à la dll les valeur des control ( dll qui appelle le .obj).
    Quelqu'un a eu le même soucis amigos?
    Merci
    Hi,
    When using the LoadExternalModule function in CVI 2013, we can no longer use a .c file. Instead we have to use an .obj file.
    My issue is that' impossible for me to get a control value from an .iur managed by the .obj witchi is called by a dll. 
    Otherwise it's impossible for me to get the control vale when calling the .obj from a dll.
    Any suggestions Amigos
    Thanks

    For people who could be interested in, here the code I provided to the customer. This code demonstrates that calling a function defined in a .obj file from a DLL which is called itself by a program can be realized without throwing any error.
    In order to use this example, you will have to :
    1) Open "main.cws"
    2) Define "Madll" as Active Project (right clic on the project and click on "Set Active Project")
    3) Build the DLL (CTRL+M)
    4) Define "Main" as Active Project
    5) Click on "Debug Project" in order to build the executable and run it
    This example has been built with CVI 2013.
    Jérémy C.
    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;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France
    Attachments:
    main.zip ‏70 KB

  • Appel à une fonction de préchargement

    Bonjour,
    J'ai créé une fonction afin de pouvoir l'appeler dans différents clips de mon animation. La fonction permet de charger une image tout en affichant la progression du chargement. Le problème c'est que l'appel à la fonction marche dans la 1re image de mon animation (endroit de son déclaration) mais pas dans un autre clip.
    voici mon code :
    function preloadimage(cible:MovieClip, xc:Number, yc:Number, id:Number)
         cible.attachMovie("zonepctxt","zonepctxt",cible.getNextHighestDepth()); //Clip contenant un texte dynamique (pct) pour afficher le chargement
         zonepctxt._x = xc;
         zonepctxt._y = yc;
         cible.createEmptyMovieClip("image",cible.getNextHighestDepth());
         image._x = xc;
         image._y = yc;
         image._alpha = 0;
         image.loadMovie("ref/" + id + ".jpg");
         cible.onEnterFrame = function()
              var bt:Number = image.getBytesTotal();
              var bl:Number = image.getBytesLoaded();
              var per:Number = ! bt ? 0 : Math.floor(bl/bt*100);
              zonepctxt.pct.text = "Chargement image : " + per + "%";
              if (per == 100)
                   zonepctxt.pct.text = "";
                   if (image._alpha < 100)
                        image._alpha += 10;
                   else
                        delete cible.onEnterFrame;
    preloadimage(this, 0, 200, 15); //fonctionne correctement dans la 1re image
    _root.preloadimage(this, 0, 200, 15);//ne fonctionne pas dans un clip

    Merci pour votre réponse.
    Je viens d'ajouter la ligne de code
         trace("fonction appelée")
    dans la fonction pour savoir s'il y a vraiment appel à la fonction.
    L'appel à la fonction a bien lieu en utilisant dans tout clip
         _root.preloadimage(this, -480, -70, 15);
    sans rien changer en la déclaration de la fonction.
    Ou en utilisant
         preloadimage(this, -480, -70, 15);
    mais en déclarant la fonction comme globale
         _global.preloadimage = function(cible:MovieClip, id:Number)
    C'est maintenant un problème d'affichage lié apparemment à la relativité des clips que je ne maîtrise pas

  • Fonction rechercher dans un tableau 1D

    Bonjour, actuellement je fais un snake et je désire donc pour mes colisions Utiliser la fonction rechercher dans un tableau 1D. Le souci c'est que elle ne balais que de l'indice 0 à 59 or moi j'en ai 400 minimum.
    Voyez vous une solution?
    Résolu !
    Accéder à la solution.
    Pièces jointes :
    Snake.zip ‏43 KB

    Bonjour,
    Je ne peux pas ouvrir ton code car je n'ai pas LV 2011.
    Je ne comprends pas bien d'où vient ta limitation de 59, es-tu sûr que ton tableau contient bien 400 elements?
    Je viens de faire un test avec 500 elements et il n'y a pas de limitation particulière avec cette fonction.
    En revanche, peut-être que tu cherches une donnée qui existe déjà à l'indice 59, du coup il te sort cette valeur car c'est le 1er indice pour lequel l'élément cherché a été trouvé.
    De plus, tu peux utiliser l'indice de départ pour décaler ta recherche, ainsi, si dans ta première recherche tu as trouvé l'indice 59, tu peux rappeler la fonction avec l'indice de départ à 60 et ainsi recommencer la recherche dans la suite du tableau.
    Cordialement,
    Olivier L. | Certified LabVIEW Developer

  • 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

  • Paramétrer une connexion 3G avec réseau VPN privé Fedelan de Cegetel

    Bonjour,
    Comme j'ai cherché un petit moment, je vous fais partager ma solution pour connecter mon Macbook à un réseau d'entreprise par l'intermédiaire d'une connexion 3G avec la clé SGR 3G+ en passant pas un réseau VPN privé fourni par Neuf Cegetel et qui s'appelle FEDELAN.
    J'ai trouvé la solution grâce aux techniciens de SFR et suite à une suggestion d'un forumeur.
    Bref, voici le détail :
    J'ai d'abord installé le Dashboard Vodafone version MAC pour ma clé SFR 3G+, qui est une Huawei E172.
    Le principal est de comprendre qu'il faut modifier manuellement le script de connexion 3G de la clé SFR. La manipulation indiquée est de modifier le script de modem "MMHS modem" dans Système/bibliothèque/modem scripts/
    J'ai donc dupliqué et renommé le script en "MMHS modem FEDELAN SFR", puis je l'ai ouvert par TexEdit et j'ai juste changé l'APN websfr par Fdl226 (une simple fonction rechercher-remplacer m'a suffit pour être sûr de ne rien oublier !)
    J'ai enregistré le fichier en le fermant.
    Puis j'ai paramétré une connexion par les préférences systèmes en choisissant les paramètres suivants :
    NOM = FEDELAN SFR
    n° tél : 99**1#
    Nom du compte : le login fourni par Cegetel, à savoir de type itri.1axxxxxxx#ACG1.itri.001
    Mot de passe : de type XXXXXXXX, fourni par Cegetel
    Dans les paramètres "Avancé...", j'ai choisi comme modem :
    Fabricant : autre
    Modèle : MMHS Modem FEDELAN SFR (qui correspond au script modifié)
    Puis j'ai rentré l'adresse IP de mon serveur, de type 192.168.xxx.xxx dans les onglets DNS et WINS.
    Enfin j'ai réglé l'onglet "Proxy" à "Configurer manuellement les serveurs proxys" et je n'ai rien touché à l'onglet "PPP".
    Enfin, j'ai paramétré le Vodafone Dashboard (Vodafone Mobile Connect) avec l'apn Fdl226 uniquement (dans les préférences / paramètres personnalisés).
    Attention, cette APN m'a été fourni par Neuf Cegetel, et il ne s'applique pas en cas de connexion standard. Il est bien spécifique pour constituer un VPN privé.
    Finalement, pour me connecter à mon réseau interne, je fais les 3 étapes suivantes :
    1. Je connecte la clé 3G SFR
    2. Je lance Vodafone Mobile Connect, et je clique sur "Activer".
    3. Par les préférences systèmes / réseau, je lance la connexion que j'ai paramétrée et que j'ai appelé FEDELAN SFR.
    Et çà marche.
    YES ! ! !
    J'espère que cela sera utile à d'autres.
    Ciao....

  • Intégrer une fonction Pause dans un Sous vi

    Bonjour à tous, 
    comme le titre l'indique, je dois, intégrer une fonction automatique et manuelle dans mon programme Labview. Le problème que je rencontre se situe dans la partie manuelle de mon programme.
    En effet, celle-ci doit permettre de réaliser une pause dans mon programme qui sert à générer une consigne de fréquence et d'amplitude variable dans le temps.
    La fonction pause doit  bloquer mon système actuel, c'est à dire stabiliser ma fréquence et mon amplitude mais continuer à envoyer ces même valeurs de manière à ce que mon système ne soit pas à l'arrêt mais juste en fonctionnement sur la même fréquence et la même amplitude qu'au moment ou j'ai appuyé sur le bouton pause !
    Une fois la pause désactivée, mon système repartira à partir des points auxquels nous nous sommes arretez pour continuer un cycle habituel.
    cordialement
    Pièces jointes :
    vib_generate sweep spectrum_ALLEZ RETOUR.vi ‏25 KB
    vib_find ref point.vi ‏12 KB
    vib_log ramp pattern.vi ‏15 KB

    Salut,
    Quelle est la boucle que tu cherches à mettre en pause en fait? c'est pas du tout clair ton histoire... (encore )
    En principe, pour ce faire, il faut que tu désactives l'indexation auto de ton tableau en entrée et que tu coup tu pilotes toi même l'indice du tableau à lire. En fonction de la pause, tu lit l'indice suivant ou le même à l'étape suivante.
    Illustré:
    PS: les messages privés ne sont pas faits pour ça, merci d'éviter de me solliciter par cette voie
    Francis M | Voir mon profil
    Certified LabVIEW Developer

  • Arret d'une fonction dans un onglet

    Bonjour a tous j'ai cree un onglet avec differentes pages qui seront des fonctions de mon application. L'un d'entre elle est une fonction continue qui va jouer un son en permanence. Je me suis aide de l'exemple trouve dans labview, mais je voudrais savoir comment faire pour sortir de cette lecture en permanence. Merci de votre aide.
    Pièces jointes :
    gen_ff.zip ‏328 KB

    Bonjour,
    Voici un petit exemple qui vous montre le principe.
    Lorsque l'on est sur l'onglet 2, on lance une boucle qui tourne à 500ms. Si on change d'onglet sur la face avant, cela vient arrêter la boucle, on rentre alors dans la condition de l'onglet sélectionné.
    Cordialement,
    Olivier L. | Certified LabVIEW Developer
    Pièces jointes :
    Stop boucle onglet.vi ‏11 KB

  • Dreamweaver 8 ne fonctionne plus avec mac OSX 10.7

    Comment faire quand dreamweaver 8 ne fonctionne plus avec lion 10.7
    merci

    Bonjour,
    À partir du système d’exploitation Mac OSX 10.7, l’émulateur d’applications PPC “Rosetta” qui vous permettait d’utiliser Dreamweaver 8 disparaît. L’application n’est donc plus reconnue…
    Vos options :
    - mettre à jour votre application en une version disposant des ressources pour une machine à processeur Intel.
    - réinstaller la version 10.6.X sur votre Mac.
    Vous trouverez à cette adresse la liste des applications compatibles avec Lion et les systèmes suivants.
    Cordialement,
    Alex Gulphe

  • Scanner EPSON Perfection 2450 photo ne fonctionne plus avec Mac OS X 10.6.8 depuis quelques jours. Pourquoi ?

    Scanner EPSON Perfection 2450 photo ne fonctionne plus avec Mac OS X 10.6.8 depuis quelques jours. Pourquoi ?
    Le scanner n'apparaît plus dans la liste des imprimantes, aucun des pilotes conseillés par Apple ne permet d'installer le scanner.
    Ce scanner fonctionne toujours sur mon mac portable qui n'est pas sous Mac OS X 10.6.8.
    Merci de m'aider

    Essayez ceci:
    Mettez le disque du système d'exploitation de l'ordinateur et redémarrez en maintenant enfoncée la touche C. Lorsque l'ordinateur démarre démarrer le processus d'installation. Ne vous inquiétez pas, vous ne allez pas à installer le système d'exploitation.
    Le premier écran demande une sélection de la langue. Sur l'écran après que vous verrez une barre de menu. Cliquez sur Utilitaires et sélectionnez Utilitaires de disque. Lorsque ce est ouvert, sélectionnez le disque dur sur la gauche, SOS, puis Réparer le disque.
    Lorsque la réparation de disque est terminée quittez Utilitaire de disque et redémarrez l'ordinateur.

  • Ecran blanc au demarrage de adobe premiere pro cs4 lorsque on clique sur une fonction

    Ce logiciel fonctionne sur mon ordinateur depuis 4 ans .actuellement j'ai un problème: au démarrage les fenêtres de travail apparaissent, mais dés que l'on veut importer ou sélectionner une fonction l'écran devient blanc et le logiciel ne répond plus.

    Nobody can tell you anything without proper system information and other details.
    Mylenium

Maybe you are looking for

  • How to get rid of the reference lines on the front panel

    I forgot how I created a couple of horizontal and vertical reference lines on the front panel. It looks like the origin lines on the front panel. When I move my program to another monitor with different resolution, all the layout is messed up because

  • Storing XML attribute

    I'm trying to store an XML attribute into a variable but the value of the variable is always null. I'm using the SAX parser and displaying the attribute is no problem. Here is the content of my xml file: <config>   <param name="saTerminalId" value="6

  • My Mid '12 MBA won't charge anymore!

    I don't know what the problem is or where it even lies, but as of this evening my MacBook Air (Mid 2012 model) simply will not charge. I've tried everything, from changing power sockets to thoroughly cleaning the MagSafe and restarting the laptop, wh

  • OSX 10.9.2 problems

    I have a Mac Mini with a Samsung monitor.  Sometimes when I start up, I get a full screen.  Most of the time I get a 1.5" black bar on both sides of the screen. This has been appearing since I upgraded my OSX to 10.9.2.  Also, some windows don't show

  • Scrolling and button help

    For scrolling, I don't know how to put the UI scroll bar for scrolling a movie clip. And for buttons, I need a script that can open a specific folder in a new window when I press on it.