J'ai un coll�gue qui a un petit probl�me :
Envoy� par Le coll�gue
![]()
J'ai un coll�gue qui a un petit probl�me :
Envoy� par Le coll�gue
![]()
L'urgent est fait, l'impossible est en cours, pour les miracles pr�voir un d�lai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"�crivez dans un fran�ais correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
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 : S�lectionner tout - Visualiser dans une fen�tre � part _outp
ces fonctions sont dans dos.h
donc ton source devrait avoir une t�te comme �a :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 !![]()
Le_coyote >> Ca donne ca :hegros >> Comprend pas l'utilisation du CreateFile ... !implicit declaration of function `int _outp(...)'![]()
Tu peux donner plus de d�tails ...
![]()
L'urgent est fait, l'impossible est en cours, pour les miracles pr�voir un d�lai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"�crivez dans un fran�ais correct !!
C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)
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 : S�lectionner tout - Visualiser dans une fen�tre � part
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; \ })
Partager