Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
966 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Affichage étrange de données hexa contenues dans un buffer [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Affichage étrange de données hexa contenues dans un buffer [Résolu]

n°1413897
ThibB
Posté le 26-07-2006 à 14:51:35  profilanswer
 

Bonjour tous le monde !
 
Je suis entrain de faire une application en C permettant la communication avec un GPS Bluetooth (j'utilise le port serie virtuel), et j'ai un soucis quand je cherche à afficher ou traiter les données que je recois.
Voila un bout de code qui explique le problème :
 

Code :
  1. int nBytesRead,i;
  2. char buffer[9];
  3.                 if(!ReadCOM(buffer, 9, &nBytesRead)) // Va recevoir nBytesRead octets (normalement 9) et les stocker dans buffer.
  4.                     printf("Problème lecture.\r\n" );
  5.                
  6.                 printf("%d octets lus\n",nBytesRead);
  7.                 for (i=0; i < 9; i++)
  8.                     printf("%.2X",buffer[i]);
  9.                 printf("\n" );
  10.                
  11.                 if (buffer[0] == 0xAA) printf("0xAA -> OK\n" );
  12.                 else printf("0xAA -> KO\n" );
  13.                 if (buffer[1] == 0x55) printf("0x55 -> OK\n" );
  14.                 else printf("0x55 -> KO\n" );
  15.                 if (buffer[8] == 0xCC) printf("0xCC -> OK\n" );
  16.                 else printf("0xCC -> KO\n" );


 
Je recois la trame suivante : 0xAA,0x55,0x02,0x00,0x47,0x00,0x47,0x33,0xCC (je verifie en direct sur un sniffer)
et le programme affiche le texte suivant :

Citation :

9 octets lus
FFFFFFAA55020047004733FFFFFFCC
0xAA -> KO
0x55 -> OK
0xCC -> KO


 
Le compilateur gueule un peu aussi sur les comparaisons sur le premier et le dernier octets :

Citation :

[Warning] comparison is always false due to limited range of data type


 
Donc apparemment le premier et le dernier octet posent problème, une explication ? Pourquoi le premier et le dernier et pas les autres ??
 
Merci d'avance !


Message édité par ThibB le 26-07-2006 à 15:59:08

---------------
Visiter mon site
mood
Publicité
Posté le 26-07-2006 à 14:51:35  profilanswer
 

n°1413925
Elmoricq
Modérateur
Posté le 26-07-2006 à 15:26:05  profilanswer
 

Essaie avec des unsigned char.

n°1413930
ThibB
Posté le 26-07-2006 à 15:33:24  profilanswer
 

Merci pour ta réponse, a première vu ca à résolu mon problème !
Je ne comprend par pas pourquoi le problème ne se posait que sur le premier et le dernier caractère ... Ils sont codés différemment ?


---------------
Visiter mon site
n°1413934
Elmoricq
Modérateur
Posté le 26-07-2006 à 15:36:11  profilanswer
 

Non, mais ils dépassent la plage d'utilisation d'un char signé (un type est signé par défaut, sauf si "unsigned" est précisé).
 
signed char : -127 127
unsigned char : 0 255
(plage d'utilisation minimum définie par la norme)
 
Hex => Dec
0xAA => 170
0xCC => 204
 
D'où problème quand tu utilises des signed char.


Message édité par Elmoricq le 26-07-2006 à 15:36:44
n°1413949
ThibB
Posté le 26-07-2006 à 15:51:55  profilanswer
 

Oki c'est noté, merci encore :)


---------------
Visiter mon site

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Affichage étrange de données hexa contenues dans un buffer [Résolu]

 

Sujets relatifs
[RESOLU] formule francais/anglais[resolu] pb execution requete
[Résolu] Redirection si url utilisé ne convient pas[Résolu] [C# .net] Récupérer des valeurs dans un GridView
passer un hexa comme char[RESOLU] insérer par valeur
[Résolu] Récupérer le chemin d'un fichier que l'on upload[Résolu] Pb utilisation VLOOKUP
affichage dynamique d'un calcul dans une balise (newbie inside)[RESOLU] Petit soucis de cookies
Plus de sujets relatifs à : Affichage étrange de données hexa contenues dans un buffer [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR