Bonjour,

Envoyé par
AutrementDit
le code suivant est-il correct ( je ne peux pas le tester) :
1 2 3 4 5 6 7
|
unsigned char buffer[150];
lire(1,1, buffer);
for( int i = 0; i< 10; i++)
{
cout << " data " << i << " = " << buffer[i] <<endl;
} |
Il est correct dans le sens où il compilera et ne plantera pas. Maintenant, ça m'étonnerai qu'il affiche ce que tu souhaites réellement afficher. Ce qu'il va afficher, c'est la représentation ascii de la valeur de ton unsigned char. Je suppose que ce que tu souhaites afficher, c'est sa valeur, et non sa représentation ascii. Si c'est bien le cas, il faudra faire quelque chose dans le style:
cout << " data " << i << " = " << std::hex << (int) buffer[i] << std::dec;

Envoyé par
AutrementDit
comment connaitre le nombre de données récupérées pour éviter que buffer[i] pointe sur autre chose que les données lues.
3 solutions:
-> la fonction lire() renvoie le nombre réel d'octets lus.
-> la fonction lire() rempli un vector<unsigned char> (ou vector<BYTE>, c'est pareil), plutôt qu'un unsigned char[] (res. BYTE[] )
-> utiliser un byte de "fin de trame": une valeur réservée qui indique qu'il n'y a plus de données pertinentes après.

Envoyé par
AutrementDit
le même problème se pose pour l'écriture d'un bloc avec la fonction
ecrire (int,int, BYTE* buffer)
Même problème, mêmes solutions 

Envoyé par
AutrementDit
que contient vraiment buffer? est-il un tableau d'entiers?
Ca dépend du niveau auquel tu te place. Si tu te place au niveau matériel, ce ne sont que des 0 et des 1, des bits quoi. Si tu monte d'un niveau, c'est à dire, à quoi correspondent ces 0 et ces 1, là ça dépend de ce que tu lis. C'est à dire qu'il faut interpréter ces 0 et 1 (un BYTE ou unsigned char c'est un octet, donc 8 bits), et la façon d'interpréter ces données dépend du protocole (règles de communications entre celui qui envoie et celui qui reçois les données). Par exemple, si tu lis des int sur 32 bits, alors il te faudra "assembler" tes BYTES par groupe de 4 et interpréter ces "paquets" de façon adéquate.
Hope it helps.
Partager