Go Down

Topic: IPAddress et udp.write (Read 1 time) previous topic - next topic

Pac2Kro

Je cherche à faire des "udp.write" avec des variables de type IPAddress.

Code: [Select]
IPAddress monIP(10,0,0,1);

  udp.write(monIP,4); //ne compile pas

  for (i=0;i<4;i++)
  {
    udp.write(&monIP[i], 1); //compile et fonctionne
  }


Il y a t'il une autre manière de faire sans utiliser la boucle "for"?

skywodd

Bonjour,

Faut lire la doc ! Parfois c'est utile ;)

http://arduino.cc/en/Reference/EthernetUDPWrite
Write() attend un octet (ou un tableau d'octet + taille) en paramètre, pas une IP !

C'est beginPaquet() qui prend une IP en paramètre :
http://arduino.cc/en/Reference/EthernetUDPBeginPacket

La 2éme syntaxe marche car l'opérateur IPAddress[] est défini pour retourner un byte correspondant à un morceau de l'ip (index 0 à 3).
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pac2Kro

Bonjour,

Et merci pour ta réponse hyper rapide.
Je n'ai pas du donner assez de détail dans ma question ou je l'ai peut être mal formulée.
c'est bien monIP que je veux envoyer sous forme de 4 bytes dans la partie data de la trame udp.
C'est donc bien udp.write que je dois utiliser. Je souhaitais juste alléger le code (si c'est possible).

Code: [Select]
udp.beginPacket(monBroadcast, udpPort);
  for (i=0;i<4;i++)
  {
    udp.write(&monIP[i], 1);
  }
  udp.endPacket();

skywodd


c'est bien monIP que je veux envoyer sous forme de 4 bytes dans la partie data de la trame udp.

Ok, désolé j'avais pas compris :smiley-mr-green:


C'est donc bien udp.write que je dois utiliser. Je souhaitais juste alléger le code (si c'est possible).

Une boucle bien utilisé c'est pas dégueulasse, ton code actuel est trés bien ;)

Si tu veut le rendre plus compact :

Code: [Select]
udp.beginPacket(monBroadcast, udpPort);
for (byte i = 0; i < 4; ++i)
  udp.write(monIP[i]);
udp.endPacket();


Après tu peut pas faire mieux ...
Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pac2Kro

Merci.

Code: [Select]
udp.beginPacket(monBroadcast, udpPort);
for (byte i = 0; i < 4; ++i)
  udp.write(&monIP[i]); //sans le & ça ne compile pas
udp.endPacket();


Quote
udp.write(&monIP);


Par contre, je n'ai pas compris pourquoi il fallait mettre un pointeur.

Go Up