Bonjour J-M-L
Le pire est que, il y a longtemps, j'ai étudié tout ça
, je refais une version TCP.
Concernant ESP-NOW, j'ai des soucis de compilation:
62 | esp_now_register_recv_cb(OnDataRecv);
| ^~~~~~~~~~
| |
| void (*)(const uint8_t*, const uint8_t*, int) {aka void (*)(const unsigned char*, const unsigned char*, int)}
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]```
Le programme:
#include <esp_now.h>
#include <WiFi.h>
const char nom[10]="Master";
uint8_t broadcastAddress[2][6] = {
{0x2C, 0xF4, 0x32, 0x15, 0x52, 0x22}, //station0
{0xA0, 0x20, 0xA6, 0x08, 0x20, 0xD9} //station1
};// REPLACE WITH RECEIVER MAC ADDRESS
// Structure example to send data
// Must match the receiver structure
typedef struct struct_message {
char a[32];
int b;
float c;
String d;
bool e;
} struct_message;
struct_message myData;
struct_message dataRcv;
unsigned long previousTime=0;
// callbacks for sending and receiving data
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print(F("\r\nMaster packet sent:\t"));
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");
}
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
memcpy(&dataRcv, incomingData, sizeof(dataRcv));
Serial.print("\r\nBytes received: ");
Serial.println(len);
Serial.print("From slave: ");
Serial.println(dataRcv.a);
Serial.println();
}
void setup() {
// Init Serial Monitor
Serial.begin(115200);
// Set device as a Wi-Fi Station
WiFi.mode(WIFI_STA);
// Init ESP-NOW
if (esp_now_init() != ESP_OK) {
Serial.println(F("Error initializing ESP-NOW"));
return;
}
Serial.print(F("Reciever initilized : "));
Serial.println(WiFi.macAddress());
// Define callback functions
esp_now_register_send_cb(OnDataSent);
esp_now_register_recv_cb(OnDataRecv);
// Register peer
esp_now_peer_info_t peerInfo;
peerInfo.channel = 0;
peerInfo.encrypt = false;
memcpy(peerInfo.peer_addr, broadcastAddress[0], 6);
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
memcpy(peerInfo.peer_addr, broadcastAddress[1], 6);
if (esp_now_add_peer(&peerInfo) != ESP_OK){
Serial.println("Failed to add peer");
return;
}
}
void loop() {
if((millis() -previousTime)>5000){
// Set values to send
strcpy(myData.a, nom);
myData.b = random(1, 20);
myData.c = 1.2;
myData.e = false;
// Send message via ESP-NOW
myData.d = "Slave0";
esp_err_t result0 = esp_now_send(broadcastAddress[0], (uint8_t *) &myData, sizeof(myData));
myData.d = "Slave1";
esp_err_t result1 = esp_now_send(broadcastAddress[1], (uint8_t *) &myData, sizeof(myData));
previousTime=millis();
}
}
La solution que j'ai trouvé sur le net est de faire un downgrade de la carte ESP32, or le downgrade ne se termine pas ![]()
J'ai vu ici que vos aviez réussi à compiler sans erreur, avec quelle version?
Merci par avance.
jpbbricole