Le forum a migré vers l'adresse suivante:

Forum

Masquer ce message

Simple-Duino Index du Forum



[Résolu] Construction 'payload' XBee


 
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Questions
Sujet précédent :: Sujet suivant  
Auteur Message
Jex2512
Débutant

Hors ligne

Inscrit le: 24 Fév 2014
Messages: 12
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Mer 26 Mar - 21:20 (2014)    Sujet du message: [Résolu] Construction 'payload' XBee Répondre en citant

PublicitéSupprimer les publicités ?
Bonjour tout le monde,


Travaillant sur un projet avec des modules XBee, un module coordinateur doit envoyer une chaîne de caractère (tableau de char) à des end device. 


Voici mon code :



 font=Verdana] /*
Programme du coordinateur des volets roulants




Révisions    :
  22/03/14  v01  Création du programme




*/




#include <XBee.h>




// Déclaration de l'objet XBee
XBee xbee = XBee();








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








void loop() {   
  
  EnvoiOrdre();
  
  delay(5000);
}




void EnvoiOrdre(){
  
  // Construction du message
  char payload[] = "CMD*1*1*3*";
  
  // Tests à effectuer, et en focntion des tests -> construction du texte de la payload...
  // for()
  //{
  //...  constrction payload
  //}
  
  // Déclarations XBee  
  XBeeAddress64 addr64 = XBeeAddress64(0x00000000, 0x0000FFFF);
  ZBTxRequest zbTx = ZBTxRequest(addr64, (uint8_t*) (payload) , sizeof(payload));
  ZBTxStatusResponse txStatus = ZBTxStatusResponse();
  
   // Envoi du paquet
  xbee.send(zbTx);




  // Attente 500ms après envoi de la trame pour vérifier le retour d'info
  if (xbee.readPacket(500)) {
    Serial.println("Lecture d'un paquet");




    // Réception d'un paquet de réponse       
    if (xbee.getResponse().getApiId() == ZB_TX_STATUS_RESPONSE)
    {
      Serial.println("Reception d'un paquet de reponse");
      // Récupération du paquet de réponse
      xbee.getResponse().getZBTxStatusResponse(txStatus);




      // Le paquet recu est un "Success"
      if (txStatus.getDeliveryStatus() == SUCCESS) {Serial.println("Paquet 'SUCCESS'");}
      // Le paquet recu est un "Not Success"
      else {Serial.println("Paquet 'NOT SUCCESS'");}
    }
  }
  // Réception d'un paquet d'erreur
  else if (xbee.getResponse().isError()) {Serial.println("Reception d'un paquet d'erreur");}
  else {Serial.println("Reception d'un paquet inconnu");} 
  
  
}


Le programme tel qu'il est ci dessus fonctionne parfaitement, mais cela ne répond pas entièrement à mes attentes. Ici le payload ("CMD*1*1*3*") est initialisé en même temps que la déclaration, alors que je souhaite le construire moi même plus tard, en faisant des concaténations de caractères.


Pour infos : "CMD*1*1*3" veut dire : Ordre de commande*Volet 1*Demande de montée*Pendant 3 secondes*.
Je dois donc pouvoir en fonction de l'analyse d'un planning et de la vérification de l'heure actuelle construire cette chaîne de caractère et la stocker dans le tableau de char avant de l'envoyer.




Un "simple" quelque chose du genre me suffirait : 
 
Code:
char payload[] = "CMD*" + "1*" + "1*" + "3*"; 







Mais cela ne fonctionne pas et je ne sais pas pourquoi


C'est ici que je bloque.. 




Merci à l'avance


Cordialement


Dernière édition par Jex2512 le Jeu 27 Mar - 21:34 (2014); édité 4 fois
Revenir en haut
Admin
Fondateur

Hors ligne

Inscrit le: 12 Avr 2012
Messages: 860
Masculin
Niveau d'éléctronique: Pro

MessagePosté le: Mer 26 Mar - 22:57 (2014)    Sujet du message: [Résolu] Construction 'payload' XBee Répondre en citant

Alors...
Tu pourrais reposter ton code sans aucune balise ??
Je le mettrais en forme ensuite mais là le bbcode s'est incrusté dedans et c'est devenus illisible...


Pour la concaténation de variables de type char, il faut se tourner vers les variables de type string.
en gros, elles permettent tout ce que font les variables de type char mais avec la concaténation, la recherche de caractères, etc...
Voir la page Arduino.cc pour plus d'infos
http://arduino.cc/en/Reference/StringObject
____________________________
http://simple-duino.com
Revenir en haut
Jex2512
Débutant

Hors ligne

Inscrit le: 24 Fév 2014
Messages: 12
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Jeu 27 Mar - 18:57 (2014)    Sujet du message: [Résolu] Construction 'payload' XBee Répondre en citant

Merci pour la réponse. J'ai essayé de passer par un string mais je n'ai pas réussi. Je ne vois pas pourquoi ce bout de code ci-dessous ne fonctionne pas :


  String frame = "";
  String fr1 = "CMD";
  String fr2 = "*1*1*3*";
  frame.concat(fr1, fr2);
  frame.toCharArray(payload, 11);


Il me met une erreur sur l'avant dernière ligne (no matching function for call to 'String::concat(String&, String&)')
Revenir en haut
Admin
Fondateur

Hors ligne

Inscrit le: 12 Avr 2012
Messages: 860
Masculin
Niveau d'éléctronique: Pro

MessagePosté le: Jeu 27 Mar - 19:37 (2014)    Sujet du message: [Résolu] Construction 'payload' XBee Répondre en citant

http://arduino.cc/en/Tutorial/StringAdditionOperator
y'a pas réellement de fonction pour additionner tes string.
En faite, tu fais juste comme ça:
string chaineFinale = chaine1 + chaine2


Mais l'exemple d'Arduino.cc te l'expliquera mieux que moi je pense
____________________________
http://simple-duino.com
Revenir en haut
Jex2512
Débutant

Hors ligne

Inscrit le: 24 Fév 2014
Messages: 12
Masculin
Niveau d'éléctronique: Débutant

MessagePosté le: Jeu 27 Mar - 21:34 (2014)    Sujet du message: [Résolu] Construction 'payload' XBee Répondre en citant

  Ca y est j'ai trouvé une solution. En fait j'avais déjà essayé la concaténation chaine1 + chaine2 mais cela ne fonctionnait pas


Voici el code qui fonctionne :


  String frame = "";
  String fr1 = "CMD";
  String fr2 = "*1*1*3*";
  frame = fr1 + String(fr2);

  frame.toCharArray(payload, 11);



Merci de l'aide
Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 04:13 (2017)    Sujet du message: [Résolu] Construction 'payload' XBee

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Simple-Duino Index du Forum -> Arduino & Électronique -> Questions Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB
Propulsé par Simple-Duino