Probléme de lecture d une trame [Résolu]

Signaler
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 mai 2008
-
SAKingdom
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
-
Bonjour,
j'ai crée un programme pouvant effectuer l nevoie d une trame et la reception . mais dans ma fonction lecture je reste bloqué a mon instruction ReadFile je ne comprend pas pourquoi en effet si je ne recoit pas de carractére je voudrai que ma fonction se finisse quand même et pouvoir re executé mafonction écriture dans le main. voici ma fonction lecture:
void lecture()
{
char buffer[1024];
DWORD nbRead;
int D,i;
i=0;
for(i=0;i<1023;i++)//intialisation du buffer a 0
{buffer[i]=0;
}
ReadFile(hCom, buffer, sizeof(buffer), &nbRead, NULL);


printf("R:");


for(i=0;i<nbRead;i++)
{


printf(" %02X",buffer[i]);


}Sleep(1000);
}

7 réponses

Messages postés
111
Date d'inscription
mercredi 2 février 2005
Statut
Membre
Dernière intervention
5 août 2011
1
Salut,


pour ne pas avoir les caractères FF, je pense qu'il faut déclarer le buffer en unsigned char.


 
Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
1
Salut,
Il faut que tu dises que l'entree doit pas etre bloquante, asynchrone donc. Puis change les parametres de ton descripteur hCom.

Une autruche ne se cuit pas aux petits lardons.
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

#include <string.h>
memset(buffer, 0, sizeof(buffer));

si tu tiens à garder ton for() alors change 1023 par 1024 pour pouvoir mettre _tout_ le buffer à zéro ... pour le reste du problème, moi je sais pas

~(.:: NitRic ::.)~
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 mai 2008

ok merci beaucoup
 j'ai resolu un de mes probléme maintenant je ne suis plus bloqué voila ma nouvelle fonction lecture:
void lecture()
{
char buffer[1024];
DWORD nbRead;
int D,i;
i=0;
nbRead=0;
for(i=0;i<1024;i++)//intialisation du buffer a 0
{buffer[i]=0;
}
memset(buffer, 0, sizeof(buffer));


ReadFile (hCom,buffer,sizeof(buffer),&nbRead,NULL);




printf("R:");


for(i=0;i<nbRead;i++)
{
printf(" %02X",buffer[i]);
Sleep(100);


}
printf("\n");
Sleep(500);
}

Mais j'ai un probléme lors de l'affichage : je veux afficher en héxa par groupe de 2 octets mais de temps je recois ca:



E:01 03 02 00 00 03 04 73
R: 01 FFFFFF83 03 01 31
E:02 03 02 00 00 03 04 40
R: 02 FFFFFF83 08 FFFFFFB0 FFFFFFF6
comment retirer ces FFF lors de l'affichage?
(e: emission de ma trame et r = reception)
Messages postés
18
Date d'inscription
mercredi 9 mai 2007
Statut
Membre
Dernière intervention
19 mai 2008

MERCI BEAUCOUP CA MARCHE!!!!!
Messages postés
402
Date d'inscription
mardi 1 mai 2001
Statut
Membre
Dernière intervention
15 août 2011

si tu utilises le for(), pas de memset(), si tu utilises le memset() alors pas de for(), fais un choix parce que là t'initialise « buffer » deux fois ...

~(.:: NitRic ::.)~
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
12
Remplir buffer de 0 est inutile ici peut-importe la façon.

C++ (@++)<!--