J'essage de lire des données sur un port serie rs232 rattaché à une balance en utilisant l'interruption 14h. Quelqu'un peut il m'aide
Merci
J'essage de lire des données sur un port serie rs232 rattaché à une balance en utilisant l'interruption 14h. Quelqu'un peut il m'aide
Merci
Bonjour,
Avez-vous effectué une recherche avant de poster ? Ce problème (l'accès au port série) a déjà été traité sur ce forum, et même sur Internet.
Pourriez-vous également nous faire part de vos essais ?
@++
Merci pour votre réponse.
Effectivement j'ai vu les différentes notes à propos de ce problème. seulement j'ai des difficultés au niveau de l'implémentation, notament pour envoyer des données au port telles que le le protocole de communication sous forme : 8 (pour la longueur des données), Aucune pour la parité, 1 pour bits d'arrêts et 9600 bauds pour la vitesse de transmission.
je sais pour cela qu'il faut appeler la fonction 00h de l'interruption 14 avec 0 dans le registre AH et le protocole dans le registre AL.
ensuite il faut que j'envoi le caractère '$' sur le port avant de lire le poids.
Voici le programme tel que j'essaye de l'écrire :
Merci
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 program balance; uses crt,dos; var regs : registers; poids : integer; mess : string[1]; begin clrscr; (*envoi de protocole*) regs.ah := $0; regs.al := [b](*je ne sais comment renseigner le protocole ici*);[/b] intr($14,regs); poids := regs.ah; writeln(poids); readln; (*envoi du caractère $*) mess := '$'+'$'; regs.AH := $01; regs.al :=ofs(mess[1]); intr($14,regs); (*lecture du poids dans le registre AL*) regs.AH := $02; intr($14,regs); poids := regs.al; writeln(poids,' ko'); writeln; write('Appuyez sur cr...'); readln; end.
D'après la RBIL, voici le paramètre AL pour la fonction 0h :
Envoyé par Ralf Brown
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
Bonsoir,
Il ne faut pas hésiter à se déclarer des constantes pour utiliser au mieux ce dont on a besoin. Pour les communications séries, on a :
Si on se base sur une communication de paramètres :
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 const comData5Bits = $00; comData6Bits = $01; comData7Bits = $02; comData8Bits = $03; comStopBit = $04; comParityNone = $10; comParityOdd = $08; comParityEven = $18; comRate110 = $00; comRate150 = $20; comRate300 = $40; comRate600 = $60; comRate1200 = $80; comRate2400 = $A0; comRate4800 = $C0; comRate9600 = $E0;
- 8 bits de données
- Pas de parité
- Un bit de stop
- 9600 bauds
Il suffit alors d'écrire ceci :
Tout simplement
Code : Sélectionner tout - Visualiser dans une fenêtre à part Regs.al := comData8Bits or comParityNone or comStopBit or comRate9600;
@++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager