Traduire un code ASCII

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

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

Korman

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

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

Korman

Je pense que ce qu'il lui faut c'est la fonction atoi() ;)

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

Essaye Serial.print(data, BYTE)

Ok merci je vais essayer!

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.

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.

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.

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 = "" ;
           }   
       }  
    
    }  
 
}