ReadFile rs232

ekinox17 Messages postés 66 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 janvier 2006 - 24 oct. 2005 à 10:21
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 24 oct. 2005 à 11:20
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

ekinox17 Messages postés 66 Date d'inscription jeudi 6 octobre 2005 Statut Membre Dernière intervention 18 janvier 2006
24 oct. 2005 à 10:44
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. :)
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 oct. 2005 à 11:20
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++
0
Rejoignez-nous