Le forum a migré vers l'adresse suivante:

Forum

Masquer ce message

Simple-Duino Forum Index



[Résolu] Construction 'payload' XBee


 
Post new topic   Reply to topic    Simple-Duino Forum Index -> Arduino & Électronique -> Questions
Previous topic :: Next topic  
Author Message
Jex2512
Débutant

Offline

Joined: 24 Feb 2014
Posts: 12
Masculin
Niveau d'éléctronique: Débutant

PostPosted: Wed 26 Mar - 21:20 (2014)    Post subject: [Résolu] Construction 'payload' XBee Reply with quote

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


Last edited by Jex2512 on Thu 27 Mar - 21:34 (2014); edited 4 times in total
Back to top
Admin
Fondateur

Offline

Joined: 12 Apr 2012
Posts: 860
Masculin
Niveau d'éléctronique: Pro

PostPosted: Wed 26 Mar - 22:57 (2014)    Post subject: [Résolu] Construction 'payload' XBee Reply with quote

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
Back to top
Jex2512
Débutant

Offline

Joined: 24 Feb 2014
Posts: 12
Masculin
Niveau d'éléctronique: Débutant

PostPosted: Thu 27 Mar - 18:57 (2014)    Post subject: [Résolu] Construction 'payload' XBee Reply with quote

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&)')
Back to top
Admin
Fondateur

Offline

Joined: 12 Apr 2012
Posts: 860
Masculin
Niveau d'éléctronique: Pro

PostPosted: Thu 27 Mar - 19:37 (2014)    Post subject: [Résolu] Construction 'payload' XBee Reply with quote

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
Back to top
Jex2512
Débutant

Offline

Joined: 24 Feb 2014
Posts: 12
Masculin
Niveau d'éléctronique: Débutant

PostPosted: Thu 27 Mar - 21:34 (2014)    Post subject: [Résolu] Construction 'payload' XBee Reply with quote

  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
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Simple-Duino Forum Index -> Arduino & Électronique -> Questions All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  

Index | Xooit.com free forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB
Propulsé par Simple-Duino