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

Similar Messages

  • 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

  • Appeler une dll qui est referencé à une autre dll

    Bonjour tout le monde.
    J'ai besoin de votre aide pour résoudre mon problème :
    En effet je dispose d' un laminoir qui est piloté par un programme de VB6 référencé a une dll de "MX du fabricant de moteur" J'ai créé une dll sous vb édition express 2008 pour récupérer ce programme et et j ai reussi à appeler cette cette dll par vb.net pour controler mes moteurs mais pour appeler cette dll par labview 7.0 j 'obtiens l'erreur 1172 qui me dit qu'il y a un pb d instance lié à la dll de MX component.
    Ce que j arrive pas a comprendre c est k j ai utiliser labview pour appeler une dll.net référencé a une dll.net et ça marche. Mais pas une dll.net référencé a une dll de MX composent

    Bonjour,
    Merci d'avoir posté votre question sur le forum de National Instruments.
    Pourvez-vous m'envoyer votre code?
    Brice S.
    National Instruments France

  • Creer interface avec lien vers d'autres VI s'ouvrant dans une autre face avant

    Je crée un TP pour des élèves et je souhaiterais créer une face avant permettant aux élèves d'accéder à tous les VI dont ils auront besoin, un par étape, comme créer une icone qui nous mène comme un lien hypertexte à une autre face avant. Comment puis-je faire?
    De même, est-il possible de configurer le VI pour qu'il s'ouvre en mode Execution sans s'exécuter, pour que les élèves puissent utiliser le VI sans le modifier?
    Merci d'avance

    Bonjour,
    alors pour aller au plus simple :
    Il suffit d'aller dans les propriété du VI pour chaque sous vis, et dans la catégorie "windows appearance", sélectioner "Custom" puis sélectionner les options suivantes pour chaque sous-vis :
    "Show front panel when called"
    Cela aura pour effet de dégriser l'option suivante :
    "close afterward if originaly closed"
    à cocher également
    Cette opération est à effectuer pour chaque sous-vis dont la face avant devra être vue.
    Ensuite pour éviter des modifications des sous-vis, le plus simple sera de décocher la case "show abort button" ce qui aura pour effet d'obliger à fermer le sous-vi par un bouton "stop" placé sur la face avant, et donc, avec la case "close afterward if originaly closed" cochée, le sous vi sera ferm
    é et l'accès au source ne pourra s'effectuer qu'à partir du vi principal arrêté.
    Mais le plus simple à mon avis, est d'aller dans la catégorie "security" dans les propriété du VI et de sélectionner "password locked".
    Voilà, j'espère avoir répondu correctement à la question, bonne chance!
    Best regards,
    G Liagre

  • Quelle ligne de code pour faire un lien vers une autre page .html générée par edge

    Bonjour,
    J'aimerai savoir quelle ligne de code ecrire pour faire un lien vers une autre page .html générée par edge.
    J'ai essayé avec <a href="... mais ede indique toujours une erreure dans le code...
    Merci par avance

    Bonjour,
    Merci pour cette réponse. Mais il ne sagit pas d'un lien vers un site vers d'autres pages du projet qui sont en local. je les ai aussi crées avec edge.
    Pour le moment je n'y connais rien en programation, donc je suis un blocqué pour les lier les unes aux autres.

  • Transfert de de mise en forme et de calcul d'une feuille ` une autre

    bonjour,
    j'ai une entite avec plusieurs dossiers,
    j'ai effectui des calculs,des mises en forme,
    sur un dossier, je souhaite que toute cette
    mise en forme et ces calculs puissent s'appliquer ` une autre feuille, comment
    proceder
    Merci

    bonjour vous pouvez utiliser par exemple des fichiers de type lvm, très simple à utiliser pour sauvegarder des waveforms.
    Use text-based measurement files (.lvm) to save data that the Write To Measurement File Express VI generates. The text-based measurement file is a tab-delimited text file you can open with a spreadsheet application or a text-editing application. In addition to the data an Express VI generates, the .lvm file includes header information about the data, such as the date and time the data was generated.
    Use the Read From Measurement File Express VI to read data from a .lvm file.
    The .lvm file uses commas as a delimiter between numbers. To convert data in a .lvm file from a string to a number, specify the decimal separator as a period, using the localization code format specifier.
    Refer to the NI Developer Zone for more information about .lvm files.
    http://forums.ni.com/t5/Discussions-de-produit-de-NI/enregistrer-donn%C3%A9-waveform/m-p/1773986#M43...
    Luc Desruelle | Voir mon profil | LabVIEW Code & blog
    Co-auteur livre LabVIEW : Programmation et applications
    CLA : Certified LabVIEW Architect / Certifié Architecte LabVIEW
    CLD : Certified LabVIEW Developer / Certifié Développeur LabVIEW

  • Signal reseau toujours faible voir indisponible alors que avec meme carte SIM dans autre telephone , signal maxi. Que faire ?

    ou que je me trouve, sur mon iphone 3GS j'ai toujours un probleme de force signal reseau alors que avec meme carte SIM dans autre telephone , signal maxi. Que faire ?
    apparement depuis que ce telephone a ete dessimloque de chez orange depuis orange.fr et par itunes.

    Bonjour
    je viens d'acheter un iphone 5S et je rencontre les mêmes problèmes de faiblesse de signal pourtant signal max avec la même puce sur d'autre téléphone.
    As tu trouvé une solution?

  • Coller une page directement en dessous d'une autre

    Bonjour,
    Je souhaiterais coller une page directement en dessous d'une autre, de manière à ce que mes pages ne soient pas séparées mais forment un bloc unique à la verticale et non côte à côte. Cela me permettrait de réaliser un travail tout en continuité de haut en bas.
    Merci pour votre réponse.
    Cordialement.

    Impossible. Mais pourquoi vouloir faire ceci ? Dans ce cas, autant créer un document monopage au bon format… Ou alors, tu crées tes pages les unes à côté des autres, et tu utilises la fonction « affichage avec rotation de la planche » du menu d'options du panneau pages.

  • Faire transiter les données d'une BGM à une autre (GMF)

    Bonjour !
    J'essaie de bâtir un pogramme sur la base du Gestionnaire de Messages dans une File d'Attente qui est dans les exmples Labview...
    N'ayant jamais utilisé cette architecture, j'ai un peu de mal à efectuer certaines choses...
    Mon problème principal est le suivant :
    J'ai 4 boucles. J'aimerais -par exemple- recevoir les données d'un capteur dans l'une d'elle, qu'une autre gère l'affichage de ces données sur la face avant, et qu'une autre s'occupe d'enregistrer ces données dans un tableur.
    Comment puis-je faire passer ces données d'une boucle à l'autre ?
    J'aimerais éviter les variables locales et les noeuds de propriétés, l'idéal serait que je puisse réduire mes boucles en sous-VIs...
    Dans l'exemple il est dit : "Si la BGM doit accéder aux données, créez une définition de type qui représente ces données."
    Cete def. est cablée sur un registre à décalage... Sauf que j'imagine que si plusieurs boucles doivent accéder aux même données ça ne peut pas fonctionner, le cluster n'est pas mis à jour d'une boucle à l'autre, non ?

    Bonjour !
    Donc tu me conseilles de recréer une file d'attente qui gèrerait seulement les données du capteur... ?
    En fait c'est ce que j'utilisais déjà dans mon précédent programme, mais je m'embrouille un peu les pinceaux avec les files d'attentes de messages, les variants tout ça... 
    Mais ça semble tomber sous le sens en fait, maintenant que je me relis.
    Merci ! 

  • J'ai telechatger ios 7 serait-il possible de revenir avec ios6 car j'ai des fonction qui ne marche plus et sa prend trop de place

    bonjour , serait-il possible de revenir a ios6 car telecharger le 7 mais il prend trop de place memoire

    Salut,
    Alors y'a quelques trucs bizarre avec ce post...
    As-tu une réelle base de connaissance dans le développement de système d'exploitations ?
    Déjà; Linux est un kernel. Si tu veux créer une distribution; ce sera plutôt une GNU/Linux.
    Ensuite; j'ai pas trop compris le rapport avec ton culte; quel qu'il soit; et ce post. (Attention whore?) - Idem pour le proverbe; ça dégage pas une image très "IT" tout ça.
    Tu veux "mélanger plusieurs distribution GNU/Linux entre elles" à ce que j'ai cru comprendre.
    Tu te rends compte que le résultat doit être (implicitement) ignoble et dégueulasse?
    On n'utilise tout simplement pas une distro pour gérer le shell, une autre pour UN de ses outil (utilise l'outil, tout simplement), etc...
    Bon voila; après tu fais ce que tu veux mais as-tu pensé à tout simplement développer un navigateur web qui bannirait des mots-clés liés à la pornographie.
    Au pire tu te fais une distro grâce à Linux from Scratch et voila.
    Sinon; y'a pleins de browser libres. Et si tu veux avoir une meilleur applications sur tout le shell, tu peux coder une application qui tournerait en fond et bloquerais tout contenu pornographique.
    Bon après; faut bien tomber sur du porno un jour, mais c'est toi qui vois.
    Ah sinon, en tant que Panthéiste, j'aime pas trop les poissons d'Avril sur le Panthéisme (t'as vu l'utilité de l'information ?)
    Flaco
    Last edited by Flaco (2013-09-29 21:30:52)

  • I can't access iPhoto because of this message (sorry, it is in French) : "Votre bibliothèque est utilisée par une autre application ou est devenue illisible"

    Here is messaqge : "I can't access iPhoto because of this message (sorry, it is in French) : "Votre bibliothèque est utilisée par une autre application ou est devenue illisible"".
    I am on a iMac 27"with OS X Lion.
    The problem appeared while I was doing an import from an USB hard disk and an electric shutdown happened... The iMac and everything started well after but ipohoto.

    OK, when you find the solution please post it, it may help others in the future. BTW there are some other simple resets you can do, first is restart in Safe Mode, this will clear some caches. It's possibe one has become corrupt. Next would be to do SMC and PRAM resets, the instructions for both are:
    SMC RESET
    Shut down the computer.
    Unplug the computer's power cord and all peripherals.
    Press and hold the power button for 5 seconds.
    Release the power button.
    Attach the computers power cable.
    Press the power button to turn on the computer.
    PRAM RESET
    Shut down the computer.
    Locate the following keys on the keyboard: Command, Option, P, and R. You will need to hold these keys down simultaneously in step 4.
    Turn on the computer.
    Press and hold the Command-Option-P-R keys. You must press this key combination before the gray screen appears.
    Hold the keys down until the computer restarts and you hear the startup sound for the second time.
    Release the keys.

  • Entrée analogique triggée par une autre entrée analogique

    Bonjour,
    Je cherche à effectuer une lecture sur voie analogie triggée grâce au signal reçu sur une autre voie analogique.
    Pour faire simple, une première voie lit une entrée ana, et reçoit des pics de 5V.
    J'aimerais utiliser la détection de ces pics pour lancer la seconde lecture sur une autre voie analogique.
    J'ai regardé les exemples et les posts du forum, mais je ne trouve que le cas d'un trigger ext.
    De plus je ne comprends pas ce que je dois utiliser comme "source" pour cabler le vi de déclanchement.
    Faut-il obligatoirement utiliser le vi déclanchement (qui me semble surtout déstiné à un déclanchement ext.)?
    Merci
    Teka
    Labview 8.2 version étudiante
    Sound & Vibration Toolkit

    Bonjour,
    Ma carte ne possède pas d'entrée de trigger, et j'ai déjà étudier tout les exemples de trigger disponibles, mais rien ne m'aide réellement. J'ai donc opté pour une solution de substitution qui consiste à lire les signaux simultanéement grace à une lecture sur voie multiple et en indexant un tableau juste à la suite.
    Et j'active l'affichage des donnée qui me sont utiles que lorsque les signaux de "flag" sont actifs.
    Ce n'est pas autant propre que de réaliser un vrai déclanchement sur front montant à partir d'une voie physique mais c'est fonctionnel.
    J'ai également regardé le vi déclanchement software mais ça ne m'a pas aidé.
    Je laisse le poste encore un peu ouvert au cas ou quelqu'un puisse m'indiquer si il existe une solution.
    cordialement,
    teka
    Labview 8.2 version étudiante
    Sound & Vibration Toolkit

  • Bonjour, je souhaite activer les liens du menu de mon site internet et je ne trouve aucun moyen de l'effectuer, sachant que les vidéos en anglais nous montre une autre version de muse, du moins celle d'un autre pays et non la version française permettant

    Bonjour, je souhaite activer les liens du menu de mon site internet et je ne trouve aucun moyen de l'effectuer, sachant que les vidéos en anglais nous montre une autre version de muse, du moins celle d'un autre pays et non la version française permettant l'usage du même outil

    Personne n'a une quelconque piste ??
    Please help !

Maybe you are looking for

  • Mac freezes on wake up!

    Hi all, I have a new 24 inch iMac, running 10.5.3 and lately it seems to wake up, sometimes of its own accord, and the mouse and all applications are frozen......this has occurred on about 4/5 occasions now. I do a force shutdown, which I don't like

  • How to check CSI validity

    how to check CSI validity

  • How does one Rewire Reason 4 into Logic Express 7.3?

    I've been trying to help a friend do this over the phone. I used to have Reason 3 and never had a problem with it, but when I have my man boot up Reason 4 after Logic Express, it does not go into slave mode. I don't know why, or how to tell him what

  • 2d graphics in JLayeredPanes

    Hi! I am new to Swing. Hope you guys can help me out. I'm currently working on a JApplet that contains a JLayeredPane. I want to draw some 2d graphics (lines, dots, rectangles,...) on the DEFAULT_LAYER or FRAME_LAYER of the JApplet and then add anoth

  • My friend and I shared an icloud Help please!!!!

    I Was the first of my friends to get an iphone. Then my two friends came along and got their own. I let them use my Apple ID for free things only. I guess it automatically signed into my icloud. They both made their own afterwards, but I keep getting