Possibilité de passage d'une structure C d'une dll appelée dans Labview

Bonjour, 
J'aimerais savoir s'il existe un moyen de passer une structure (type de donnée en C) au
travers de la  boîte de dialogue : "Appeler une fonction d'une
DLL" pour l'utiliser dans Labview (idéalement sauver directement dans un
cluster).
A ce jour j'utilise des pointeurs sur les paramètres individuels pour passer les
données traitées par ma DLL. 
Exemple : void  Message(uint32_t *arg1, double *arg2, int32_t arg3)
En vous remerciant d'avance,
Meilleures salutations.

Bonjour,
En effet, il existe un moyen de passer un cluster dans une DLL en utilisant le type de données "Adapt to Type".
Il existe une knowledgeBase sur le site de National Instruments expliquant la procédure à suivre.
How Do I Use Adapt To Type For Call Library Function Nodes?
Salutations,
Laurent P.
Application Engineer
National Instruments

Similar Messages

  • Paaser un booleen à une DLL créer sous labview

    J'ai créé une dll à partir d'un VI. Pendant la création je précise bien une variable booleenne que j'utilise. Mais au moment d'utiliser cette dll avec labview il me propose un  signed 8. J'aimerais savoir comment faire passer directement mon booleen à la dll sans etre obligé d'adapter la variable...
    j'ai éfféctué beaucoup de recherche sur le forum, si vous avez  une solution merci de me faire signe

    Bonjour,
    Afin de pouvoir plus facilement vous aider, je vais avoir besoin de vos informations afin de mieux cerner le problème.
    Pouvez-vous m’indiquer quelle est la version de LabVIEW que vous utilisez ?
    Vous est il possible, également, de préciser par quel moyen vous communiquez entre le PC d’où vous exécutez le code LabVIEW et le banc de test (bus GPIB, port USB + compact DAQ, autre…) ?
    Le VI d’origine dont vous souhaitez extraire des informations fonctionne t il bien avec le banc de mesure ?
    Dans le nouveau VI que vous créez, contenant vos DLL, est ce que les protocoles habituels de communication sont bien définis (gestion des tâches, si besoin, ouverture et fermeture des  communications avec le banc…) ?
    Pourriez vous m’envoyer, par exemple, le VI sur lequel vous travaillez ou un exemple de code reproduisant le problème (par exemple un sous VI contenant votre DLL) ?
    Je vous remercie par avance pour votre réponse.
    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

  • Liaison d'une structure entre CVI et TestStand pour une DLL

    Bonjour,
    Je vous écris car en se moment je fais un ajout d'instrument sur un driver en passant par une DLL. Pour le nouvel appareil, il me faut modifier un projet existant. Ce qui me pose porblème c'est que dans le projet il y a une structure qui est passé en paramètre de fonctions usuelles et j'aimerais pouvoir ajouter dans cette structure de nouveau élément. Car quand je code dans la structure les nouvelles composantes et que je modifie, la structure déjà existant dans la séquence TestStand lié à l'ancien code, je n'arrive pas à transmettre les valeurs de TestStand à mon code. Alors que les anciens composants de la structure prennent bien leurs valeurs. J'ai bien essayé de recréer sous TestStand un nouveau type de structure sans partir de l'existant, hélas le résultat à été le même.
    Il est fort possible que j'ai oublié une manipulation n'étant pas encore totalement bien familiariser avec l'environnement de CVI et de TestStand.
    Merci de l'effort de lecture. En attendant une réponse à mon problème, je reste disponible pour plus de détails

    Rodéric -- En ce qui concerne la structure, j'y ai pensé et du coup la première chose que j'ai fait c'est en recréer une nouvelle. en ce qui concerne le menu déroulant, je t'ai pris un imprimé. On voit bien ma structure dans les choixs mais quand je la séléectionne on se retrouve dans le cas du premier screenshot.
    Eric -- Pour le Header, je le recompile en même temps que mon projet et j'arrive ensuite à voir mon paramètre lors d'une implantation de celle-ci depuis ma structure. concrètement j'ai du mal à percevoir le "reconstruire la DLL en prenant en considérant la nouvelle structure". Si tu pouvais un peu plus m'éclairer sur ce point, s'il te plait.
    Pièces jointes :
    MenuDeroulant.JPG ‏19 KB
    PieceOfCode.JPG ‏18 KB

  • 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

  • [Labwindows/CVI] Integration d'une DLL VC++

    Bonjour à tous,
    J'ai une DLL VC++ avec le .h et le .lib et je n'arrive pas à l'integrer correctement dans un projet CVI.
    dans le .h j'ai une fonction declaré comme suite
    GET_TX(const int FreqMhz, double& resultsevm);
    Labwindows n'accepte pas le passage par reference (double&) donc j'ai modifier la declaration comme suite à fin de l'integrer
    GET_TX(const int FreqMhz, double *resultsevm);
    c'est vrai que j'ai pas d'erreur de compilation suite a cette modif, mais il me semble que la valeur resultsevm retourné par la DLL pas correcte (valeur tres grand % au valeur attendu ) !!!
    Pouvez-vous m'expliquer comment faire pour integrer la dll correctement ?
    si non comment loader la dll dynamiquement ?
    merci d'avance

    Bonjour Tanite, et bienvenue sur le forum de discussins de National Instruments.
    Voici deux documents qui pourraient éventuellement vous aider à utiliser votre DLL dans votre projet CVI :
    1. Creating Import Libraries for a DLL in LabWindows/CVI
    2. FAQ: Using Dynamic Link Libraries with LabWindows/CVI
    Cordialement,
    Vincent.O
    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;}
    Été de LabVIEW 2014
    12 présentations en ligne, du 30 juin au 18 juillet

  • Passer un tableau à une dll labview

    Bonjour
    J'ai créé une dll labview avec une methode qui sert à passer un tableau de double.
    Quand je passe mon tableau , j'ai une erreur memoire insufissante et ça ne fonctionne pas. je joints mon code et le projet de la dll
    la methode : labview dll_tableau
    le client de test pour la dll : test dll.vi
    question annexe : comment fait on pour débugger une dll en labview?
    Merci
    Attachments:
    test.zip ‏808 KB

    Bonjour,
    J'ai essayé de faire fonctionner votre programme. En appelant le programme test dll.vi j'obtiens bien une erreur de mémoire insuffisante. En revanche je ne comprends pas l'intérêt de la structure séquence, ni celui des différentes étapes. En n'utilisant uniquement l'étape n°2, cette erreur de mémoire n'intervient plus. Je n'ai pas été plus loin dans les tests. Aussi, à quoi de servent les différentes étapes de cette structure?
    Bonne journée,
    M-Junior

  • Parametre envoyé à une DLL Labview

    Bonjour
    J'ai créé une DLL sous Labview (5 Vi + 1 Global). Cette DLL ouvre un port de commication série (fixé à 1 pour l'instant).
    Cette DLL est appelée par un programme tiers (BATEMC).
    Elle est implantée sur plusieurs PCs différents sur lesquels le port Com à utiliser est différent.
    Je voudrai passer en paramètre le N ° de port Com (1,2,3...) ou son nom (Com1,Com2, Com3...).
    Pouvez vous m'expliquer comment reccupérer cette valeur ?
    Merci d'avance pour votre contribution.
    PS: Je suis débutant sous Labview

    La ressource VISA à spécifier est polymorphe, et peut notamment être indiquée par une chaine de caractère. Après, on peut facilement étendre ça à d'autres possibilités avec les fonctions de formatage de chaines de caractères. Par exemple ici, l'option 3 montre qu'avec un type énum (ou entier!) on peut obtenir la chaine qui sera utilisée pour ouvrir une session VISA.
    (Attention, il faut que la commande soit connectée au connecteur du VI et il faut l'exporter au moment de la création de la DLL pour que cela devienne un paramètre de fonction dans l'environnement d'appel).
    Cdt,
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • VI containing Event Structure will not receive front panel events in LabVIEW Real-Time.

    Hi again, I'm working in my first UI (attached VI).
    It works when running directly from PC. It doesn't when running from cRIO, there's the message "VI containing Event Structure will not receive front panel events in LabVIEW Real-Time". I've been reading and I found that "Event structures on RT targets do not support events associated with user interface objects, such as VI panels or controls. For example, associating the Value Change event with a control does not work. RT targets support only user events".
    Is that the problem? If it is, how can I create Mouse Up, Mouse Enter, Value Change (or other user interface events) user events?
    If I run my VI in FPGA mode should it run?
    Attachments:
    HMI.vi ‏33 KB

    Since it looks like you are new to the whole RT and machine control, I recommend giving this a good read: NI LabVIEW for CompactRIO Developer's Guide
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Je veux re-telecharger le Mountain Lion MAIS... Une erreur est survenue dans l'App Store. Veuillez réessayer ultérieurement. (100), que faire...?

    Je veux re-telecharger le Mountain Lion MAIS voila je recois une erruer
    Une erreur est survenue dans l'App Store. Veuillez réessayer ultérieurement. (100), que faire...?
    (par contre aucun probleme sur mon Imac ou MacBookPro)

    Bonjour ...
    Essayez ici >  Mac App Store: "Une erreur s'est produite inconnu (100): lors de l'achat
    Si cela ne vous aide pas, essayez ce qui suit:
    Ouvrez les Préférences Système> Sécurité et confidentialité> Général
    Cliquez sur le coin inférieur gauche de l'icône de verrouillage du panneau. Vous pouvez être invité à entrer votre mot de passe admin.
    Sélectionnez: Mac App Store et les développeurs identifiés
    Cliquez sur l'icône de verrouillage pour empêcher d'autres changements puis essayez l'App Store.Ouvrez les Préférences Système> Sécurité et confidentialité> Général
    Cliquez sur le coin inférieur gauche de l'icône de verrouillage du panneau. Vous pouvez être invité à entrer votre mot de passe admin.
    Sélectionnez: Mac App Store et les développeurs identifiés
    Cliquez sur l'icône de verrouillage pour empêcher d'autres changements puis essayez l'App Store.
    S'il vous plaît garder avec moi. J'utilise un traducteur pour essayer de vous aider.

  • Une erreur est survenue dans l'app store

    Bonjour,
    Il m'est impossible d'acheter la moindre application payante dans app store. Après avoir creer un compte, dans un premier temps la transaction bancaire fut refusée, j'ai vérifié la justesse de mes coordonnées bancaire sans résultat. Puis maintenant le message suivant s'affiche  il nous est impossible d'acceder à votre demande une erreur est survenue dans app store veuillez réessayer ultérieurement (100) Je dois préciser qu'il m'est par contre possible de télécharger une application gratuite ???
    merci d'avance pour votre aide

    Bonjour ...
    Essayez ici >  Mac App Store: "Une erreur s'est produite inconnu (100): lors de l'achat
    Si cela ne vous aide pas, essayez ce qui suit:
    Ouvrez les Préférences Système> Sécurité et confidentialité> Général
    Cliquez sur le coin inférieur gauche de l'icône de verrouillage du panneau. Vous pouvez être invité à entrer votre mot de passe admin.
    Sélectionnez: Mac App Store et les développeurs identifiés
    Cliquez sur l'icône de verrouillage pour empêcher d'autres changements puis essayez l'App Store.Ouvrez les Préférences Système> Sécurité et confidentialité> Général
    Cliquez sur le coin inférieur gauche de l'icône de verrouillage du panneau. Vous pouvez être invité à entrer votre mot de passe admin.
    Sélectionnez: Mac App Store et les développeurs identifiés
    Cliquez sur l'icône de verrouillage pour empêcher d'autres changements puis essayez l'App Store.
    S'il vous plaît garder avec moi. J'utilise un traducteur pour essayer de vous aider.

  • Intégration d'une DLL générée sur Simulink dans un algorithme Labview, à finalité app temps réel sur NI myRIO

    Bonjour à tous,
    En deux mots : dans le cadre d'un projet interfacultés, je dois intégrer à mon algorithme Labview l'exécution d'un algorithme d'optimisation actuellement codé sur Simulink d'un tiers. La finalité de mon algorithme est de générer une app temps réel que j'exécute sur le matériel embarqué, NI myRIO.
    J'ai pu lire que justement il était possible d'intéragir entre Labview et Simulink, via le fait que Simulink permet de générer une DLL, et Labview de la lire/exécuter.
    Mes questions sont :
    Est-ce tout-à-fait envisageable dans mon optique d'app temps réel sur myRIO ? (Par exemple, l'exécution de la DLL pourra-t-elle se faire en parallèle du reste mon algorithme Labview (autres acquisitions de données, etc))
    Quid du toolkit NI Labview model interface ? Est-il indispensable de l'acquérir (et si oui pourquoi) ?
    Je sais qu'il est possible de réécrirer directement sur Labview des algorithmes d'optimisation (ici, du MPC), mais ce serait à priori la dernière option envisagée.

    Bonjour,
    Le MIT est la seule option non-obsolète pour exécuter des modèles Simulink dans LabVIEW. Et si tant est que vous utilisez MIT 2014 (avec LabVIEW 2014), vous pourrez exécuter votre modèle Simulink sur le myRIO.
    Les bases pour que tout fonctionne se trouvent ici :
    - http://digital.ni.com/public.nsf/allkb/E552B0CD4E48215586257DF7005BE055?OpenDocument
    Cordialement,
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • Comment attaquer une DLL sous labview

    bonjour,
    pour le cadere d'un projet je cherche à savoir s'il est possible d'attaquer directement une DLL sous LABVIEW
    cordialement

    Merci mehdi pour la traduction: "Appeler une fonction d'une DLL"

  • Comment créer une dll sous labview avec plusieurs fonctions venant du même VI et possédant un tabcontrol ?

    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

  • 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​...

Maybe you are looking for

  • Ntlm authenticated apps fails after 3.1.1 upgrade

    I upgraded my apex instance to 3.1.1 on Friday without any issues. I can log into application builder without any problems and the version 3.1.1.00.09. Everything in app builder works as expected. However, when I try to run my NTLM authenticated appl

  • Admin problem activating Firevault in User a/c

    Have activated FireVault in my Admin a/c & in one user a/c, no problems. However in the last a/c  , my partners its refusing to acknowledge my admin password which is valid. There's is plenty of HD space available. Any Suggestons? There's is nothing

  • Is there someone can tell the status of my thinkpad T401 ?

    I bought a thinkpad T401 in April 2011. But It had 3 problems in 3 month(fan, battery and Video) Last weekend, I received a box from Lenovo and I packed my laptop then sent it back. But now, I don't know the status of my laptop. I`m a PhD student all

  • How to execute a unix/dos command in Java

    Hi, I want to execute dos/unix commands in my java program. Can anyone tell me how to do this. Say I want to restart my httpd daemon using the command: "service httpd restart" or test my httpd.conf file using the command "testparn" thanks in advance

  • Premiere Pro CS6 crashes whenever I go near Project Settings

    Hi all I am using an official trial version of Premiere Pro CS6 as part of Creative Cloud. I am editing on my MacBook Pro 17" (newest model) with h.264 footage recorded on my Canon 550D. Everything works fine, imports and edits like a dream. However,