Per altre informazioni scrivi a fabriziocaldarelli@negusweb.it
ParsePacket UDP freeze with Arduino
Da Programmazione Software.
Versione del 2 gen 2015 alle 16:09 di Fabrizio Caldarelli (Discussione | contributi)
Using intensively udp read with Arduino, you'll see that Arduino freeze if you send big packet, > 100 bytes very quickly.
Try this python code to generate data (1000 bytes) to send quickly (every 0.1 seconds):
# Send UDP broadcast packets MYPORT = 8888 import sys, time from socket import * from random import choice from string import lowercase n = 1000 s = socket(AF_INET, SOCK_DGRAM) s.bind(('', 0)) s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) led = 0 data = "".join(choice(lowercase) for i in range(n)) while 1: led ^= 1; s.sendto(data, ('<broadcast>', MYPORT)) time.sleep(0.1)
parsePacket of EthernetUDP will be frozen in flush() method to dispatch all remaining bytes.
But if in setup() method of your sketch you'll insert these lines:
// To parse correctly udp packets pinMode(4,OUTPUT); digitalWrite(4,HIGH);
Arduino will not frozen, because it'll handle correctly data queue.