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

Visual C++ Discussion :

Utilisation de SetCommTimeouts()


Sujet :

Visual C++

  1. #1
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut Utilisation de SetCommTimeouts()
    Bonsoir,

    Lorsque qu'on d�finit une structure COMTIMEOUT, par exemple un timeout de 2000ms pour l'intervalle max de lecture entre deux caract�res, cela signifie t'il que lorsqu'on appelle la fonction ReadFile(), celle-ci ne retourne pas tant que le timeout n'est pas �coul�?

    Je pr�cise que dans mon cas, ReadFile() attend un nombre de caract�re ind�fini et je d�sire r�cup�rer en une lecture l'ensemble de mes donn�es.

    Merci.

    Nicolas

  2. #2
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Bonjour,

    D�sol� de relancer mon message, je me suis � nouveau repench� sur l'utilisation de la fonction SetCommTimeouts et je ne cerne toujours pas la mani�re dont l'utiliser.

    Une fois le timeout r�gl�, quand j'effectue une ReadFile sur le com, il semble que le buffer de r�ception est lue, point final, sans se soucier si d'autres donn�es arrivent.

    La solution unique est elle donc de venir lire plusieurs fois le buffer de r�ception en v�rifiant au pr�alable si on a bien recu de nouvelle donn�es ou il y a t'il une possiblit� de jouer avec le r�glage des timeouts?

    J'ai l'impression que mon soucis vient d'une mauvaise compr�hension de l'utilisation des timeouts...

    Merci

    Nicolas

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par d�faut
    bonjour

    Tu peux mettre un bout de code de ton read
    et de la d�claration de ta com

    cordialement

  4. #4
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut
    Oui je vais faire cela.

    Mais j'y pense, c'est peut �tre du au fait que j'utilise une communication s�rie asynchrone... (Utilisation de la structure OVERLAPPED)

    Et si c'est bien cela, la solution est obligatoirement celle ci?
    Citation Envoy� par moi
    La solution unique est elle donc de venir lire plusieurs fois le buffer de r�ception en v�rifiant au pr�alable si on a bien recu de nouvelle donn�es

  5. #5
    Membre chevronn�
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Par d�faut
    tu peux tr�s bien faire une lecture de ton port sans utiliser de t/o.

    par exemple en win32
    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
     
    memset (bof,0, sizeof (bof));
     
    osReader.hEvent = CreateEvent(NULL, true, false, NULL);
    if (osReader.hEvent == NULL) return false;
     
    if (fWaitingOnRead == false)
    {
    	if (!ReadFile(hComm, bof, READ_BUF_SIZE, &dwRead, &osReader)) 
    	{
    		if (GetLastError() != ERROR_IO_PENDING) return false;
    		else fWaitingOnRead = true;
    	}
    }
     
    puis la gestion des erreurs ou le flag fWaitingOnRead repasse a false s il n y a pas d'erreurs (ou sinon tu vires le flag :P)

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    R�ponses: 8
    Dernier message: 08/06/2005, 15h57
  2. R�ponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    R�ponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    R�ponses: 2
    Dernier message: 04/04/2002, 16h01
  5. R�ponses: 2
    Dernier message: 20/03/2002, 23h01

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