Bonjour a tous,
j'essaie de faire un programme pour communiquer via le port COM sous xp mais j'ai quelques problemes.
J'utilise le compilateur DevCpp (je n'ai pas VC++ chez moi), et les fonction _inp et _outp ne sont pas intégrés à la librairie <conio.h> (contrairement a VC++). Je me suis renseigné et j'ai trouvé un peu de doc sur ça, mais je n'ai pas eu de resultat concluant.
Programme en VC++:
Code :
- #define RBR 0
- #define LCR 3
- #define COM1 0x3f8
- int main()
- {
- _outp(COM1+LCR,128); // je mets la valeur 128 dans le registre LCR
- printf("%x",_inp(COM1+LCR)); // je lis ce qu'il y a dans ce le registre LCR
- }
|
Jusqu'ici tout marche impec, avec VC++ bien sur
Avec DevCpp, pour communiquer avec le port COM c'est un peu plus compliqué. J'ai telechargé un fichier DLL (inpout32.dll) et j'ai rajouté un bou de code dans mon fichier, ce qui donne:
Code :
- #define LCR 3
- #define COM1 0x3f8
- typedef short _stdcall (*inpfuncPtr)(short portaddr);
- typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);
- int main()
- {
- HINSTANCE hLib;
- inpfuncPtr inp32;
- oupfuncPtr oup32;
- /* Chargement du dll */
- hLib = LoadLibrary("inpout32.dll" );
- if (hLib == NULL) {
- printf("Le chargement du DLL a echoué.\n" );
- return -1;
- }
- inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32" );
- oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32" );
- int tmp=0;
- oup32(COM+LCR,tmp); // je mets la valeur 0 dans le registre LCR
- printf("reg LCR : %x",inp32(COM1+LCR)); // je lis la valeur du registre LCR
|
Le probleme est le suivant, quelque soit la valeur de
que j'envoie, le registre ne change pas, comme si rien ne se passé, j'ai toujours la valeur FF.
Je m'y prends peut etre mal, mais je n'ai trouvé que cette solution.. j'espere que quelqu'un pourra m'aider
Merci d'avance!
Message édité par mesta le 25-04-2004 à 22:53:37