Je ne comprends pas le problème ici, merci à ceux qui prendront le temps de me répondre/me donner une solution
// Inclure les librairies
#include <esp_now.h>
#include <WiFi.h>
float maValeurRecue;
void quand_donnees_Recues(const uint8_t *mac, const uint8_t *data_reception, int taille) {
memcpy(&maValeurRecue, data_reception, sizeof(maValeurRecue));
Serial.print("Bytes received: ");
Serial.println(taille);
Serial.print("valeur reçue: ");
Serial.println(maValeurRecue);
Serial.println();
}
void setup() {
Serial.begin(1200);
WiFi.mode(WIFI_STA);
if (esp_now_init() != ESP_OK) {
Serial.println("Erreur d'initialisation ESP-NOW");
return;
}
// Une erreur s'affiche ici
esp_now_register_recv_cb(quand_donnees_Recues);
}
void loop() {
}
Compilation error: invalid conversion from 'void ()(const uint8_t, const uint8_t*, int)' {aka 'void ()(const unsigned char, const unsigned char*, int)'} to 'esp_now_recv_cb_t' {aka 'void ()(const esp_now_recv_info, const unsigned char*, int)'} [-fpermissive]
Depuis une mise à jour de la librairie ESP-NOW (début 2024), on doit maintenant utiliser esp_now_recv_info_t * comme premier paramètre.
Essayes ça:
void quand_donnees_Recues(const esp_now_recv_info_t *recvInfo, const uint8_t *data_reception, int taille) {
memcpy(&maValeurRecue, data_reception, sizeof(maValeurRecue));
// Récupère l'adresse MAC à partir de recvInfo
char macStr[18];
snprintf(macStr, sizeof(macStr), "%02X:%02X:%02X:%02X:%02X:%02X",
recvInfo->src_addr[0], recvInfo->src_addr[1], recvInfo->src_addr[2],
recvInfo->src_addr[3], recvInfo->src_addr[4], recvInfo->src_addr[5]);
Serial.print("Données reçues de : ");
Serial.println(macStr);
Serial.print("Bytes reçus : ");
Serial.println(taille);
Serial.print("Valeur reçue : ");
Serial.println(maValeurRecue);
Serial.println();
}
1 Like
Merci ça à marcher !
Tous les tutos que je trouvais utilisaient l'ancienne version @axelmaux
La modification de la signature de la fonction de rappel esp_now_register_recv_cb()
a été introduite avec la version 3.x du ESP32 Arduino Core, publiée en novembre 2023. Cette mise à jour aligne l'API Arduino sur l'ESP-IDF (le framework officiel d'Espressif), en remplaçant le paramètre const uint8_t *mac_addr
par un pointeur vers une structure esp_now_recv_info_t
.
Détails de la mise à jour
- Ancienne signature (jusqu'à la version 2.x) :
void onDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len);
- Nouvelle signature (à partir de la version 3.x) :
void onDataRecv(const esp_now_recv_info_t *recvInfo, const uint8_t *data, int data_len);
Cette modification permet d'accéder à des informations supplémentaires, telles que l'adresse MAC source (recvInfo->src_addr
) et d'autres métadonnées.
1 Like
@akyles_arduino de rien
j'ai eu le même soucis il y a pas longtemps.