Go Down

Topic: communication série.. erreur syntaxe ? (Read 686 times) previous topic - next topic

xa4

Salut à tous !

je viens de recevoir ma board arduino, je suis aux anges  :)

j'ai juste un petit soucis lorsque je récupère des données reçues par le port série et que je veux effectuer un test dessus. J'ai pris l'exemple fourni serialCom_string et je souhaite vérifier ce que le device me répond.

voici la boucle principale du code:

Code: [Select]

void loop () {
 //simple feedback from Arduino
 Serial.println("at");
 
 //read the serial port and create a string out of what you read
 readSerialString(serInString);
 
 delay(1000);
 
 if( isStringEmpty(serInString) == false) {
   if (serInString == "SYNTAX ERROR"){

     Serial.println("Arduino recorded that you said: ");
     printSerialString(serInString);
     Serial.println();
   }
 }
 
 Serial.println();  
 //slows down the visualization in the terminal
 delay(2000);
}


le device me répond bien SYNTAX ERROR mais la condition reste fausse (lorsque j'enlève la condition, il me marque bien Arduino recorded that you said: SYNTAX ERROR).. la syntaxe doit poser problème.. vous avez une idée ?

merci d'avance !
xavier

nrolland

#1
May 15, 2007, 05:21 pm Last Edit: May 15, 2007, 05:23 pm by nrolland Reason: 1
je pense que tu compares des pointeurs la, pas les valeurs

essaye ca :

#include <string.h>

if(strcmp(serInString,"SYNTAX ERROR")==0)

plus d'info sur http://www.commentcamarche.net/cpp/cppstring.php3

nicolas

xa4

Hello nrolland, merci pour ta réponse !
malheureusement cela ne fonctionne pas non plus. Mais je me suis débrouillé en comparant directement le code ascii des charactères enregistrés dans le tableau. ex: je vérifie que le device me répond OK en écrivant if(serInString[0] == 79 && serInString[1] == 75)

Le but de mon petit programme est de se connecter à mon téléphone mobile en bluetooth et d'allumer une led lorsque mon telephone reçoit un appel. (Pour info, lorsque l'on est connecté en DUN sur le téléphone et qu'il sonne, il envoie toute les secondes a peu près le message "RING")

Mon problème est que j'arrive à lire et comparer les réponses du téléphone lorsque je lui envoie une commande, mais je n'arrive pas à lire le message "RING" qui est envoyé spontanément...

voici le code en entier, si par hasard quelqu'un a eu le même problème et a trouvé le moyen de le contourner

Code: [Select]

char serInString[10];
bool connected = false;
bool phoneConnected = false;

void readSerialString (char *strArray) {
   int i = 0;
   if(Serial.available()) {    
      while (serialAvailable()){            
         strArray[i] = Serial.read();
         i++;
      }
   }      
}

void setup() {
 Serial.begin(9600);
 Serial.println();
 Serial.println("AT");
}

void loop () {
 readSerialString(serInString);
 
 if (!connected && serInString[0] == 79 && serInString[1] == 75){  //answer = OK ?
   connected = true;
 }
 
 if (connected && !phoneConnected){
   Serial.println("CALL 00:19:63:1e:0a:01 1103 RFCOMM");
   phoneConnected = true;
 }
 
 if (connected && phoneConnected){
   readSerialString(serInString);
   if (serInString[0] == 82) digitalWrite(13,HIGH); //check if phone is ringing ?
 }
 
 delay(2000);
}


Milki

Mes pauvres compétences m'empèchent de répondre au problème de programmation.
Mais ne serait-il pas possible de tout bêtement mettre une photo-resistance sur un port analo du l'arduino comme ceci ?

Le téléphone s'allumant au moment où il sonne, par contre il ya une latence avant qu'il ne s'éteigne.
J'imagine que c'est pas du tout la réponse que tu attends. Mais au cas où, ca peut servir de bonne dépanne pour détecter si un téléphone sonne.

Go Up