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 :

Problème avec readFile


Sujet :

Windows

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème avec readFile
    Bonjour à tous,

    Encore une question sur la lecture du port série. Je n’arrive pas à comprendre ce qui bloque.

    Mon programme n’a aucun intérêt sinon de comprendre qq notions apprises. Je cherche à lire le port série en mode asynchrone et afficher les données reçues. Pour cela, la fonction main crée deux threads : un pour la lecture des données et un autre pour l’affichage.

    Bref mon problème se trouve sur le thread de lecture du port série :

    Je commence par créer un événement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    osReader.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
    si tout est ok je lis les données :

    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
    var = ReadFile(mySerialInterface.m_hCOM, rcvFrame, bytesToRead, &dwRead, &osReader);
    if(!var)	
    {
                 if(GetLastError() != ERROR_IO_PENDING)     // read not delayed?
    	{	
    		// Error in communications; report it.
    		return 0;
    	}
    	else
    	{
    		fWaitingOnRead = 1;
    	}
    }
    
    if(fWaitingOnRead)
    {
                 dwRes = WaitForSingleObject(osReader.hEvent, READ_TIMEOUT);
    	switch(dwRes)
    	{
    		….
                  }
                  ….
    }
    Le port com est bien ouvert en mode FILE_FLAG_OVERLAPPED. Donc si j’ai bien compris la fonction ReadFile ne se bloque pas et si l’opération n’est pas terminée elle renvoie false. C’est ensuite à nous de tester l’objet du retour avec GetLastError(). Dans mon cas et c’est bien là mon problème ReadFile retourne toujours True alors que le nombre de caractères lus (dwRead) est égal à 0.

    Ça fait un bon moment que je tourne en rond, si qq pouvait me donner qq pistes à suivre je vous remercie.

    Bonne fin de journée à tous

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai trouvé, il s'agissait d'une mauvaise initialisation de la structure COMMTIMEOUTS.

    A bientôt

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

Discussions similaires

  1. Problème avec osgDB/ReadFile
    Par Alceides dans le forum OpenSceneGraph
    Réponses: 3
    Dernier message: 12/10/2010, 23h04
  2. Petit problème avec la fonction readfile
    Par laurentSc dans le forum Langage
    Réponses: 4
    Dernier message: 25/10/2009, 14h37
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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