Sphinx_benzine
Messages postés10Date d'inscriptionmardi 17 février 2009StatutMembreDernière intervention27 mai 2009
-
27 mai 2009 à 16:12
cs_hstar
Messages postés1Date d'inscriptiondimanche 24 février 2008StatutMembreDernière intervention 8 avril 2010
-
8 avril 2010 à 14:33
Bonjour à tous ,
Je me permet de vous demander votre aide car je ne suis pas très doué. ^^
J'explique donc mon problème.
Je voudrais connecter une plaquette USB velleman K8055 , je dispose des dll necessaire.
Pour cela, si je comprends bien, je dois associé la dll dans mon fichier cpp.
Cependant, je ne vois pas comment faire ...
il y a t il une commande a taper avec le nom de la dll ?
cs_beg0
Messages postés51Date d'inscriptionlundi 17 janvier 2005StatutMembreDernière intervention13 mars 20111 27 mai 2009 à 18:49
salut,
Il y a plein de façon d'utiliser une DLL dans un programme... Comme j'ai aucune envie de toutes les énumérer, je vais te demander plus de précisions...
Tu disposes du fichier .h associé ? du fichier objet associé ( .lib, .a, ca dépend de ce que t'utilise pour programmer)
tu utilises quoi pour programmer (me repond pas le c++... je veux un nom de logiciel genre Code::Blocks, VC++... ) ?
Sinon t'as essayer google ?? parce que moi je tape "link DLL c++" et le 1er lien correspond a ce que tu veux faire (les autres aussi d'ailleurs !)
Pour ma curiosite personelle, Tu n'as pas de pilote a installer pour utiliser une plaquette en USB ? juste une DLL ? (question ouverte, les autres vous avez le droit de repondre xD)
Sphinx_benzine
Messages postés10Date d'inscriptionmardi 17 février 2009StatutMembreDernière intervention27 mai 2009 27 mai 2009 à 20:03
Merci pour vos réponses ,
et bien pour vous répondre , j'utilise Code::Blocks par défaut ... c'est celui qui me semblant le plus facile à trouver ^^
Donc avec la plaquette Usb je dispose donc de la Dll K8055D.DLL mais malhreusement je ne trouve pas de fichier .lib
Pour le moment je suis encore au point de départ, après si j'y arrive, je vais essayer de faire une interface graphique.
Le but de mon message est que je voudrais y connecter des capteurs pour faire une station météo homemade javascript:Insert_Emoticon('/imgs2/smile_cool.gif');
l'avantage de cette carte est qu'elle est détectée par windows !
un grand merci pour vos réponses et réponses futures javascript:Insert_Emoticon('/imgs2/smile_tongue.gif');
tu copies les fichiers k8055D_C.h k8055D_C.lib et k8055D_C.dll dans le repertoire de ton application
Dans code::Blocks, une fois que t'as cree ton projet, tu vas dans [project]->[build options]->[linker settings]
A gauche tu selectiones "DEBUG" et tu cliques sur [ADD]
tu rentres "./K8055D_C.lib"
tu fais la meme chose mais en selectionnant "RELEASE"
Ca y est ta DLL est "liee" a ton application
Pour utiliser les fonctions dans ton programme, il te "suffit" d'inclure le fichier K8055D_C.h
#include "K8055D_C.h"
sauf que apparament, pour Microsoft et pour Borland, le type bool fait parti du standard C (a bon!) et que le type par defaut est void et pas int
Comme moi gcc me faisait chier a la compiler j'ai modifie le fichier .h comme ca
#ifdef __cplusplus
extern "C" {
#endif
#define FUNCTION __declspec(dllexport)
FUNCTION long __stdcall OpenDevice(long CardAddress);
FUNCTION void __stdcall CloseDevice();
FUNCTION long __stdcall ReadAnalogChannel(long Channel);
FUNCTION void __stdcall ReadAllAnalog(long *Data1, long *Data2);
FUNCTION void __stdcall OutputAnalogChannel(long Channel, long Data);
FUNCTION void __stdcall OutputAllAnalog(long Data1, long Data2);
FUNCTION void __stdcall ClearAnalogChannel(long Channel);
FUNCTION void __stdcall ClearAllAnalog();
FUNCTION void __stdcall SetAnalogChannel(long Channel);
FUNCTION void __stdcall SetAllAnalog();
FUNCTION void __stdcall WriteAllDigital(long Data);
FUNCTION void __stdcall ClearDigitalChannel(long Channel);
FUNCTION void __stdcall ClearAllDigital();
FUNCTION void __stdcall SetDigitalChannel(long Channel);
FUNCTION void __stdcall SetAllDigital();
FUNCTION int __stdcall ReadDigitalChannel(long Channel);
FUNCTION long __stdcall ReadAllDigital();
FUNCTION long __stdcall ReadCounter(long CounterNr);
FUNCTION void __stdcall ResetCounter(long CounterNr);
FUNCTION void __stdcall SetCounterDebounceTime(long CounterNr, long DebounceTime);
FUNCTION void __stdcall Version();
FUNCTION long __stdcall SearchDevices();
FUNCTION long __stdcall SetCurrentDevice(long lngCardAddress);
#ifdef __cplusplus
}
#endif
Sinon... tu peux toujours utiliser LoadLibreary et GetProcAddress xD
cs_hstar
Messages postés1Date d'inscriptiondimanche 24 février 2008StatutMembreDernière intervention 8 avril 2010 8 avril 2010 à 14:33
Bonjour à tous !
Tout d'abord je m'excuse de déterrer un topic ouvert il y a bientôt 1 an.
A priori, je suis dans le même cas que Sphinx_benzine, seulement j'utilise Visual C++ 2008 express.
Je vous explique le principe du projet. Je dois recevoir les données de cette carte, les afficher sur une IHM et les envoyer à un poste serveur.
Concernant la communication avec ne serveur, aucun souci, seulement je n'arrive pas à inclure le fichier K8055D_C.dll.
Le K8055D_C.h est inclue dans les fichiers entête, le K8055D_C.lib à été ajouté dans l'éditeur de liens (en entrée).
Je ne trouve pas comment déclarer l'inclusion de la dll dans mon fichier Form1.h, ce qui implique que je ne peux pas me connecter à la carte, ni y récupérer les données.