Zoltan Hudak
/
TcpClient_ENC28J60
Simple TCP/IP Client using the UIPEthernet library for ENC28J60 Ethernet boards.
main.cpp
- Committer:
- hudakz
- Date:
- 2017-06-30
- Revision:
- 2:5656f7efd7c7
- Parent:
- 1:4e4b811a7f9b
- Child:
- 3:9c32e3375fc5
File content as of revision 2:5656f7efd7c7:
/* * Simple TcpClient using the UIPEthernet library for ENC28J60 Ethernet boards. * */ #include "mbed.h" #include "UIPEthernet.h" #include "UIPServer.h" #include "UIPClient.h" Serial pc(USBTX, USBRX); #if defined(TARGET_LPC1768) UIPEthernet uIPEthernet(p11, p12, p13, p8); // mosi, miso, sck, cs #elif defined(TARGET_NUCLEO_F103RB) || defined(TARGET_NUCLEO_L152RE) || defined(TARGET_NUCLEO_F030R8) \ || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_L053R8) \ || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_F072RB) \ || defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F070RB) \ || defined(TARGET_KL25Z ) || defined(TARGET_KL46Z) || defined(TARGET_K64F) || defined(TARGET_KL05Z) \ || defined(TARGET_K20D50M) || defined(TARGET_K22F) \ || defined(TARGET_NRF51822) \ || defined(TARGET_RZ_A1H) UIPEthernet uIPEthernet(D11, D12, D13, D10); // mosi, miso, sck, cs #endif // MAC address must be unique within the connected network. Modify as appropriate. const uint8_t MY_MAC[6] = { 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }; EthernetClient client; int main() { const unsigned long MAXTIME = 5; // Connection timeout time unsigned long t = 0; unsigned long timeOut = 0; const IPAddress SERVER_IP(192, 168, 1, 33); // Change as appropriate. const uint16_t SERVER_PORT = 10001; float pi = 3.1416F; // some data to be sent to the server uint8_t *data = reinterpret_cast<uint8_t*>(&pi); #define DHCP 1 // if you'd like to use static IP address comment out this line #if defined(DHCP) pc.printf("Searching for DHCP server..\r\n"); if(uIPEthernet.begin(MY_MAC) != 1) { pc.printf("No DHCP server found.\r\n"); pc.printf("Exiting application.\r\n"); return 0; } pc.printf("DHCP server found.\r\n"); #else // IP address must be unique and compatible with your network. const IPAddress MY_IP(192, 168, 1, 181); // Change as appropriate. uIPEthernet.begin(MY_MAC, MY_IP); #endif IPAddress localIP = uIPEthernet.localIP(); pc.printf("Local IP = %s\r\n", localIP.toString()); while(1) { if(time(NULL) > timeOut) { timeOut = time(NULL) + MAXTIME; pc.printf("Connecting to TCP/IP server ..\r\n"); if(client.connect(SERVER_IP, SERVER_PORT)) { pc.printf("Server connected.\r\n"); pc.printf("Sending some data to server:\r\n"); client.write(data, sizeof(pi)); for(int i = 0; i < sizeof(pi); i++) pc.printf("0x%x ", data[i]); pc.printf("\r\n"); pc.printf("Awaiting message from server:\r\n"); while(client.available() == 0) { if(time(NULL) > timeOut) { pc.printf("Connection time out.\r\n"); client.stop(); pc.printf("Disconnected from server.\r\n"); break; } } if(client.connected()) { pc.printf("Message received from server:\r\n"); int size; while((size = client.available()) > 0) { uint8_t* msg = (uint8_t*)malloc(size); size = client.read(msg, size); for(int i = 0; i < size; i++) pc.printf("0x%x ", msg[i]); pc.printf("\r\n"); free(msg); } client.stop(); pc.printf("Disconnected from server.\r\n"); } } else { pc.printf("Failed to connect to server\r\n"); } } } }