Main

Référence : Langage Arduino : [ Mini | Standard | Etendue | Maxi ] Librairies : [ Vue d'ensemble | Synthèse ] Infos : [ Comparaison | Changements ]
Librairie Ethernet : Classe EthernetUDP

parsePacket()


Description

  • Vérifie la présence d'un paquet UDP en réception, et renvoie sa taille. La fonction parsePacket() doit être appelée avant de lire le buffer des données UDP entrantes avec la fonction read().

Syntaxe


taille=udp.parsePacket();

Paramètres

  • udp : un objet EthernetUDP
  • taille : variable de type int

Valeur renvoyée

  • int: la taille du paquet UDP présent en réception
  • La valeur renvoyée est true si la taille du paquet est supérieure à 0.

Exemple



#include <SPI.h>      
#include <Ethernet.h>
#include <EthernetUdp.h>      


byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress ip(192, 168, 1, 177); // ip du shield Ethernet

unsigned int localPort = 8888;      //port local à écouter

// tableaux de caractères pour recevoir des données
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //caractères reçus
char  ReplyBuffer[] = "acknowledged";       // caractères à envoyer

EthernetUDP Udp;

void setup() {

  Ethernet.begin(mac,ip); // initialisation du Shield Ethernet

  Udp.begin(localPort); // initialisation UDP

  Serial.begin(9600);
}

void loop() {
  //si des données sont disponibles, lire le paquet
  int packetSize = Udp.parsePacket();
  if(packetSize)
  {
    Serial.print("Received packet of size ");
    Serial.println(packetSize);
    Serial.print("From ");
    IPAddress remote = Udp.remoteIP();
    for (int i =0; i < 4; i++)
    {
      Serial.print(remote[i], DEC);
      if (i < 3)
      {
        Serial.print(".");
      }
    }
    Serial.print(", port ");
    Serial.println(Udp.remotePort());

    //lit les données dans le tableau de réception
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.println("Contents:");
    Serial.println(packetBuffer);

    // envoie une réponse au port et adresse qui l'a envoyé
    Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
    Udp.write(ReplyBuffer);
    Udp.endPacket();
  }
  delay(10);
}

 

Commentaires utilisateurs

Aucun commentaire


Page d'accueil de la référence Arduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées sur le Forum Arduino ou à l'adresse suivante : support_at_mon-club-elec_point_fr

Le texte original de la référence Arduino est sous licence Creative Commons Attribution-ShareAlike 3.0 . Les exemples de code dans la référence sont dans le domaine public.

La présente traduction française commentée a été réalisée par Xavier HINAULT (2010-2012) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.

Cette page est une traduction de la page originale suivante : http://arduino.cc/en/Reference/EthernetUDPParsePacket