Convertir un tableau de code ASCII reçu par le port COM [Résolu]

cs_arb 40 Messages postés lundi 18 février 2002Date d'inscription 5 novembre 2012 Dernière intervention - 26 janv. 2009 à 07:02 - Dernière réponse : SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 26 janv. 2009 à 07:48
3
Merci
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)

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de SharpMao
Meilleure réponse
cs_arb 40 Messages postés lundi 18 février 2002Date d'inscription 5 novembre 2012 Dernière intervention - 27 janv. 2009 à 00:46
3
Merci
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)

Merci cs_arb 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de cs_arb
WishhhMaster 327 Messages postés mardi 17 février 2004Date d'inscription 10 avril 2010 Dernière intervention - 26 janv. 2009 à 08:05
0
Merci
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
Commenter la réponse de WishhhMaster
WishhhMaster 327 Messages postés mardi 17 février 2004Date d'inscription 10 avril 2010 Dernière intervention - 26 janv. 2009 à 08:08
0
Merci
Oh désolé pour le double post. J'avais pas refresh
Commenter la réponse de WishhhMaster
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 27 janv. 2009 à 13:30
0
Merci
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)
Commenter la réponse de SharpMao

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.