pyr0123
Messages postés48Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention13 juillet 2010
-
23 janv. 2008 à 18:29
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
24 janv. 2008 à 17:22
Salut,
Je code un échange de trames (t'chat) par port série entre 2 PC en C++ .net VStudio 2k5.
J'envoie la chaine 'toto' du PC1 vers PC2, avec l'hyperterminal sur mon port COM1 je recois bien la chaine.
Par contre mon programme en C++ pour recevoir mon 'toto' ne fonctionne pas totalement.
J'utilise la fonction ReadChar() du port série :
textBox1->Text = serialPort1->ReadChar();
qui d'apres la msdn doit me renvoyer un char.
Or quand j'affiche, j'ai '116' qui s'affiche, qui correspond au code ASCII de la lettre 't'.
Comment passer du code décimal de 't' à son caractere ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 23 janv. 2008 à 22:13
Faut commencer par le C, ça nous évitera de voir des questions à la VB sur cppfrance.
La valeur du caractère (de l'octet) EST ce caractère, il n'y a rien à convertire.
pyr0123
Messages postés48Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention13 juillet 2010 24 janv. 2008 à 14:37
Merci pour vos aides.
atoi() ne fonctionne pas, 'atoi' : cannot convert parameter 1 from 'int' to 'const char *'
De toute facon d'apres ce que j'ai lu, atoi() converti vers un int, or moi je veux un char..
BruNews, je ne vois pas trop comment ton code pourrait m'aider.. :(
Je ne comprends pas pourquoi serialPort1->ReadChar() me renvoie un int alors que la doc précise que c'est un char ?!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 24 janv. 2008 à 14:59
N'utilise pa atoi j'avais pas lu ta question jusqu'au bout..
Quelque soit le type de ta variable, celle ci ne pourra stoquer que des chiffres la seul chose qui diférencie un char d'un short ou d'un int c'est sa taille 1, 2 ou 4 octets, sur un char tu pourra donc stoquer un chiffre allant de -127 a 127 ou de 0 a 255 pour un unsigned char..
ReadChar te renvoie une valeur entre 0 a 255, tu na plus qua creer ta chaine comme ca:
BYTE Str[16];
Str[0] = serialPort1->ReadChar();
Str[1] = serialPort1->ReadChar();
...
test[15] = 0;
MessageBox(0, Str, "Str=", 0);
pyr0123
Messages postés48Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention13 juillet 2010 24 janv. 2008 à 15:33
En fait mon problème c'est l'affichage dans ma textbox
j'aurais un printf() je mettrai un %c et c'est bon mais là avec ma textBox je ne sais pas comment faire.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 24 janv. 2008 à 15:42
Quand je dis qu'il manque les bases, mais alors TOUTES les bases.
Il devrait être interdit de toucher à l'interprété sans examen de C sinon voila à quoi ça mène.
textBox1->Text = Str[0] ;
c'est une chaine qui doit être nevoyée à l'affichage, pas un octet. Une chaine se compose par force d'un terminateur NULL = 0.
pyr0123
Messages postés48Date d'inscriptionlundi 28 juillet 2003StatutMembreDernière intervention13 juillet 2010 24 janv. 2008 à 15:55
Oui je n'ai pas toutes les bases, c'est pour ca que j'apprend..
Je l'ai fait en console avec un printf() et %c, ca marchait bien.
Je veux juste maintenant utiliser ma textBox...
résultat, en VB.NET ils obtiendront la même daube en 3 clics sans se burner avec la syntaxe de fou de ce faux C++.
Resultat de la fonction: goto chomage;