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