ReadFile rs232

Signaler
Messages postés
66
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
18 janvier 2006
-
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
Salut a tous,

J'ai un petit problème, j'envoie un requête rs232 et ensuite je
recupere son retour pour mesurer une valeur sur le periph ... enfin bref

le fait est que je reçoit mes valeur dans un char buffer[256]

et j'aimerai l'afficher dans un une textbox en gros il faut qu eje
recupere la valeur d'un element du tableau et que je le cast en un type
decimal sachant que cest de l'hexadecimal que je reçoit .Par exemple,
je reçoit dans mon buffer a l'adresse 4 et 5 du buffer

B8 0B. Mais dans ma variable buffer : a quoi ressemble cette valeur
etant donner que je l'ai declarer entant que char ?j'ai essayer ceci:
AfxMessageBox(buffer[4]); mais en fait cela me fait une exception. j'ai
essayer aussi ceci: AfxMessageBox((CString)buffer[4]); mais la je
reçoit le caractere correspondant a la valeur ASCII de buffer[4]

Alors sil vous plait aider moi a afficher cette valeur en Hexadecimal.

2 réponses

Messages postés
66
Date d'inscription
jeudi 6 octobre 2005
Statut
Membre
Dernière intervention
18 janvier 2006

Rectification

je viens de decouvrir a quoi cela ressemblai mais il me reste toujours un probleme ...

if(buffer[0]== '\xaa' )

AfxMessageBox("UP");

else

AfxMessageBox("DOWN");

donc voila mes valeur de mon buffer sont de la forme '\x00' jusqu'a '\xff'

la question suivante est : Comment je fait pour la convertir en int ?

car je vais devoir l'affichai dans un fichier texte et dans une
interface MFC, merci de votre aide. je posterai ma progression ici pour
aider ceux qui ont le meme probleme que moi. :)
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
chaine hexa vers int:
DWORD __stdcall HexaToDecimal(const char* pszHexa)
{ DWORD ret 0, t 0, n = 0;
const char *c = pszHexa;
while(*c && (n < 16)) {
if((*c >= '0') && (*c <= '9')) t = (*c - '0');
else if((*c >= 'A') && (*c <= 'F')) t = (*c - 'A' + 10);
else if((*c >= 'a') && (*c <= 'f')) t = (*c - 'a' + 10);
else break;
n++; ret *= 16; ret += t; c++;
if(n >= 8) break;
}
return ret;
}

ciao...
BruNews, MVP VC++