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

Windows Discussion :

evenement sur le port serie !


Sujet :

Windows

  1. #1
    Membre averti Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Points : 446
    Points
    446
    Par défaut evenement sur le port serie !
    Salut à tous ,
    voila mon prbleme ,
    je developpe actuellement un programme qui effectue une liaison avec un lecteur code barre relié via le port serie , le programme se connecte au port serie en mode asynchrone puis lance un thread qui gere la lecture du buffer lorsque des données sont detectées dans ceului ci ... c'est sur ce point que je bloque , comment gerer l'evenement ?
    en fait je voudrai que le thread gere une boucle "infini" bloqué dans l'atente d'un evenement (la presence de nouvelle donnée dans le buffer) lorsque cet evenement a lieu , le boucle continue , elle traite les données puis elle se bloque de nouveau et ainsi de suite !

    pour l'instant j'utilise un timer qui lit le buffer toute les Xms si il y a des données , il les traites , sinon il ferat une nouvelle lecture dans Xms et ainsi de suite ... (je voudrai me debarasser de cette methode qui je pense n'est pas dutout la meilleur)

    Merci d'avance pour vos post !

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Ce n'est pas un problème de C++ mais spécifique à un OS. Précise lequel.

  3. #3
    Membre habitué
    Profil pro
    Enculeur de mouches
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Enculeur de mouches

    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Points : 161
    Points
    161
    Par défaut
    Si j'ai compris ton pb... Qui n'ai pas tout à fait clair...

    Il suffit que ton thread soit une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    while(1) {
      if(donne_presente) {
        // traitement
      } else {
        sleep(0);
      }
    }
    De cette manière, tant qu'il n'y a pas donner à traiter, le thread signale à l'ordonnanceur de passer la main (grâce à sleep(0)), et ainsi ne consomme aucune ressource inutilement.

    Je ne connais aucune fonctionnalité du port série qui "envoie un évenemment" (mais je connais pas tout). Néanmoins si cétait le cas, tu n'aurait pas besoin de thread.

    Enfin, faire en sorte que le thread ne soit appellé QUE quand il y a des données à traiter implique de modifier l'ordonnanceur, ce qui est difficile, mais faisable sous un OS libre (mais somme toute assez crétin dans ton cas je pense), et impossible sous Windows.
    Gaïa n'est pas une marchandise.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Bon allez vu que ça sent fort le Windows...
    port asynchrone => donc tu utilises WaitForSingleObject quelque part non ?
    WaitForSingleObject met en pause ton thread pour le temps spécifié à moins que l'évènement spécifié survienne, exactement ce que tu cherches non ?

  5. #5
    Membre averti Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Points : 446
    Points
    446
    Par défaut l'os que j'utilise :
    l'os utilisé est windows 2000 (ca m'est imposé)
    Quand à la boucle , c'est un peut ce que j'utilise pour l'instant avec le timer je pense !

    il n'y aurai donc aucun evenement associé à l'ecoute du port serie ?

  6. #6
    Membre averti Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Points : 446
    Points
    446
    Par défaut
    oui c tout a fait ca ... il y a en effet waitforsingleobject et c'est bien l'evenement que je cherche !

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Résolu ? (clique le bouton dédié si oui)

  8. #8
    Membre averti Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Points : 446
    Points
    446
    Par défaut non
    Non tj pas resolue ... l'evenement en question m'est toujours inconnue ou alors je suis passé à coté ! ...

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Poste un peu de code, en particulier les passages CreateFile et WaitForSingleObject.

  10. #10
    Membre averti Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Points : 446
    Points
    446
    Par défaut je pense avoir compris !
    Salut ,
    Voila apres quelques recherches sur le net , j'ai bien compris l'utilitée de WaitForSingleObjetc() qui n'etait pas vraiment tres clair pour moi !
    Demain je metterai correctement en oeuvre cette fonction dans mon projet d'examen !
    Merci encore pour vos post , si je n'arrive pas à l'utiliser correctement je reposterais avec une partie de mon code ... pour trouver l'erreur ! Mais avec un peut de reflexion je pense y arriver tt seul !
    En esperant ne pas avoir à reposter un message sur ce sujet , je vous souhaite une bonne continuation !
    Merci encore .
    Christophe

  11. #11
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    et un petit tour sur la faq VC pour te donner des idées:
    http://c.developpez.com/faq/vc/?page...WithSerialPort

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. visualisation d'evenement sur un port serie
    Par deniscl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/03/2008, 22h41
  2. Espionner les données sur un port série
    Par greuh dans le forum Matériel
    Réponses: 13
    Dernier message: 02/03/2006, 14h22
  3. [TP] Code pascal pour lire sur un port série (int 14h)
    Par ebedinade dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 13/12/2005, 00h39
  4. lecture & ecriture sur le port serie
    Par anouar dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 08/07/2005, 17h15
  5. Comment déterminer la fin d'un message sur le port serie ?
    Par zeddy23 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 11/01/2005, 05h12

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