w5Ethernetclient
Dependencies: EthernetInterface mbed-rtos mbed
Revision 0:3527566e031c, committed 2016-12-01
- Comitter:
- steveshun
- Date:
- Thu Dec 01 14:11:05 2016 +0000
- Commit message:
- Exercise 5: Ethernet
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EthernetInterface.lib Thu Dec 01 14:11:05 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/EthernetInterface/#4d7bff17a592
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Dec 01 14:11:05 2016 +0000 @@ -0,0 +1,119 @@ +/*------------------------------------------------------------------------------------*/ +/* Ethernet UDP Client (to be used with Ethernet_UDP_server) */ +/*------------------------------------------------------------------------------------*/ + +/*--COMPANY-----AUTHOR------DATE------------REVISION----NOTES-------------------------*/ +/* NXP mareikeFSL 2015.12.23 rev 1.0 initial */ +/* */ +/*------------------------------------------------------------------------------------*/ +/* This "Hello World" program is used in conjunction with the Ethernet_UDP_server */ +/* program. It communicates between two FRDM-K64F boards via the Ethernet protocol. */ +/* To use this program, you need to do the following: */ +/* - Connect an Ethernet cable between two FRDM-K64F boards (a crossover cable */ +/* is not required). */ +/* - Flash one board with Ethernet_UDP_client and the other with */ +/* Ethernet_UDP_server */ +/* - [optional] If you would like to see the "Hello World" output on your */ +/* monitor, install and open a terminal. Tera Term is used in the Wiki for */ +/* this program. */ +/*------------------------------------------------------------------------------------*/ + + +/*--INCLUDES----------------------------------------------------------------------------*/ +#include "mbed.h" +#include "EthernetInterface.h" + + +/*--DEFINES-----------------------------------------------------------------------------*/ + + + +/*--CONSTANTS---------------------------------------------------------------------------*/ +const int PORT = 7; + +static const char* SERVER_IP = "192.168.1.101"; //IP of server board +static const char* CLIENT_IP = "192.168.1.102"; //IP of client board +static const char* MASK = "255.255.255.0"; //mask +static const char* GATEWAY = "192.168.1.1"; //gateway + + +/*--INITS-------------------------------------------------------------------------------*/ +Serial pc(USBTX, USBRX); //create PC interface +EthernetInterface eth; //create ethernet +UDPSocket sock; //creat Ethernet socket +Endpoint server; //create endpoint + +DigitalOut red(LED_RED); //debug led +DigitalOut green(LED_GREEN); //debug led + + +/*--VARIABLES---------------------------------------------------------------------------*/ +int n; //size of received message +char in_buffer[1]; //create receive buffer +char counter[1] = {0}; //sample send buffer + + +/*--FUNCTION DECLARATIONS---------------------------------------------------------------*/ +void init_usb(void); //initializes pc.printf if required +void init_eth(void); //initializes Ethernet +void end_eth(void); //closes Ethernet socket +int main(void); //main + + +/*--FUNCTION DEFINITIONS----------------------------------------------------------------*/ + +/*****************************************************************************INIT_USB***/ +void init_usb(void) +{ + pc.baud(9600); //baud + +} //end init_usb() + +/*****************************************************************************INIT_ETH***/ +void init_eth(void) +{ + eth.init(CLIENT_IP, MASK, GATEWAY); //set up IP + eth.connect(); //connect ethernet + pc.printf("\nCLIENT - Client IP Address is %s\r\n", eth.getIPAddress()); //get client IP address + + sock.init(); //initialize socket + + server.set_address(SERVER_IP, PORT); //set address of server + +} //end init_eth() + +/******************************************************************************END_ETH***/ +void end_eth(void) +{ + sock.close(); //close socket + eth.disconnect(); //close Ethernet + +} //end end_eth() + +/*********************************************************************************MAIN***/ +int main(void) +{ + red = 0; //client + green = 1; + + init_usb(); //initialize the PC interface + init_eth(); //initialize the Ethernet connection + + while(true) //repeat forever + { + pc.printf("\nCLIENT - Sending '%i' to server %s\r\n", counter[0], SERVER_IP); //print message to send + sock.sendTo(server, counter, sizeof(counter)); //send message + + pc.printf("CLIENT - Waiting for UDP packet...\r\n"); //wait for message + + n = sock.receiveFrom(server, in_buffer, sizeof(in_buffer)); //receive message from server + + in_buffer[n] = '\0'; //add \0 to end of message + pc.printf("CLIENT - Received '%i' from server %s\r\n", in_buffer[0], SERVER_IP); //print message received + + counter[0] = (counter[0] + 1)%11; //only count up to 10, then reset to 0 + + wait(1); //wait 1 second + } + +} //end main()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Thu Dec 01 14:11:05 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#dfc27975e193
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Thu Dec 01 14:11:05 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/87f2f5183dfb \ No newline at end of file