Bonjour à tous et à toutes ....

Voilà mon souci : j'ai besoin de récuperer les données qui arrivent au fil de l'eau par le COM 1 par le biais d'une RS 232 ....
après , je les stockerai dans un fichier texte mais a priori , ca , je connais ....
mon probleme concerne l'acquisition des donnees et la configuration du port COM ..
J'ai déja recupéré un source mais ca ne fonctionne pas du tout ( ou peux etre que je n'arrive pas a le faire fonctionner...)
Pour tester je relie 2 Pc par un cable RS232 , et j'active l'hyperteminal sur l'un qui envoies des characteres mais le probleme c'est que le prog qui est dans le 2eme Pc ne reçoit rien ....( si je met l'hyperteminal sur le 2eme Pc , la com fonctionne...)

Quelqu'un aurait il dejà des infos sur ce type de programme ???

Merci de votre aide et bonne journée ....


je vous transmet le source recuperé :

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
program com;
 
uses dos,crt;
 
const nbport = 0;       {**********************************************}
                        {* nbport = 0     pour    COM1                *}
                        {* nbport = 1     pour    COM2                *}
                        {**********************************************}
 
 
procedure rs_init;
{**********************************************************************}
{* Initialise le port RS232C : 8 bits de donn‚es                      *}
{*                             2 bits Stop                            *}
{*                             Parit‚ Paire                           *}
{*                             Vitesse … 2400 Bauds                   *}
{*  Cette procedure doit ˆtre appel‚ une fois , avant de pouvoir      *}
{*  utiliser la liaison s‚rie                                         *}
{*  Entrée: AH = 0x00               				      *}
{*                        DX = Numéro de l'interface série	      *}
{*                                0x00 = COM1                  	      *}
{*                                0x01 = COM2			      *}
{*                        AL = Paramètres de configuration	      *}
{*                                Bits 0-1: longueur du mot	      *}
{*                                        10 = 7 bits		      *}
{*                                        11 = 8 bits		      *}
{*                                Bit 2: nombre de bits de stop	      *}
{*                                        0 = 1 bit de stop	      *}
{*                                        1 = 2 bits de stop	      *}
{*                                Bit 3-4: contrôle de parité	      *}
{*                                        00 = aucun		      *}
{*                                        01 = impair		      *}
{*                                        11 = pair		      *}
{*                                Bit 5-7: vitesse de transmission    *}
{*                                        000 = 110 bauds	      *}
{*                                        001 = 150 bauds	      *}
{*                                        010 = 300 bauds	      *}
{*                                        011 = 600 bauds	      *}
{*                                        100 = 1200 bauds	      *}
{*                                        101 = 2400 bauds	      *}
{*                                        110 = 4800 bauds	      *}
{*                                        111 = 9600 bauds	      *}
{*								      *}
{**********************************************************************}
 
var
   regs : registers;
begin
     regs.ah:=0;
     regs.dx:=nbport;
     regs.al:=227;   //= 'E3' en hex et 11100011 en binaire :8 bits, pas de parité, 1 bits stop,9600bds
 
 
     intr($14,regs);
{     writeln('R‚sultat initialisation ah=',regs.ah);}
end;
 
function rs_status:integer;
{*********************************************************************}
{* Cette fonction lit le statut du port s‚rie                        *}
{*********************************************************************}
var
   regs : registers;
begin
     regs.ah:=3;
     regs.dx:=nbport;
     intr($14,regs);
     rs_status:=regs.ah;
end;
 
function rs_read:integer;
{***********************************************************************}
{* Lecture au vol de la RS232C , Si aucun caractˆre n'a ‚t‚ recu la    *}
{* function renvoie -1                                                 *}
{***********************************************************************}
var
   regs : registers;
 
begin
     if (rs_status and 1)=1 then
        begin
             regs.ah:=2;
             regs.dx:=nbport;
             intr($14,regs);
if (regs.ah and 128)=128 then begin
   writeln('Il y a eu erreur en lecture, AH=:',regs.ah);
   end else rs_read:=regs.al;
      end else begin
                      rs_read:=-1;
                  end;
end;
 
function rs_lecture : integer;
{********************************************************************}
{* Cette function attend q'un caractŠre soit recu sur le port s‚rie *}
{********************************************************************}
var
   aux : integer;
begin
     repeat
           aux:=rs_read;
     until aux<>-1;
     rs_lecture:=aux;
end;
 
procedure rs_write(data : byte);
{*******************************************************************}
{* Cette proc‚dure permet d'emettre un caractŠre sur le port s‚rie *}
{*******************************************************************}
var
   regs : registers;
 
begin
     regs.ah:=1;
     regs.dx:=nbport;
     regs.al:=data;
     intr($14,regs);
     if (regs.ah and 128)=128 then writeln('Erreur transmition : ',regs.ah);
end;
 
procedure test_lecture;
{********************************************************************}
{* Cette procedure permet de tester la fiabilit‚ de la liaison      *}
{* PC - Robot , elle permet entre autre d'effectuer le r‚glage de   *}
{* Vitesse de la RS232 du robot VECTOR                              *}
{********************************************************************}
var
   err,i,aux,cnt : integer;
 
begin
     clrscr;
     rs_init;
     aux:=-1;
     err:=-1;
     cnt:=-1;
     repeat
           rs_init;
           i:=rs_lecture;
           if i<>aux+1 then err:=err+1;
           aux:=i;
           if i=255 then aux:=-1;
           inc(cnt);
     until keypressed or (cnt=1000);
     writeln;
     writeln('Il y a eu ',err,' erreurs sur 1000 ');
end;
 
procedure test_ecriture;
{*******************************************************************}
{* Permet de tester l'‚mission d'un caract‚re vers le robot VECTOR *}
{*******************************************************************}
var i,aux,j : integer;
    carac : char;
 
begin
     clrscr;
     repeat
     repeat until keypressed;
     carac:=readkey;
     rs_init;
     rs_write(ord(carac));
     write(carac);
     until ((carac='Q') or (carac='q'));
end;
 
begin
     test_ecriture;
end.