Bonjour,
sous ce titre un peu abscons, voici ma question :
j'ai récemment posté une question sur la possibilité de recevoir sur le même récepteur les données de plusieurs émetteurs émettant sous le protocole LoRa.
Sur vos conseils, j'ai identifié mes émetteurs en leur adjoignant un numéro et en envoyant un tableau formé du numéro et de la donnée pertinente. Le récepteur unique reçoit alors l'ensemble des données des divers émetteurs et pour diriger les données vers les bons ports UDP, j'ai utilisé la commande switch case, donnant quelque chose comme ci-dessous :
switch (Numero) {
case 1:
localport = 8192;
sendUdp();
break;
case 2:
localport = 8191;
sendUdp();
break;
}
SendUdp() étant la fonction dirigeant les données vers le serveur local.
Tout est OK sans interférence...
Mais étant légèrement pinailleur, je suis en train de "nettoyer" mon code et pour ce faire j'ai simplifié le code récepteur pour qu'il ne détecte qu'un émetteur.
J'ai donc remplacé le code ci-dessus par celui-ci :
if (Numero = 1) {
sendUdp();
}
Et ça ne marche pas, le récepteur continue à recevoir alternativement les données des deux émetteurs (sur le même port défini en entête).
J'ai donc remplacé la condition ci-dessus par celle-ci :
if (Numero != 2) {
sendUdp();
}
Et là ça marche, je ne comprends pas car je ne vois pas la différence entre dire "si l'émetteur c'est le (1) envoyer les données" et la condition "si l'émetteur ce n'est pas le (2), envoyer les données"...
où est-ce que je me trompe ?
A toutes fins utiles, voici le bout de code global que j'utilise :
int const localport = 6504;
void setup()
{......}
void loop()
{....
if (packetSize) {
// Reception d'un paquet
Serial.println("paquets recus '");
// lecture des paquets
while (LoRa.available()) {
LoRa.readBytes((uint8_t *)&dataR, packetSize);
StrPoids += dataR[0];
poids = StrPoids.toFloat();
NumRuche = dataR[1];
Serial.println("Numero de ruche :");
Serial.println (NumRuche);
} // Fin de condition "Tant que LoRa est disponible"
//Transmission UDP
if (NumRuche != 2) {
sendUdp();
}
} // Fin de condition "Réception de paquets"
....}
Merci d'avance