[QST] Problème de conversion de char[] en char

Bonjour,

J'ai besoin d'utiliser un variable tableau char en une variable char complète

en gros je reçois une chaîne de caractère via un rf433, et je dois pouvoir la traitée sur une autre fonction..

blablabla...

char msg[64];

// RF433 

byte message[VW_MAX_MESSAGE_LEN];
byte messageLength = VW_MAX_MESSAGE_LEN;

if (vw_get_message(message, &messageLength))
{
 for (int i = 0; i < messageLength; i++)
 {
 msg += String(message[i]) ;  // <--- je dois sortir de cette boucle avec la chêne de caractère "msg" complète


 }
 NEW_DATA = true;
}

// DATA IN //
if(NEW_DATA)
{
     NEW_DATA = false;
     if(DEBUG_MODE) Serial.println(msg);  
 
     if (strcmp(strtok(msg, " "), "SET") == 0)  // <-- Le message reçu doit être tester ici
     { 

blablabla...

Merci :slight_smile:

On ne peut pas dire que tu es très clair.
Qu'est-ce que tu entends par "char complète". Une variable de type char c'est juste un caractère.

Tu chercherais pas plutôt à copier message dans msg?

Bonjour,

Tu reçois déjà un tableau d'octets (bien sur pour peu que tu ais envoyé une chaine)
Tu peux l'utiliser tel quel. Comme ce sont des octets et non ces char (ce qui est presque la même chose), in suffit de le caster en char.

  byte message[VW_MAX_MESSAGE_LEN + 1];
  byte messageLength = VW_MAX_MESSAGE_LEN;

  if (vw_get_message(message, &messageLength))
  {
    message[messageLength] = 0; // précaution marque la fin de la chaine
    if (DEBUG_MODE) Serial.println((char *)message);

    if (strcmp(strtok((char *)message, " "), "SET") == 0)  // <-- Le message reçu doit être tester ici
    {
    }
  }

Merci des réponses, en gros "message[x]" peu être utiliser en "message" tous simplement ?

du genre :

 for (int i = 0; i < messageLength; i++)
 {
     Serial.print(message[i])) ;
 }

c'est le même que

Serial.println(message);

?

Oui, si message se termine par \0 qui est le caractère de fin d'une chaine en C/C++, et que message soit un char[].

Ok magnifique, merci beaucoup a tous ! :slight_smile:

hmmmmm

 error: array type 'char [64]' is not assignable
                msg = message;
                ~~~ ^

? :smiley:

Le message est explicite: tu ne peux pas assigner une valeur à un tableau de char de cette manière.

Il faut utiliser strcpy ou memcpy ...

ou plutôt strncpy qui prévient les débordements de tableau.