Bonsoir, pour mon projet domotique où j utilise nrf24l01 comme moyen de communication entre mes modules j'ai souvant un soucis avec uint16_t qui n'est pas en char ou un int. Aujourd'hui je souhaite envoyer des donnés à mes différents modules via le web.
je récupères les informations dans l'url :
serveur_v2.ino: In function 'void on_a_un_client()':
serveur_v2:227: error: no matching function for call to 'RF24NetworkHeader::RF24NetworkHeader(String&)'
lorsque je mets 1 ou X à la place de module_id mon code fonctionne. Mais je n'arrive pas à convertir le string en uint16_t pour l'utiliser dans le header. J'ai un niveau très bas en C et là je bloque vraiment.
merci d'avance
Voir là: toInt() - Arduino Reference
Evidemment avant de faire la conversion il faut isoler la valeur à convertir dans une nouvelle chaîne par un appel à substring.
Je n'ai pas réussi a utiliser StringToInt mais j'ai trouvé une autre solution. j'y suis presque, je n'arrive pas a faire une boucle pour stocker intégralité du msg, quand je test je n'ai une suite de chiffre comme résultat
void on_a_un_client_id()
{
if (client.connected()) {
while (client.available()) {
if( client.find("GET /") ) {
while(client.findUntil("module", "\n\r")){
int cible = client.parseInt();
char msg = client.read();
char msg2 = client.read();
Serial.print(" module cible : ");
Serial.println(cible);
Serial.print(" message ");
Serial.print(msg);
Serial.println(msg2);
/***/
RF24NetworkHeader header(cible);
bool ok = network.write(header,&msg,sizeof(msg));
if (ok)
Serial.println("ok.");
else
Serial.println("failed.");
/***/
}
}
page_web();
delay(1);
client.stop();
} // fin du client available
} // --- fin if client connected
}//Fin de la foncti
salut, il te manque des trucs pour la gestion du GET
EthernetClient client = server.available();
if (client) {
String readString = String(60);
byte lenreadstr = 60;
boolean clb = true;
while (client.connected()) {
if (client.available()) {
char c = client.read(); //lit le caractère reçu
if (readString.length() < lenreadstr) readString += c; //créé le message reçu
if (c == '\n' && clb ) { //teste que le message reçu est complet
if (readString.indexOf("GET /?") > 0) {
//ici on a le message complet, on peut l'analyser
interprete(readString);
}
//ici on affiche la page HTML
//fin de page envoyée
client.stop();
readString = "";
break;
}
//teste le caractère reçu pour savoir ou en est le message recu
if (c == '\n') clb = true;
else if (c != '\r') clb = false;
} //fin if client available
} // fin while client connect