Convertir un tableau de code ASCII reçu par le port COM

Résolu
cs_arb Messages postés 40 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 5 novembre 2012 - 26 janv. 2009 à 07:02
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 - 27 janv. 2009 à 13:30
Bonjour

J'ai une appli qui me permet de recevoir des valeurs (entier sur 32 bits) envoyés par un petit microcontroleur. Je récupère les codes ASCII, mais je n'arrive pas à les convertir pour retrouver mon nombre entier sur 32 bits et aussi à l'afficher dans un TextBox :
pour le nombre 2, par exemple je reçois 0x30,0x30,0x30,0x32. j'ai donc besoin de faire la conversion ensuite; j'ai tout essayé, passé par un tableau, string, etc.... rien à faire...
Merci de votre aide
Arb

5 réponses

cs_arb Messages postés 40 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 5 novembre 2012 4
27 janv. 2009 à 00:46
Merci pour vos réponses et je rajoute :



byte[] input = new byte[] { 0x30, 0x30, 0x30, 0x32 };

            StringBuilder sb = new StringBuilder();
            foreach (byte b in input)
                sb.Append((char)b);

            int result = int.Parse(s.ToString());

MaTextBox.text = Convert



.ToInt32(

"0x"
+ result, 16)).ToString() pour afficher la valeur entière (ex si result = 0x22, affichage de 34 dans MaTextBox)
3
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
26 janv. 2009 à 07:48
Hello,

Le port COM, t'envoie des bytes, il te faut les transformer en char pour pouvoir construir une string :

            byte[] input = new byte[] { 0x30, 0x30, 0x30, 0x32 };

            StringBuilder sb = new StringBuilder();
            foreach (byte b in input)
                sb.Append((char)b);

            int result = int.Parse(s.ToString());

Et voilà le travail !

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
1
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
26 janv. 2009 à 08:05
Salut,

Si je comprends bien, pour le nombre 2 il t'envoie en fait les caractères pour 0002.

Essaye ça
byte[] arr = new byte[] { 0x30, 0x30, 0x30, 0x32 };
string s = new string(ASCIIEncoding.ASCII.GetChars(arr));
int nombre = Convert.ToInt32(s);

Sinon tu peux convertir les int retournés par le microcontrôleur en char et les ajouter un par a une string et convertir la string en entier.  Sinon tu peux jouer directement avec les caractères ASCII et calculer le nombre ASCII directement
0
WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
26 janv. 2009 à 08:08
Oh désolé pour le double post. J'avais pas refresh
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
27 janv. 2009 à 13:30
Hello,

Tu n'as pas besoin de faire la conversion, la variable result contient la bonne valeur.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0