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

C++ Discussion :

Port Serie Inportb Outportb Ecrasement


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Port Serie Inportb Outportb Ecrasement
    Bonjour,
    Je programme en TurboC (Borland) sous DOS 16b.

    J'utilise Inportb et Outport pour communiquer avec les ports series.

    PROBLEME :
    Il se passe que si je ne suis pas la au bon moment, la suite d'Octets que je veux recuperer par le port, se perd dans les oubliettes.
    Ou plus simplement j'ai un ecrasement des anciens Octets (Overrun).

    Mes questions :
    - Quelle est la taile du Registre de reception (RBR) de UART_8250 ?
    - Comment eviter ce probleme ?

    Amicalement,
    Francois

  2. #2
    Invité
    Invité(e)
    Par défaut
    Utilise les interruptions

  3. #3
    Membre habitué Avatar de Marco85
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    210
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 210
    Points : 187
    Points
    187
    Par défaut
    Tout ça ressemble beaucoup plus à du C (non standard) qu'à du C++ ?

    Non ?

    Marco85
    If you cannot explain a concept to a six year-old, then you do not fully understand it. [Albert Einstein]

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par voider
    Utilise les interruptions

    En effet, je pourrais utiliser les Interruptions, mais c'est un peu lourd.

    Il doit bien y avoir un Buffer avec une taille raisonnable dans ce Port serie, capable de garder une serie d'une dizaine de caracteres !


    Voici l'initialisation du port Com1 :

    // 9600 Bauds
    outportb(3F8 + 0 , 0x0C) ;
    outportb(3F8 + 1 , 0x00) ;

    outportb(3F8 + 3 , 0x03); // 8 Bits, 1 bit Stop, pas de Parité
    outportb(3F8 + 4 , 0x0B); // DTR, RTS et OUT2 = 1


    Voici la reception du port Com1 :
    do
    {
    if (inportb(3F8 + 5) & 1) // verifie qu'un caractere est recu
    sData[i++] = inportb(3F8) ;

    } while(i < 5) ; // Une serie de 5 caracteres

    Est ce que le probleme viendrait d'une mauvaise configuration ?
    Ou d'une mauvaise lecture

  5. #5
    Invité
    Invité(e)
    Par défaut
    Une dizaine de catactere, meme si le port serie est considere comme lent, ca se remplit en une infime fraction de seconde. Si tu veux recuperer le data, tu doit le lire aussitot que possible, et te binder sur une interruption est le meilleur moyen de faire imho.

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Me revoila avec une nouvelle strategie...
    Je souhaite utiliser bioscom() ou _bios_serialcom() (a la place de Inportb/Outportb)...
    Malheureusement, je n'ai que 3 fils pour relier les ports series avec une DB9 (pines 5, 3 et 2).
    Et je suppose parce que je ne trouve pas ailleurs, que c'est pour cela que les fonctions bioscom() et _bios_serialcom ne fonctionnent pas ! Impossible de recuperer un quelconque caractere ! (l'envoi d'un caractere je le fait avec Outportb).

    Voici l'initialisation du port Com1 :
    _bios_serialcom(_COM_INIT, 0, _COM_9600 | _COM_CHR8 | _COM_STOP1 | _COM_NOPARITY) ;

    et la reception du caractere :
    if((Cara = _bios_serialcom(_COM_RECEIVE,0, 0))& 0x7F !=0)

    MA QUESTION :
    -Quelles sont les precautions a prendre pour utiliser _bios_serialcom() quand il n'y a que 3 fils au bout du connecteur ?
    (Bien sur, je peux faire un strap... Mais il doit bien y avoir une facon sans strap !)

    Amicalement,
    Francois

Discussions similaires

  1. quel est le Meilleur language pour piloter le port serie ?
    Par flyfab dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 21/07/2003, 10h03
  2. Lire le fichier du port série
    Par saibe dans le forum Linux
    Réponses: 7
    Dernier message: 09/04/2003, 09h29
  3. Réponses: 5
    Dernier message: 25/03/2003, 19h43
  4. [TP] port série rs232
    Par cyb33 dans le forum Turbo Pascal
    Réponses: 44
    Dernier message: 13/01/2003, 15h49
  5. [Kylix] Kylix / port serie
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 01/04/2002, 12h07

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