IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

[TP] Code pascal pour lire sur un port série (int 14h) [Non suivi]


Sujet :

Turbo Pascal

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [TP] Code pascal pour lire sur un port série (int 14h)
    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

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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 ?



    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    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 :

    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.
    Merci

  4. #4
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    D'après la RBIL, voici le paramètre AL pour la fonction 0h :

    Citation Envoyé par Ralf Brown
    Bitfields for serial port parameters:
    Bit(s) Description (Table 0204)
    7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
    4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
    2 stop bits (set = 2, clear = 1)
    1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8 )
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  5. #5
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    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 :

    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;
    Si on se base sur une communication de paramètres :
    - 8 bits de données
    - Pas de parité
    - Un bit de stop
    - 9600 bauds

    Il suffit alors d'écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Regs.al := comData8Bits or comParityNone or comStopBit or comRate9600;
    Tout simplement

    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

Discussions similaires

  1. code Javascript pour lire un fichier texte
    Par DEV-10 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/10/2006, 21h49
  2. petit soucis pour lire sur un port usb le createfile n'accep
    Par anthonycosson dans le forum Windows
    Réponses: 5
    Dernier message: 14/02/2006, 09h34
  3. Lire sur un port série de manière synchrone ?
    Par Hokagge dans le forum MFC
    Réponses: 26
    Dernier message: 09/06/2005, 12h16
  4. Quel langage choisir pour lire sur le port série ?
    Par Nico76 dans le forum Windows
    Réponses: 7
    Dernier message: 28/04/2004, 10h42
  5. webcam : lire sur un port usb en c/c++ ou java. sous win. ?
    Par flo007 dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 24/05/2002, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo