J'ai un coll�gue qui a un petit probl�me :
:wink:Citation:
Envoy� par Le coll�gue
Version imprimable
J'ai un coll�gue qui a un petit probl�me :
:wink:Citation:
Envoy� par Le coll�gue
Avec les api tu peux
Tu utilises CreateFile en donnant le nom du port genre com1 et tu donne en parametre a cet api le param OPEN_EXISTING car createFile seert aussi a creer mais avec OPEN_EXISTING il ouvre si �a existe
Donc a partir de la tu recuperes un handle sur ton port
Tu n'a plus qu'a faire une WriteFile pour ecrire et un ReadFIle en passant le handle sur le port pour ecrire ou lire
J'espere que c t la reponse que tu attendais
L'assembleur inline avec devcpp est celui de gcc (syntaxe AT&T).
http://www.delorie.com/djgpp/doc/brennan/brennan_att_inline_djgpp.html
Mais je te d�conseille son utilisation, car c'est pas portable (marche pas sous NT).
les fonctions sous dev-cpp doivent �tre avec un "_" devant :
par exemple...Code:_outp
ces fonctions sont dans dos.h
donc ton source devrait avoir une t�te comme �a :
Code:
1
2
3
4
5
6
7
8 #include <dos.h> main() { ... //autre code _outp(0x278, 0x01); ... //autre code }
R�ponse du coll�gue (je sers d'interm�diaire):
Merci pour vos r�ponses ! :wink:
Le_coyote >> Ca donne ca :hegros >> Comprend pas l'utilisation du CreateFile ... ! :koi:Citation:
implicit declaration of function `int _outp(...)'
Tu peux donner plus de d�tails ...
:roll:
Si tu cherches � communiquer sur port COM, j'ai �crit une super classe C++ (d�riv�e de CWinThread : classe MFC) pour g�rer la communication sur port COM. Ca g�re le changement de port COM "� chaud", �a permet d'envoyer et de recevoir des commandes, et le thread fonctionne assez proprement (utilisation d'�v�nement ainsi que de zones critiques).
Sous Windows, pour acc�der au port COM, tu ouvres simplement le fichier nomm� "COM1" :-) Apr�s y'a plein de fonctions pour configurer :
- SetCommState
- SetCommTimeouts
- SetupComm
- PurgeComm
- FlushFileBuffers
- SetCommMask + WaitCommEvent
- ...
@+ Haypo
je te conseille d'int�grer la chose sous forme de macro plutot que de fonction : la t�te de ton fichier include devrait ressembler � �a :
(je sais pas exactement ce que tu veux faire, mais ce code l� marche..)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #define outb(value,port) \ __asm__ ("outb %%al,%%dx"::"a" (value),"d" (port)) #define inb(port) ({ \ unsigned char _v; \ __asm__ volatile ("inb %%dx,%%al":"=a" (_v):"d" (port)); \ _v; \ }) #define outb_p(value,port) \ __asm__ ("outb %%al,%%dx\n" \ "\tjmp 1f\n" \ "1:\tjmp 1f\n" \ "1:"::"a" (value),"d" (port)) #define inb_p(port) ({ \ unsigned char _v; \ __asm__ volatile ("inb %%dx,%%al\n" \ "\tjmp 1f\n" \ "1:\tjmp 1f\n" \ "1:":"=a" (_v):"d" (port)); \ _v; \ })