Appel de fonction dans un dll
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
Similar Messages
-
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 -
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 -
Comment générer 1 appel de fonction avec une 6014 à la fréquence d'1 SCAN
Je souhaiterais générer un appel de fonction avec une 6014 E, lors d'un SCAN d'entrées analogiques, à chaque acquisition d'une entrée parmi la série des entrées scannées.
Pour ça, j'utilise le jeu d'instructions suivant :
iStatus = Config_DAQ_Event_Message (iDevice, 1, "AI0", 1, 100, 0, 0, 0, 0, 0, 0, (unsigned long)&myCallBack);
iStatus = Set_DAQ_Device_Info (iDevice, ND_DATA_XFER_MODE_AI, ND_INTERRUPT_EVERY_SAMPLE);
Ensuite je lance l'acquisition avec SCAN_START.
Je bascule mon entrée A0 de 0 à 5V, mais rien ne se produit, et je ne rentre jamais dans ma callback.
J'en déduis 3 hypothèses :
- Soit il y a un problème dans les nombreux paramètres des instructions pour définir la
gestion d'événements
- Soit ma callback n'est pas définie correctement
- Soit la carte n'est pas prévue pour faire cela...
Dans tous les cas, si vous avez un élément de réponse, sur l'explicitation des paramètres ou l'utilisation d'une callback en C++ ou en C version Windows (j'ai trouvé des ex mais en DOS), je vous serais très reconnaissant, étant à présent à bout de ressources et de nerfs...
Merci d'avanceBonjour,
A partir du lien suivant vous trouverez des exemples d'acquisition pour Visual Basic :
http://search.ni.com/query.html?col=alldocs&qp=%2Bcontenttype%3AExample+%2BSW%3AMSForVB&lk=1&qt=acquisition&layout=Example
De plus, lorsque vous installez le driver NI-DAQ, des exemples sont à votre disposition.
Sincères salutations
Isabelle Jean
Isabelle
Ingénieur d'applications
National Instruments France -
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 clipMerci 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 -
Je viens d'acheter un ordi.
La boutique où je l'ai acheté a installé Office et me l'a remis.
Je n'arrive pas à déverouiller certaines fonctions dans "Préférences système". Quel est mon mot de passe d'administrateur? Il se peut que j'aie mal tapé mon mot de passe la première fois. Je n'arrive pas à réinitialiser mon mot de passe...
Aidez-moiTry this link: http://support.apple.com/kb/ht1274
Resetting the original administrator account password
Follow these steps to reset a password when there is only one administrator account on the computer, or if the original administrator account needs a password reset. "Original" administrator account refers to the one that was created immediately after installing Mac OS X. If the original administrator password is known, that administrator account may be used to reset the passwords of other administrator accounts using the steps described above. These steps require an optical drive; if your Mac does not have an optical drive and you have a Mac OS X v10.6 Install disc, see below.
Start up from a Mac OS X Install disc (one whose version is closest to the version of Mac OS X installed). Usually, you can start from the disc by putting it in your computer, restarting, and holding the C key. Or, put it in the computer and click the Install or Restore icon you see in the disc's main window (after which the computer will start from the disc without you needing to hold C). Or, you can use Startup Manager or the Startup Disk preference pane to select the Install disc.
Choose a language, click the arrow button to continue,
Mac OS X v10.6 or later: Choose Password Reset from the Utilities menu.
Mac OS X v10.5 or v10.4: Choose Reset Password from the Utilities menu.
Mac OS X v10.3: Choose Reset Password from the Installer menu.
Tip: If you don't see this menu or menu choice, you're probably not started from the disc yet.
Note: The default keyboard layout is U.S. English while started from the installation disc. If you use a keyboard layout other than U.S English, use the Input menu (the flag icon on the right side of the menu bar) to select the desired layout before typing a new password.
Select your Mac OS X hard disk volume.
Select the user name of your original administrator account.
Important: Do not select "System Administrator (root)". This is actually the root user. You should not confuse it with a normal administrator account. -
Intégrer une interface graphique dans un dll
Bonjour
j'ai développé une application qui utilise une interface graphique comme interface d'input
le programme en mode exécutable fonctionne correctement,
j'ai crée le projet en dll et j'ai essayé de l'utiliser avec le langage (MTL)
j'ai réussi a lire la fonction et l'exécuté (prouver par des msg popup) mais le problème que je peut pas lancé l'interface graphique , je pense qu'il faut intégrer le ".uir "mais j'ai pas trouvé un moyen
vous trouvez ci-joint le msg d'erreur lors de l'appelle ; svp qui peut m'aider
Pièces jointes :
error in call.JPG 134 KBDoublon
Valentin
Certified TestStand Architect
Certified LabVIEW Developer
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 -
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. -
Appeler une fonction de mon appli régulièrement en utilisant les événements
Carte : PCI 6014 E
Je souhaiterais appeler une callback à intervalles réguliers durant un scan d'entrées analogiques.
J'utilise "Config_DAQ_Event_Message" avant de lancer mon scan, aucun message d'erreur ne remonte, mais je ne récupère pas mes entrées et je ne rentre pas dans ma fonction. Y a t'il d'autres choses à mettre en place pour que ça fonctionne, ou est-ce que cela ne pourra pas fonctionner ?Bonjour,
Ci-joint vous trouverez un exemple qui pourra vous aider
Sincères salutations
Salissou ISSA
Ingénieur d'applications
National Instruments France
Attachments:
DAQ_Events.zip 5 KB -
Bonjour,
je vous met en situation : (http://cocopub.com/ninon/index.html)
J'ai un document maître qui se nomme structure.swf
J'appel une section, collections.swfà l'aide d'un loadmovie dans un clip du nom de contenant_collections
Une fois dans collections.swfqui se trouve en fait dans structure.swf, je désir appeler l'une des 7 sous-sections dans un clip du fichier collections.swfnommé contenant_colliers (pour la sections colliers, fichiers colliers.swf).
Je peux afficher l'une des 7 sections sans problèmes, mais lorsque je désir changer de sous-sections et que je clic sur le bouton, rien ne se passe. Mes boutons pour mes 3 sections pricipales fonctionnent, mais pas les sous-sections.
C'EST URGENT !!!!
Merci pour tous de votre aide,
Marc-AndréThere is a French language forum at http://forums.adobe.com/community/international_forums/francais
-
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 KBBonjour,
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 -
Pourquoi une animation responsive (en% par rapport à la fenêtre) fonctionne et s'adapte à la bonne taille dans le preview de Edge et ne marche plus une fois importée en .oam dans MUSE (taille fixe) ?
Merci à la communautéIllustrator CC uses the Pantone Plus series, there is no CMYK definition for the spot colours in these series.
The CMYK conversion is now based on the CMYK profile in your Color Settings.
This is a good thing, since most of the Pantone colours cannot be accurately reproduced in CMYK, colour management provides a way to simulate the spot colours as close as possible for your combination of ink, paper and press.
The CMYK values that were previously given by Pantone were just one way of simulating the spot colours and would give different results when another ink, paper, press combination was used.
Sometimes the CMYK values from Pantone were completely off and you give a perfect example with the Pantone 1797 U colour.
Printing that ink on uncoated stock would never give you such a bright saturated red as the Pantone provided CMYK values would suggest
If you want to have a better preview of the colour, use the Overprint Preview option, that comes closer to the final printed result. The Overprint preview in CC and CS versions give s you an almost identical preview (almost because the Lab values differ slightly).
There are ways to use the old libraries, but why should you if Pantone itself stopped giving CMYK numbers? -
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 -
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 -
Bonjour,
J'ai un probléme avec ma dll
// interact2.cpp //
#include "stdafx.h"
#include "interact2.h"
#include "interact2Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern "C" void __declspec(dllexport) InitInstance();
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
return TRUE;
// CInteract2App
BEGIN_MESSAGE_MAP(CInteract2App, CWinApp)
//{{AFX_MSG_MAP(CInteract2App)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG
ON_COMMAND(ID_HELP, CWinApp:nHelp)
END_MESSAGE_MAP()
// CInteract2App construction
CInteract2App::CInteract2App()
// TODO: add construction code here,
// Place all significant initialization in InitInstance
// The one and only CInteract2App object
CInteract2App theApp;
// CInteract2App initialization
BOOL __declspec(dllexport) CInteract2App::InitInstance()
AfxEnableControlContainer();
// Standard initialization
// If you are not using these features and wish to reduce the size
// of your final executable, you should remove from the following
// the specific initialization routines you do not need.
#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif
CInteract2Dlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
// TODO: Place code here to handle when the dialog is
// dismissed with OK
else if (nResponse == IDCANCEL)
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
J'ai donc rajouté ce qui en rouge et j'ai builder en dll ce fichier.cpp
Cependant quand j'appelle cette fonction dans labview (Call librarie function node)
Pourriez vous me dire ou est mon erreur?
MerciSalut,
J'utilise labview 8.0, je souhaite à partir d'une application Visual C++, retranscrire la plupart des fonctions pour pouvoir communiquer avec un robot.
Le code en c++ fonctionnant avec mon robot, il me semblait plus judicieux de faire des appelle de fonction du code c++ dans labview, comme
par exemple OnInit2() qui permet d'initialiser le robot.
J'envoie le code source, la dll est dans le fichier Source\Debug et se nomme interact2.dll
Je l'ai compilé avec Visual c++
Pouvez vous me dire si ma dll est bien crée? Merci
Pièces jointes :
codesource.zip 2552 KB
Maybe you are looking for
-
Photoshop elements update error
My photoshop elements 12 will not update. Like others it gives error message. Possible solution is download drivers? The problem is I don't know what to do with these files or if I should even extract them. Below is a screen shot. The files belo
-
Should the passwords in 'System keychain' (in Keychain Access) normally be accessible to the owner/administrator or not? If not, would it be possible to gain access via the Root Account? I can access the passwords in 'Login keychain' (in Keychain Acc
-
Partitioned table takes more time to load
Hi, Recently I have been test loading a partition table (Datawarehouse fact table). However, I notice almost 2X to 2.5X jump in timing compared to the non-partitioned table. The partition is on the TIME Key on the basis of monthly range. Since this k
-
When I get an announcement for a software update, I getthe following error message: We have activated the domain ni.com for free access, but we use a proxy server. Please tell me what I need to do to prevent these error messages from coming. Thanks!
-
Newbie needs help with color profiles
somewhat new to digital photography and send most of my stuff to local lab (Costco) when needing to print. I have a mac, with Leopard, and use Lightroom to export to jpgs and upload to the lab site. Simple enough, but I noticed their site had the icc