Aller au contenu


Photo
- - - - -

Comment compiler mon programme dans ma carte ?


  • Veuillez vous connecter pour répondre
26 réponses à ce sujet

#1 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 23 juillet 2008 - 10:43

Salut à tous !

Je possède actuellement la carte K8055 avec liaison USB de chez velleman. Je voudrais savoir comment je dois configurer CODEBLOCK pour compiler mon programme sur ma carte, je suis débutant en électronique !

Merci d'avance !

ps: je n'ai pas trouvé dans la doc la methode à suivre !

#2 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 23 juillet 2008 - 10:49

re bonjour :D

Utilise tu windows ?
tu connais l'API WIN32 ?

En faite ton programme doit appelé la dll avant de pouvoir utilisé les fonction dedans, cela est propre au langage et surtout au API.
Quel est ton niveau en c (ou c++)?
qu'as tu compris pour l'instant ?



#3 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 23 juillet 2008 - 11:10

Re !

Oui, je suis sous windows XP.
Non je ne connais pas l'api win32.
Mon niveau en c++ est mauvais-moyen.

Tu dis appeller la dll mais en fait il faut la placer dans le meme repertoire que mon projet ?

Merci de ta réponse !

PS: mieu vaut répondre ici, oublies le post du sdz :p

#4 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 23 juillet 2008 - 11:50

Non c'est pas aussi simple que cela.



En faite tu met la dll ou tu veux mais le plus facile reste dans le même répertorie que l'exécutable et dans ton code source il faut appelé un fonction qui vas chargé la dll dans ces ressources. Quand elle y est tu poura te servie de c'est fonction.



Je te conseil de lire ceci, même si c'est en c, il devrait fonctionné en c++ aussi.

#5 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 24 juillet 2008 - 12:29

J'ai copié collé toutes les dll données dans system32 de windows mais ça ne fonctionne toujours pas, je ne sais pas comment charger ma dll !
++

ps: j'ai lu le tutoriel mais en fait lorsque je fais:

HINSTANCE DLLHandle; ça ne le connait pas !

#6 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 24 juillet 2008 - 09:56

Poste ton code, on te dira ce qu'il ne vas pas
Et dis nous aussi l'erreur que ton compilo dit.



#7 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 24 juillet 2008 - 02:07


#include
#include


using namespace std;

int main()
{
HINSTANCE DLLHandle;
typedef int(*Type_Pointeur_De_Fonction)(int, int);
Type_Pointeur_De_Fonction Pointeur_Fonction;
DLLHandle = LoadLibrary("K8055D.dll");
OpenDevice = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"OpenDevice");


OpenDevice(1);
return 0;
}
[/code]

C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp||In function `int main()':|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|10|error: `HINSTANCE' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|10|error: expected `;' before "DLLHandle"|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|13|error: `DLLHandle' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|13|error: `LoadLibrary' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|14|error: `OpenDevice' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|14|error: `GetProcAddress' was not declared in this scope|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|10|warning: unused variable 'HINSTANCE'|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|12|warning: unused variable 'Pointeur_Fonction'|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|13|warning: unused variable 'LoadLibrary'|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|14|warning: unused variable 'GetProcAddress'|
||=== Build finished: 6 errors, 4 warnings ===|
[/code]

Mon projet est en c++ mais je crois que les librairies C fonctionnent aussi, j'ai donc copié collé tout le code du tutoriel (en remplacant par mes valeurs a certains endroits)
++

#8 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 24 juillet 2008 - 02:46

Tout d'abord il faut vraiment que tu t'exerce en c++ !

voila le code corrigé, regarde les fautes que tu as faite.


#include
#include
#include


using namespace std;


int main(int argc, char *argv[]) {

HINSTANCE DLLHandle;
typedef int(*Type_Pointeur_De_Fonction)(int, int);
Type_Pointeur_De_Fonction OpenDevice;
DLLHandle = LoadLibrary("K8055D.dll");
OpenDevice = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"addition");
//La ligne au dessus est a modifier selon ta dll.


FreeLibrary(DLLHandle);
return 0;
}
[/code]

#9 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 24 juillet 2008 - 03:13

Salut

Ca ne fonctionne pas, il me dit qu'il manque des arguments quand je fais OpenDevice(1); alors que la fontion ne prend qu'un seul argument (j'ai bien modifié la ligne ou tu as écrit addition).

++

#10 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 24 juillet 2008 - 03:35

Je ne connais pas OpenDevice(1);, c'est propre a ta dll et seul des personnes qui ont le kit (pas beaucoup de personne).

A voir cela, ne le prend pas mal mais tu ne connais pas le c++. il faut vraiment que tu travaille dessus avant de marié la programmation a l'électronique.



#11 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 24 juillet 2008 - 03:51

OpenDevice prend comme parametre l'adresse de la carte.
Sinon disons que je n'ai jamais fait de c++ sous cet angle, d'habitude je fais des choses sous QT par exemple.

++

#12 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 24 juillet 2008 - 04:50

tu es sur de ton OpenDevice(1), surtout du 1 en faite ?

1 n'étant pas une adresse.

Sinon pour Qt, c'est la même chose.

#13 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 24 juillet 2008 - 05:41

En fait je t'explique le principe de fonctionnement de l'adresse de la carte, il est fourni avec la carte 2 bouts d'étains permettant de connecter 2 chevaliers (je crois que ca s'appelle ainsi) en fait ca fonctionne ainsi:

Chevalier 1 | Chevalier 2 | Adresse
Connecté Connecté 0
Non Connecté Connecté 1
Connecté Non connecté 2
Non Connecté Non connecté 3

Je suis dans le cas ou le premier n'est pas connecté et le second l'est, l'adresse est donc 1 (c'est sur car en utilisant le logiciel fourni avec l'adresse de la carte est bien 1).

++

#14 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 24 juillet 2008 - 06:19

alors sans la doc et tout je ne sais pas désolé


#15 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 24 juillet 2008 - 06:31

Pour la doc: http://91.121.164.195/manuel.zip

#16 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 24 juillet 2008 - 06:44

montre un peux ton code complet et les erreurs que tu as maintenent ?


#17 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 24 juillet 2008 - 07:22


#include
#include
#include


using namespace std;


int main(int argc, char *argv[]) {

HINSTANCE DLLHandle;
typedef int(*Type_Pointeur_De_Fonction)(int, int);
Type_Pointeur_De_Fonction OpenDevice;
DLLHandle = LoadLibrary("K8055D.dll");
OpenDevice = (Type_Pointeur_De_Fonction)GetProcAddress(DLLHandle,"OpenDevice");
//La ligne au dessus est a modifier selon ta dll.

OpenDevice(1);
FreeLibrary(DLLHandle);
return 0;
}
[/code]

C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp||In function `int main(int, char**)':|
C:\Documents and Settings\Marco\Bureau\programmation\test\carte\main.cpp|19|error: too few arguments to function|
||=== Build finished: 1 errors, 0 warnings ===|
[/code]

En tout cas, merci de prendre ton temps pour moi, c'est vraiment sympa !

ps: la ligne 19 est celle du OpenDevices(1);

#18 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 25 juillet 2008 - 10:42

Personne ne sait ? :(

#19 miky-mike

miky-mike

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 232 messages
  • Gender:Male
  • Location:Belgique

Posté 25 juillet 2008 - 11:46

Change toujours le nom de la variable OpenDevice

#20 freempi

freempi

    Nouveau membre

  • Membres
  • 21 messages

Posté 26 juillet 2008 - 12:31

Voici quelque chose qui pourrait t'aider à comprendre le problème:

http://91.121.164.195/test2.zip

C'est un exemple de programme fourni avec, le problème est qu'il ne compile pas, voici le log:

C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|34|afxwin.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|35|afxext.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|36|afxdisp.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|38|afxdtctl.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\stdafx.h|40|afxcmn.h: No such file or directory|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|7|#error include 'stdafx.h' before including this file for PCH|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|18|error: expected class-name before '{' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|24|error: `BOOL' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|29|error: ISO C++ forbids declaration of `DECLARE_MESSAGE_MAP' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|29|error: expected `;' before '}' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|29|error: expected `;' before '}' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_test.h|31|warning: no newline at end of file|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|2|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|3|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|4|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|5|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|6|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|7|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|8|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|64|error: `HINSTANCE' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|65|error: `LONG2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|66|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|67|error: `LONG2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|68|error: `LONGPLONGP2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|69|error: `LONGLONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|70|error: `LONGLONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|71|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|72|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|73|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|74|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|75|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|76|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|77|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|78|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|79|error: `VOID2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|80|error: `LONG2BOOL' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|81|error: `VOID2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|82|error: `LONG2LONG' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|83|error: `LONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055d.h|84|error: `LONGLONG2VOID' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|11|error: expected class-name before '{' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|14|error: expected `)' before '*' token|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|20|error: `CDataExchange' has not been declared|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|20|error: ISO C++ forbids declaration of `pDX' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|25|error: `HICON' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|28|error: `BOOL' does not name a type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|29|error: ISO C++ forbids declaration of `afx_msg' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|29|error: expected `;' before "void"|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|30|error: ISO C++ forbids declaration of `afx_msg' with no type|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|30|error: expected `;' before "void"|
C:\Documents and Settings\Marco\Bureau\programmation\test2\test2\k8055_Dlg.h|31|error: `afx_msg' does not name a type|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 1 warnings ===|
[/code]

C'est la carte qui manque de documentation ou c'est moi qui ne suis pas assez experimenté ? Parce que dans le premier cas je peux la rendre et en prendre une autre.
++






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users