Modifications

Sauter à la navigation Sauter à la recherche
2 356 octets ajoutés ,  21 novembre 2016 à 13:38
aucun résumé de modification
Ligne 452 : Ligne 452 :  
</syntaxhighlight>
 
</syntaxhighlight>
   −
=== Code de l'emetteur ==
+
=== Code de l'émetteur ==
   −
Si vous utilisez l'émetteur, ce code attendra 1 seconde, puis transmettra un paquet avec "Hello World #" et un numéro de paquet incrémental.
+
Si vous utilisez l'émetteur, ce code attendra 1 seconde, puis transmettra un paquet avec "Hello World #" et un numéro de paquet incrémenté à chaque envoi.
    +
<syntaxhighlight lang="python">
 +
void loop()
 +
{
 +
  delay(1000); // Wait 1 second between transmits, could also 'sleep' here!
 +
  Serial.println("Transmitting..."); // Send a message to rf95_server
 +
 
 +
  char radiopacket[20] = "Hello World #      ";
 +
  itoa(packetnum++, radiopacket+13, 10);
 +
  Serial.print("Sending "); Serial.println(radiopacket);
 +
  radiopacket[19] = 0;
 +
 
 +
  Serial.println("Sending..."); delay(10);
 +
  rf95.send((uint8_t *)radiopacket, 20);
 +
 +
  Serial.println("Waiting for packet to complete..."); delay(10);
 +
  rf95.waitPacketSent();
 +
</syntaxhighlight>
 +
 +
c'est assez simple, le ""delay"" fixe un temps d'attente. (vous pouvez remplacer celui avec un script de mise en veille de faible puissance).
 +
 +
Ensuite, il génère le paquet et ajoute un nombre qui augmente à chaque transmission (TX).
 +
Ensuite, il appelle simplement la fonction '''send()''' pour transmettre les données, et passe en paramètre le tableau de données et la longueur des données.
 +
Notez qu'il ne fait aucun adressage ou sous-réseau - si vous voulez vous assurer que le paquet va à une radio particulière, vous devrez peut-être ajouter un identifiant / adresse octet dans le message !
 +
Ensuite, vous appelez waitPacketSent() pour attendre que la transmission radio soit terminée.
 +
Vous ne recevrez pas un accusé de réception automatique, à partir de l'autre radio, à moins qu'il ne sache renvoyer un paquet. C'est un peu comme le protocole 'UDP' en réseau- les données sont envoyées, mais ce n'est pas certain qu'il a été reçu! En outre, il n'y aura pas de nouvelles tentatives automatiques en cas d'échec sauf si vous prévoyez une fonction dédiée qui attendra une réponse avec un timeout pour un nouvel envoi si celle-ci n'est pas reçue dans un temps imparti.
 +
 +
=== Code du récepteur ===
 +
 +
Le Récepteur a le même code de configuration, mais la boucle est différente:
 +
 +
<syntaxhighlight lang="python">
 +
void loop()
 +
{
 +
  if (rf95.available())
 +
  {
 +
    // Should be a message for us now 
 +
    uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
 +
    uint8_t len = sizeof(buf);
 +
   
 +
    if (rf95.recv(buf, &len))
 +
    {
 +
      digitalWrite(LED, HIGH);
 +
      RH_RF95::printBuffer("Received: ", buf, len);
 +
      Serial.print("Got: ");
 +
      Serial.println((char*)buf);
 +
      Serial.print("RSSI: ");
 +
      Serial.println(rf95.lastRssi(), DEC);
 +
</syntaxhightlight>
          
{{FEATHER-32U4LORA-TRAILER}}
 
{{FEATHER-32U4LORA-TRAILER}}
704

modifications

Menu de navigation