Simple code for comunication via TCP between the mbed and PC.

Dependencies:   EthernetInterface SimpleSocket mbed-rtos mbed

Fork of SimpleSocketExamples by Hiroshi Yamaguchi

Committer:
numeral369
Date:
Wed Dec 17 16:06:00 2014 +0000
Revision:
1:016774025718
Parent:
0:6dc3cfd058c6
A simple code for comunication via TCP between the Mbed and a PC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yamaguch 0:6dc3cfd058c6 1 #include "SimpleSocket.h"
yamaguch 0:6dc3cfd058c6 2
yamaguch 0:6dc3cfd058c6 3 void ntpclient() {
yamaguch 0:6dc3cfd058c6 4 char *NTP_SERVER = "pool.ntp.org";
yamaguch 0:6dc3cfd058c6 5 printf("ntp server = %s\n", NTP_SERVER);
yamaguch 0:6dc3cfd058c6 6
yamaguch 0:6dc3cfd058c6 7 while (true) {
yamaguch 0:6dc3cfd058c6 8 DatagramSocket datagram;
yamaguch 0:6dc3cfd058c6 9 char buf[48] = {0x23}; // 00100011 LI(0), Version(4), Mode(3: Client)
yamaguch 0:6dc3cfd058c6 10 datagram.write(buf, sizeof(buf));
yamaguch 0:6dc3cfd058c6 11 datagram.send(NTP_SERVER, 123);
yamaguch 0:6dc3cfd058c6 12
yamaguch 0:6dc3cfd058c6 13 //datagram.setTimeout(5.0);
yamaguch 0:6dc3cfd058c6 14 if (datagram.receive() > 0) {
yamaguch 0:6dc3cfd058c6 15 if (datagram.read(buf, sizeof(buf)) > 0) {
yamaguch 0:6dc3cfd058c6 16 unsigned long seconds = 0;
yamaguch 0:6dc3cfd058c6 17 for (int i = 40; i <= 43; i++)
yamaguch 0:6dc3cfd058c6 18 seconds = (seconds << 8) | buf[i];
yamaguch 0:6dc3cfd058c6 19 set_time(time_t(seconds - 2208988800ULL));
yamaguch 0:6dc3cfd058c6 20 char timestamp[16];
yamaguch 0:6dc3cfd058c6 21 time_t jstime = time(NULL) + 9 * 3600;
yamaguch 0:6dc3cfd058c6 22 strftime(timestamp, sizeof(timestamp), "%m/%d %X", localtime(&jstime));
yamaguch 0:6dc3cfd058c6 23 printf("Time: %s\n", timestamp);
yamaguch 0:6dc3cfd058c6 24 break;
yamaguch 0:6dc3cfd058c6 25 }
yamaguch 0:6dc3cfd058c6 26 } else {
yamaguch 0:6dc3cfd058c6 27 printf("no answer\n");
yamaguch 0:6dc3cfd058c6 28 wait(1.0);
yamaguch 0:6dc3cfd058c6 29 }
yamaguch 0:6dc3cfd058c6 30 }
yamaguch 0:6dc3cfd058c6 31 }