reception de donnees avec transformation d'un type float

bonjour

j’ai fait 2 croquis pour des jeenodes v6. Mon problème, je pense vient du tableau que j’ai en réception.

j’ai déclaré dans le croquis d’envoi

[/code]
typedef struct {
int room; ////code 1 : rheothe code 2: test room name
int tempsolar; // Temperature reading
int humiditysolar; // Actually humidity reading
float co2solar; //c02 reading
} PayloadSolar;

PayloadSolar Solartx;

Le problème en réception vient de là

[code]Solartx = *(PayloadSolar*) rf12_data;
    int i;
    
    for (int i= 0; i < (sizeof(Solartx)/sizeof(int))-1; i++)
    {
      Serial.write(Solartx[i]);

j’ai l’erreur

receiverheorthe_ino.ino: In function ‘void loop()’:
receiverheorthe_ino:59: error: no match for ‘operator’ in 'Solartx
si je commence à comprendre, c’est que le code n’arrive pas à avoir la “longueur” exacte. j’ai fouillé sur le net mais je suis top débutant. je pensais prendre la valeur qui pose problème c02solar et la multiplier afin d’en faire un int mais je ne vois pas comment faire.
je joins mes 2 croquis à tout hasard merci
nono
receiverheorthe_ino.ino (1.96 KB)
dht_demo2.ino (2.82 KB)

PayloadSolar n’est pas un tableau mais une structure. Tu ne peux donc pas la manipuler avec .
Il faut accéder aux éléments de la structure individuellement. Ou passer par un pointeur intermédiaire pour changer le type.

void loop() {
  int *ptr;
  
//--------------------------------------------------------------------------------------------------
// receive payload data via RF
//--------------------------------------------------------------------------------------------------
 if (rf12_recvDone())
   {
    rf12_sleep(-1);     //wake up RF module
    Solartx = *(PayloadSolar*) rf12_data;
    int i;
    ptr = (int *)&Solartx;
    for (int i= 0; i < (sizeof(Solartx)/sizeof(int))-1; i++)
    {
      Serial.write(ptr[i]);
      
    }
}
   rf12_sleep(0);    //put RF module to sleep
}