Go Down

Topic: Mandare un pacchetto UDP (Read 717 times) previous topic - next topic

acik

Apr 06, 2013, 10:48 pm Last Edit: Apr 07, 2013, 07:17 pm by acik Reason: 1
Ho bisogno di mandare pacchetti UDP verso il PC.
Ho preso l' esempio UDPSendReceiveString e l' ho ripulito...
Non funziona, non invia nulla.

Se pero' rimetto la linea "Udp.parsePacket();" ed invio qualsiasi cosa dal PC all'Arduino, questo si mette a trasmettere !
Perche' ?

Arduino UNO R3 + EthernetShield R3 (Wiznet5100)

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>


byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xE0};
IPAddress ip(192, 168, 90, 170);
IPAddress remote(192, 168, 90, 140);
int counter = 0;

EthernetUDP Udp;

void setup(){
 Ethernet.begin(mac,ip);
 Udp.begin(9000);
}


void loop() {
   Udp.parsePacket();
   Udp.beginPacket(Udp.remoteIP(), 9000);
   Udp.write(counter);
   Udp.endPacket();
   delay(1000);
   counter ++;
}




lesto

spiega meglio il fatto dell'istruzione "Udp.parsePacket();", che succede se non lo metti e se lo metti
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

acik

#2
Apr 08, 2013, 10:48 pm Last Edit: Apr 08, 2013, 11:01 pm by acik Reason: 1

spiega meglio il fatto dell'istruzione "Udp.parsePacket();", che succede se non lo metti e se lo metti


Dal Playground ufficiale leggo che Udp.parsePacket(); va a leggere il pacchetto ricevuto e ne restituisce la lunghezza (nel caso sia stato ricevuto un pacchetto)
E' scritto che bisogna usarlo (ovviamente) prima di ogni lettura (ricezione) di dati.

Da nessuna parte pero' c'e' scritto che bisogna usarlo prima di inviare dati.



Il fatto e' che se non ricevo dei dati, non posso inviarli. Sembrerebbe che la libreria sia fatta per poter RISPONDERE e non INVIARE. Ovvero si puo' solo inviare dei dati a chi te ne ha inviati in precedenza.

Go Up