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

Linux Discussion :

Port serie, Asynchrone, thread


Sujet :

Linux

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Port serie, Asynchrone, thread
    Bonjour a tous/tes

    Je suis en train d'écrire une application C/C++ qui dialogue avec une interface électronique par le biais d'un port série /dev/ttyS0. Il s'agit d'une communication asynchrone, même si dans 90% des cas, c'est mon application qui émet une trame puis l'interface qui répond.


    J'ai pour le moment trouvé que deux solutions, mais aucunes des deux me semble correcte. Cependant, je vous les expose.

    Première)
    1 Je lis de manière bloquante le fichier /dev/ttS0 pendant 1 seconde.
    2 Si j'ai un réponse, je traite puis je continu, sinon je continu
    3 Si j'ai une trame à émettre, je l'émet
    4 Je reviens à l'étape 1

    Ce n'est pas très élégant, on boucle en permanence.

    Deuxième)
    1 Je crée un premier thread de lecture bloquante T1
    1 Je lis de manière bloquante et définitve cette fois-ci.
    2 Je viens de recevoir une réponse, je la traite
    3 Je reviens à l'etape 1

    2 Je créé un deuxième thread T2
    1 J'attend un quelquonque évenement (touche clavier par exemple)
    2 J'emet une trame
    3 Je reviens à l'étape 1

    Cette façon n'est pas meilleur, car elle est trés lourde. Il faut à la fois mettre en place un mécanisme de protection du descripteur de fichier. Mais aussi, un mécanisme de synchronisation entre ces 2 threads, car chque fois que j'emet une trame je dois attendre un accuse de l'interface et inversement, si l'interface m'envoit une trame, je dois emettre un accusé + quelques cas particulier.

    Vous en pensez quoi? J'attends vos avis avec impatience.

  2. #2
    Membre du Club Avatar de Menthe_a_l_eau
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 50
    Points
    50
    Par défaut
    Salut,

    Peut etre que tu peut faire une gestion du port separee en deux :

    1) Emission trames puis attente evenement de ton interface (puis analyse,...)

    2) Mode evenements autonomes.

    Tu passe en mode 1 que quand tu veux emettre .

Discussions similaires

  1. multi thread et port serie
    Par mich35 dans le forum C#
    Réponses: 4
    Dernier message: 03/07/2012, 08h33
  2. Erreur inter-thread en utilisant le port serie
    Par leo2v2o dans le forum C#
    Réponses: 8
    Dernier message: 16/01/2008, 12h32
  3. [TP] port série rs232
    Par cyb33 dans le forum Turbo Pascal
    Réponses: 44
    Dernier message: 13/01/2003, 15h49
  4. [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