Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: examples/UdpClient/UdpClient.ino
- Revision:
- 0:e3fb1267e3c3
- Child:
- 6:f092f8b320ae
diff -r 000000000000 -r e3fb1267e3c3 examples/UdpClient/UdpClient.ino
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/UdpClient/UdpClient.ino Wed Dec 21 16:58:10 2016 +0100
@@ -0,0 +1,108 @@
+/*
+ * UIPEthernet UdpClient example.
+ *
+ * UIPEthernet is a TCP/IP stack that can be used with a enc28j60 based
+ * Ethernet-shield.
+ *
+ * UIPEthernet uses the fine uIP stack by Adam Dunkels <adam@sics.se>
+ *
+ * -----------------
+ *
+ * This UdpClient example tries to send a packet via udp to 192.168.0.1
+ * on port 5000 every 5 seconds. After successfully sending the packet it
+ * waits for up to 5 seconds for a response on the local port that has been
+ * implicitly opened when sending the packet.
+ *
+ * Copyright (C) 2013 by Norbert Truchsess (norbert.truchsess@t-online.de)
+ */
+
+#include <UIPEthernet.h>
+#include "utility/logging.h"
+
+EthernetUDP udp;
+unsigned long next;
+
+void setup() {
+
+ #if ACTLOGLEVEL>LOG_NONE
+ LogObject.begin(9600);
+ #endif
+
+ uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
+
+ Ethernet.begin(mac,IPAddress(192,168,0,6));
+
+ next = millis()+5000;
+}
+
+void loop() {
+
+ int success;
+ int len = 0;
+
+ if (((signed long)(millis()-next))>0)
+ {
+ do
+ {
+ success = udp.beginPacket(IPAddress(192,168,0,1),5000);
+ #if ACTLOGLEVEL>=LOG_INFO
+ LogObject.uart_send_str(F("beginPacket: "));
+ LogObject.uart_send_strln(success ? "success" : "failed");
+ #endif
+ //beginPacket fails if remote ethaddr is unknown. In this case an
+ //arp-request is send out first and beginPacket succeeds as soon
+ //the arp-response is received.
+ }
+ while (!success && ((signed long)(millis()-next))<0);
+ if (!success )
+ goto stop;
+
+ success = udp.write("hello world from arduino");
+
+ #if ACTLOGLEVEL>=LOG_INFO
+ LogObject.uart_send_str(F("bytes written: "));
+ LogObject.uart_send_decln(success);
+ #endif
+
+ success = udp.endPacket();
+
+ #if ACTLOGLEVEL>=LOG_INFO
+ LogObject.uart_send_str(F("endPacket: "));
+ LogObject.uart_send_strln(success ? "success" : "failed");
+ #endif
+
+ do
+ {
+ //check for new udp-packet:
+ success = udp.parsePacket();
+ }
+ while (!success && ((signed long)(millis()-next))<0);
+ if (!success )
+ goto stop;
+
+ #if ACTLOGLEVEL>=LOG_INFO
+ LogObject.uart_send_str(F("received: '"));
+ #endif
+ do
+ {
+ int c = udp.read();
+ #if ACTLOGLEVEL>=LOG_INFO
+ LogObject.write(c);
+ #endif
+ len++;
+ }
+ while ((success = udp.available())>0);
+ #if ACTLOGLEVEL>=LOG_INFO
+ LogObject.uart_send_str(F("', "));
+ LogObject.uart_send_dec(len);
+ LogObject.uart_send_strln(F(" bytes"));
+ #endif
+
+ //finish reading this packet:
+ udp.flush();
+
+ stop:
+ udp.stop();
+ next = millis()+5000;
+ }
+}