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

MFC Discussion :

Lire sur un port série de manière synchrone ?


Sujet :

MFC

  1. #21
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Bon voila, je change de fusil d'épaule, en utilisant, la fonction WaitCommEvent(),

    Seulement voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PurgeComm(handlePort, PURGERXCLEAR);
    WaitCommEvent(handlePort, &plop,0);
    success = ReadFile( handlePort, buf, 4096, &Read, NULL ) ;
    Mon programme reste bloqué sur le WaitCommEvent(), qu'il y ai le PurgeComm ou non....

    Qu'en pensez vous ?

  2. #22
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    J'ai l'impression de saouler tt les monde avec mes question

  3. #23
    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
    Citation Envoyé par Hokagge
    J'ai l'impression de saouler tt les monde avec mes question
    je ne vois pas ce qui te permet d'affirmer ça ,

    sinon pour revenir à ton probleme
    Pour moi il y a incohérence
    Le GPS émet « au fil de l’eau » des informations apparemment non structurées
    (Même pas un caractère de début ou fin de message ?)
    Tu as un impératif de timer pour lire les informations (pourquoi d’ailleurs ?).
    Tu dis il est important que cette récupération se fasse a un moment, et un fréquence bien précise.
    Et pendant ce temps que se passe t’il pour l’émetteur ?, il continue d’émettre sans ce soucier du récepteur.
    Dans ces conditions la seule solution valable que je vois c’est de réceptionner les données en permanence dans une pile de réception.
    Quand le Timer se déclenche il suspend le thread de réception il lit la donnée la plus récente de la pile pour l’afficher/traiter, et il la purge et redémarre le thread.
    Mais encore une fois ça reste valable si tu es capable de déterminer au moins le début ou la fin d’un message ne serait ce que par un retour chariot.

  4. #24
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 67
    Points : 47
    Points
    47
    Par défaut
    je sais pas si ca peux t'aider comme aproche .
    mais quand j'ai géré un pointeur souris sur port série . je lisais octet par octet en continu avec un thread de lecture .
    en general y a un octet de synchro , sur lequel je me callais pour lire le reste ( coordonnée pointeur etc.. )
    comme le dit farscape , verifies qu'il n'y ait pas une valeur qui revienne régulierement en debut ou fin de trame .

  5. #25
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    Il y a un '$' a chaque début de ligne, et en fait je traite les trames qui m'intéressent; exemple de ce qu'envoie le GPS:

    $GPGGA,104554.813,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*30
    $GPGLL,0000.0000,N,00000.0000,E,104554.813,V*28
    $GPRMC,104554.813,V,0000.0000,N,00000.0000,E,0.00,,060605,,*04
    $GPVTG,,T,,M,0.00,N,0.0,K*7E
    $GPGGA,104555.813,0000.0000,N,00000.0000,E,0,00,50.0,0.0,M,,,,0000*31
    $GPGLL,0000.0000,N,00000.0000,E,104555.813,V*29
    $GPGSA,A,1,,,,,,,,,,,,,50.0,50.0,50.0*05
    $GPGSV,3,1,12,25,89,000,,31,81,000,,27,59,000,,03,46,000,*7D
    $GPGSV,3,2,12,01,39,000,,13,37,000,,29,33,000,,11,15,000,*79
    $GPGSV,3,3,12,28,-1,000,,08,-5,000,,22,-6,000,,23,-8,000,*73
    $GPRMC,104555.813,V,0000.0000,N,00000.0000,E,0.00,,060605,,*05
    $GPVTG,,T,,M,0.00,N,0.0,K*7E

    J'aimerais bien garder mon timer, car il me pemetterait, (si jamais je trouve un moyen) de récupérer ce genre de trame a un instant 't', cet instant étant régit par, devinez quoi? bah mon timer.

    Sinon comme tu le dit farscape, le gps continue d'envoyer tt le temps sans ce soucier d'un quelconque récepteur.

  6. #26
    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
    ben alors ma solution convient .
    tu as tout ce qui faut.
    reception en permanence avec le thread de reception avec stockage dans un pile de reception.
    quand le timer se declenche gele le thread et lit le dernier element de la pile;
    purge la pile et relance le thread.
    il faudra gerer les instants critiques : timer déclenché et reception en cours..
    etc..


  7. #27
    Membre du Club Avatar de Hokagge
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 149
    Points : 67
    Points
    67
    Par défaut
    ok je m'y atèle

Discussions similaires

  1. Lire et écrire sur le port série
    Par helmi03 dans le forum Débuter
    Réponses: 1
    Dernier message: 11/05/2011, 15h26
  2. [pyserial] lire et écrire sur le port série
    Par elscorpio dans le forum Bibliothèques tierces
    Réponses: 3
    Dernier message: 29/05/2008, 13h39
  3. Comment lire une pin sur le port série du pc
    Par KENPACHI dans le forum LabVIEW
    Réponses: 1
    Dernier message: 25/05/2007, 12h56
  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