Pages: [1]   Go Down
Author Topic: Traduire un code ASCII  (Read 1377 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Central Europe
Offline Offline
Edison Member
*
Karma: 6
Posts: 1220
Use the Source, Luke.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Korman
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Central Europe
Offline Offline
Edison Member
*
Karma: 6
Posts: 1220
Use the Source, Luke.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Korman
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3190
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je pense que ce qu'il lui faut c'est la fonction atoi()  smiley-wink
Logged


0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 90
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Essaye Serial.print(data, BYTE)
« Last Edit: November 29, 2010, 02:28:19 pm by erlik » Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok merci je vais essayer!
Logged

Ales
Offline Offline
Faraday Member
**
Karma: 29
Posts: 3190
Do or DIY
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3025
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
« Last Edit: November 30, 2010, 11:45:03 am by fdufnews » Logged

Montréal
Offline Offline
Newbie
*
Karma: 0
Posts: 48
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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 = "" ;
           }  
       }  
    
    }  
 
}
« Last Edit: November 30, 2010, 02:35:31 pm by Guyt54 » Logged

Pages: [1]   Go Up
Jump to: