il faut faire quelques adaptations à ce que j'ai dit ci dessus
- passer l'adresse de la structure
- faire un cast du type pour mettre une const char*
Modifications tapées ici, à tester
// FOURNISSEUR DE DONNEES
#include <WiFi.h>
#include <AsyncTCP.h>
const uint16_t serverPort = 7050;
AsyncServer server(serverPort); // écoute le port tcp 7050
const char* ssid = "Livebox-XXX";
const char* password = "XXXXXXXXXXXXXXXX";
struct t_message { // Infos a envoyer
unsigned long compteur;
unsigned long chrono;
} monMessage;
void reception(void* arg, AsyncClient* client, void *data, size_t len) {
Serial.println(F("Demande "));
if (client->space() > sizeof(monMessage) && client->canSend()) {
monMessage.compteur++;
monMessage.chrono = millis();
client->add((const char*) &monMessage, sizeof(monMessage));
client->send();
}
}
void gestionClient(void* arg, AsyncClient* client) {
Serial.print(F("Nouveau client: ")); Serial.println(client->remoteIP());
client->onData(&reception, NULL); // attacher le callback appeler reception() quand on reçoit des données
}
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("Serveur: Erreur connexion WiFi\n");
while (true) yield();
}
Serial.print("Serveur IP: "); Serial.println(WiFi.localIP());
server.onClient(gestionClient, &server);
server.begin();
}
void loop() {}
il faut bien sûr mettre la structure aussi côté réception et modifier l'impression du message pour imprimer le contenu de la structure (vous devriez voir un compteur qui augmente et la valeur de millis())
