Go Down

Topic: Traduire un code ASCII (Read 1 time) previous topic - next topic

LyMax

Bonjour,

je voudrais savoir comment traduire un code ASCII avec un programme Arduino? Je reçois toute une chaîne de caractéres ASCII via un module GPRS et j'aimerais récupérer l'information de ce code en traduisant le code ASCII en écriture normale.

Merci d'avance pour votre aide

Korman

L'ASCII est l'écriture normale. Où est le problème? Quelle partie ne fonctionne pas?

Korman

LyMax

Oui je suis d'accord mais le but de mon application est de lire le code ASCII pour pouvoir afficher le message reçue avec mon système. Je reçois bien les données sous forme ASCII et j'aimerais lire le message en traduisant les caractères ASCII pour obtenir des lettres et des chiffres.

Merci

Korman

As-tu un exemple de ce que tu reçois et ce que tu veux afficher?

Korman

B@tto

Je pense que ce qu'il lui faut c'est la fonction atoi()  ;)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

LyMax

Je reçois une chaîne comme ca:
45
67
82
54
53
...
Et c'est un message type SMS donc j'aimerais bien transcrire le code en "phrase".

Merci

erlik

#6
Nov 29, 2010, 08:27 pm Last Edit: Nov 29, 2010, 08:28 pm by erlik Reason: 1
Essaye Serial.print(data, BYTE)

LyMax

Ok merci je vais essayer!

B@tto

Quote
Essaye Serial.print(data, BYTE)


Ca c'est pour écrire sur le port série, si j'ai bien compris Lymax reçoit des données en ASCII de son module GPRS. Je suppose que tu reçoit des donneés d'un tel et que suivant le contenu du message tu veux que l'arduino réagisse à des mots clés ? Si c'est bien ça c'est atoi() qui fera ton bonheur.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

fdufnews

#9
Nov 30, 2010, 05:43 pm Last Edit: Nov 30, 2010, 05:45 pm by fdufnews Reason: 1
Si j'en crois les valeurs que LyMax a données un peu plus haut c'est du texte qu'il reçoit (enfin pour être honnête c'est ambiguë).

Dans ce cas il suffit de mettre le texte dans un tableau. D'ajouter un 0 à la fin et de faire un Serial.print.

Par contre, il pourrait y avoir quelques problèmes avec l'encodage des caractères spéciaux.

Guyt

#10
Nov 30, 2010, 08:34 pm Last Edit: Nov 30, 2010, 08:35 pm by Guyt54 Reason: 1
Bonjour LyMax,

Je connais rien aux GPRS, mais en faisant une petite recherche avec google, j'ai cru comprendre que tes données, c'est une suite de caractères imprimables (code >= 32) , suivie d'un caractère de contrôle (probablement CR, LF ou CR et LF).

Histoire de te donner un air d'aller, voici un petit programme qui reçoit des caractères du port sériel, les cumule et les renvoie en écho lorsqu'il reçoit le caractère de contrôle en question.

Tu pourras le tester en utilisant le petit terminal de l'environnement d'Arduino. N'oublie pas de mettre l'option qui ajoute un "Carriage Return) à la chaine tranmise.

Code: [Select]

void setup()
{
 Serial.begin(9600) ;
}

String chaine ;

void loop()
{
 char car ;
 if (Serial.available())
   {
     car = Serial.read() ;
     if (car >= 32) // espace est le premier caractère ASCII imprimable
       {
         chaine = chaine + car ;
       }
     else // c'est un caractère de contrôle
      {
        if (String.length() > 0) // il y a une chaine et elle est complète
          {
             Serial.println(chaine) ; // on la renvoie en echo
             chaine = "" ;
          }  
      }  
   
   }  

}

Go Up