Hola!
Soy nuevo en este foro, así que si no es el lugar adecuado para esta pregunta, decidme sin problema.
Comento un poco el problema que tengo:
Estoy intentando enviar y recibir via udp con un Ethernet shield conectado directamente a mi placa arduino Mega 2560.
Tengo un programa ejecutable que simula lo que esta conectado al arduino.
El problema esta en que cuando recibo el paquete 0x00, el arduino deja de recibir el resto de bytes que estaban en esa trama de comunicaciones, como se puede ver en las siguientes imagenes:
En las imagenes "1" y "2" están el programa que simula la parte con la que se comunica arduino, en estas imagenes, no se envía el 0x00 y se puede ver que todo lo que se envía en la imagen 1 (programa simulador), se recibe en la imagen 2 (Monitor serie arduino).
imagen 1
imagen 2
En las imagenes "3" y "4" se ve como se añade a mitad de trama el 0x00, y en el monitor serie de arduino ya no se recibe nada mas en esa trama de comunicaciones.
imagen 3
imagen 4
Y aqui el fragmento de codigo que uso para la recepcion de paquetes via udp, es bastante parecido al que viene de ejemplo en la web de arduino:
void Envio_Datos_Ethernet() {
// if there's data available, read a packet
int packetSize = Udp.parsePacket();
if (val == 0){ // Descomentar esta parte para que rule solo cada vez que se envie un dato desde el robot
// if (val==0) { // Descomentar esta parte para que rule de seguido
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());
// read the packet into packetBufffer
Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
Serial.println("Contents:");
Serial.println(packetBuffer);
// send a reply to the IP address and port that sent us the packet we received
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write(Read_Array,36); // Sustituir 36 por una variable llamada n que cambie en funcion del tamaño que quiero enviar/ recibir
Udp.endPacket();
}
delay(10);
}
Muchas gracias de antemano.