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 Full Duplex Termios


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Par défaut Port Serie Full Duplex Termios
    Bonjour,

    Alors voila je desire realiser une communication via le port serie. Pour cela j'utilise la librairie termios. Mon probleme est que je desire utiliser une connexion Full Duplex sur le meme port (un thread emission, un thread reception).
    Mais ce que j'ai fait n'a pas l'air de fonctionner. Je n'arrive qu'a envoyer mais pas de réception.
    Donc est ce que quelqu'un aurait déjà utiliser cette librairie et saurait comment bien configurer le port en FD.

    Merci

  2. #2
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Tu peux montrer ton code ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Par défaut
    Voici le code d'init :

    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
     
    int initSerial(int fd, speed_t speed, char parity_com, int databits, int stopbits)
    {
     
        struct termios config;
     
     
        if(!isatty(fd))
        {
            perror("Error");
        }
     
        /* Get the current option of the port */
        tcgetattr(fd, &config);
     
     
        config.c_iflag &= ~(IGNBRK | BRKINT | ICRNL |
                            PARMRK | INLCR | ISTRIP | IXON);
     
     
        config.c_lflag &= ~(ECHO | ECHONL | ICANON | IEXTEN | ISIG);
     
        config.c_oflag &= ~OPOST;
     
        /* Enable the receiver and set local mode*/
        config.c_cflag |= (CLOCAL | CREAD);
     
        /* Set speed */
        cfsetispeed(&config, speed);
        cfsetospeed(&config, speed);
     
     
        /* Set the data size */
        config.c_cflag &= ~CSIZE;
     
        switch (databits)
        {
        case 5 :
            config.c_cflag |= CS5;
            break;
        case 6:
            config.c_cflag |= CS6;
            break;
        case 7:
            config.c_cflag |= CS7;
            break;
        case 8:
            config.c_cflag |= CS8;
            break;
        default :
            break;
        }
     
        /* set the parity */
        switch(parity_com)
        {
        case 'n':
            config.c_cflag &= ~PARENB;
            break;
        case 'i':
            config.c_cflag |= PARENB;
            config.c_cflag &= ~PARODD;
            break;
        case 'p':
            config.c_cflag |= PARENB;
            config.c_cflag |= PARODD;
            break;
        default :
            break;
        }
     
        /* set bit */
        if(stopbits == 1)
            config.c_cflag &= ~CSTOPB;
        else
            config.c_cflag |= CSTOPB;
     
     
        /* set the new options */
        tcsetattr(fd, TCSANOW, &config);
     
    }

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    L'initiation se déroule bien ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 36
    Par défaut
    Je pense oui. En tout pour une communication Half duplex que ce soit en Rx ou Tx il n y pas l'air d avoir de souci.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 38
    Par défaut
    Bonjour,

    Je m'intéresse également à ce genre de problème. En fait, je cherchais à savoir s'il était possible d'utiliser un même file descriptor passé à deux threads différents, un pour la lecture sur le port série, l'autre pour l'écriture, si ça ne posait pas de problèmes de synchronisation.

    Visiblement, d'après les messages ci-dessus, c'est possible. Il suffit donc en théorie d'initialiser le port, puis de transmettre le FD aux deux threads, c'est bien ça ? C'est ce que tu as fait, MeWaa ?

    Charles

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