Zoltan Hudak
/
TcpClient_ENC28J60
Simple TCP/IP Client using the UIPEthernet library for ENC28J60 Ethernet boards.
main.cpp@2:5656f7efd7c7, 2017-06-30 (annotated)
- Committer:
- hudakz
- Date:
- Fri Jun 30 20:18:02 2017 +0000
- Revision:
- 2:5656f7efd7c7
- Parent:
- 1:4e4b811a7f9b
- Child:
- 3:9c32e3375fc5
Updated.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hudakz | 0:5e91bb901022 | 1 | /* |
hudakz | 0:5e91bb901022 | 2 | * Simple TcpClient using the UIPEthernet library for ENC28J60 Ethernet boards. |
hudakz | 0:5e91bb901022 | 3 | * |
hudakz | 0:5e91bb901022 | 4 | */ |
hudakz | 0:5e91bb901022 | 5 | |
hudakz | 0:5e91bb901022 | 6 | #include "mbed.h" |
hudakz | 0:5e91bb901022 | 7 | #include "UIPEthernet.h" |
hudakz | 0:5e91bb901022 | 8 | #include "UIPServer.h" |
hudakz | 0:5e91bb901022 | 9 | #include "UIPClient.h" |
hudakz | 0:5e91bb901022 | 10 | |
hudakz | 0:5e91bb901022 | 11 | Serial pc(USBTX, USBRX); |
hudakz | 0:5e91bb901022 | 12 | |
hudakz | 0:5e91bb901022 | 13 | #if defined(TARGET_LPC1768) |
hudakz | 2:5656f7efd7c7 | 14 | UIPEthernet uIPEthernet(p11, p12, p13, p8); // mosi, miso, sck, cs |
hudakz | 0:5e91bb901022 | 15 | #elif defined(TARGET_NUCLEO_F103RB) || defined(TARGET_NUCLEO_L152RE) || defined(TARGET_NUCLEO_F030R8) \ |
hudakz | 0:5e91bb901022 | 16 | || defined(TARGET_NUCLEO_F401RE) || defined(TARGET_NUCLEO_F302R8) || defined(TARGET_NUCLEO_L053R8) \ |
hudakz | 0:5e91bb901022 | 17 | || defined(TARGET_NUCLEO_F411RE) || defined(TARGET_NUCLEO_F334R8) || defined(TARGET_NUCLEO_F072RB) \ |
hudakz | 0:5e91bb901022 | 18 | || defined(TARGET_NUCLEO_F091RC) || defined(TARGET_NUCLEO_F303RE) || defined(TARGET_NUCLEO_F070RB) \ |
hudakz | 0:5e91bb901022 | 19 | || defined(TARGET_KL25Z ) || defined(TARGET_KL46Z) || defined(TARGET_K64F) || defined(TARGET_KL05Z) \ |
hudakz | 0:5e91bb901022 | 20 | || defined(TARGET_K20D50M) || defined(TARGET_K22F) \ |
hudakz | 0:5e91bb901022 | 21 | || defined(TARGET_NRF51822) \ |
hudakz | 0:5e91bb901022 | 22 | || defined(TARGET_RZ_A1H) |
hudakz | 2:5656f7efd7c7 | 23 | UIPEthernet uIPEthernet(D11, D12, D13, D10); // mosi, miso, sck, cs |
hudakz | 0:5e91bb901022 | 24 | #endif |
hudakz | 0:5e91bb901022 | 25 | |
hudakz | 2:5656f7efd7c7 | 26 | // MAC address must be unique within the connected network. Modify as appropriate. |
hudakz | 0:5e91bb901022 | 27 | const uint8_t MY_MAC[6] = { 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }; |
hudakz | 0:5e91bb901022 | 28 | EthernetClient client; |
hudakz | 0:5e91bb901022 | 29 | |
hudakz | 0:5e91bb901022 | 30 | int main() |
hudakz | 0:5e91bb901022 | 31 | { |
hudakz | 0:5e91bb901022 | 32 | const unsigned long MAXTIME = 5; // Connection timeout time |
hudakz | 0:5e91bb901022 | 33 | unsigned long t = 0; |
hudakz | 0:5e91bb901022 | 34 | unsigned long timeOut = 0; |
hudakz | 0:5e91bb901022 | 35 | const IPAddress SERVER_IP(192, 168, 1, 33); // Change as appropriate. |
hudakz | 0:5e91bb901022 | 36 | const uint16_t SERVER_PORT = 10001; |
hudakz | 0:5e91bb901022 | 37 | |
hudakz | 0:5e91bb901022 | 38 | float pi = 3.1416F; // some data to be sent to the server |
hudakz | 0:5e91bb901022 | 39 | uint8_t *data = reinterpret_cast<uint8_t*>(&pi); |
hudakz | 0:5e91bb901022 | 40 | |
hudakz | 0:5e91bb901022 | 41 | #define DHCP 1 // if you'd like to use static IP address comment out this line |
hudakz | 0:5e91bb901022 | 42 | #if defined(DHCP) |
hudakz | 0:5e91bb901022 | 43 | pc.printf("Searching for DHCP server..\r\n"); |
hudakz | 2:5656f7efd7c7 | 44 | if(uIPEthernet.begin(MY_MAC) != 1) { |
hudakz | 0:5e91bb901022 | 45 | pc.printf("No DHCP server found.\r\n"); |
hudakz | 0:5e91bb901022 | 46 | pc.printf("Exiting application.\r\n"); |
hudakz | 0:5e91bb901022 | 47 | return 0; |
hudakz | 0:5e91bb901022 | 48 | } |
hudakz | 0:5e91bb901022 | 49 | pc.printf("DHCP server found.\r\n"); |
hudakz | 0:5e91bb901022 | 50 | #else |
hudakz | 0:5e91bb901022 | 51 | // IP address must be unique and compatible with your network. |
hudakz | 0:5e91bb901022 | 52 | const IPAddress MY_IP(192, 168, 1, 181); // Change as appropriate. |
hudakz | 2:5656f7efd7c7 | 53 | uIPEthernet.begin(MY_MAC, MY_IP); |
hudakz | 0:5e91bb901022 | 54 | #endif |
hudakz | 2:5656f7efd7c7 | 55 | IPAddress localIP = uIPEthernet.localIP(); |
hudakz | 2:5656f7efd7c7 | 56 | pc.printf("Local IP = %s\r\n", localIP.toString()); |
hudakz | 0:5e91bb901022 | 57 | |
hudakz | 0:5e91bb901022 | 58 | while(1) { |
hudakz | 0:5e91bb901022 | 59 | if(time(NULL) > timeOut) { |
hudakz | 0:5e91bb901022 | 60 | timeOut = time(NULL) + MAXTIME; |
hudakz | 0:5e91bb901022 | 61 | pc.printf("Connecting to TCP/IP server ..\r\n"); |
hudakz | 0:5e91bb901022 | 62 | if(client.connect(SERVER_IP, SERVER_PORT)) { |
hudakz | 0:5e91bb901022 | 63 | pc.printf("Server connected.\r\n"); |
hudakz | 0:5e91bb901022 | 64 | pc.printf("Sending some data to server:\r\n"); |
hudakz | 0:5e91bb901022 | 65 | client.write(data, sizeof(pi)); |
hudakz | 0:5e91bb901022 | 66 | for(int i = 0; i < sizeof(pi); i++) |
hudakz | 0:5e91bb901022 | 67 | pc.printf("0x%x ", data[i]); |
hudakz | 0:5e91bb901022 | 68 | pc.printf("\r\n"); |
hudakz | 1:4e4b811a7f9b | 69 | pc.printf("Awaiting message from server:\r\n"); |
hudakz | 0:5e91bb901022 | 70 | while(client.available() == 0) { |
hudakz | 0:5e91bb901022 | 71 | if(time(NULL) > timeOut) { |
hudakz | 2:5656f7efd7c7 | 72 | pc.printf("Connection time out.\r\n"); |
hudakz | 2:5656f7efd7c7 | 73 | client.stop(); |
hudakz | 2:5656f7efd7c7 | 74 | pc.printf("Disconnected from server.\r\n"); |
hudakz | 2:5656f7efd7c7 | 75 | break; |
hudakz | 0:5e91bb901022 | 76 | } |
hudakz | 0:5e91bb901022 | 77 | } |
hudakz | 2:5656f7efd7c7 | 78 | if(client.connected()) { |
hudakz | 2:5656f7efd7c7 | 79 | pc.printf("Message received from server:\r\n"); |
hudakz | 2:5656f7efd7c7 | 80 | int size; |
hudakz | 2:5656f7efd7c7 | 81 | while((size = client.available()) > 0) { |
hudakz | 2:5656f7efd7c7 | 82 | uint8_t* msg = (uint8_t*)malloc(size); |
hudakz | 2:5656f7efd7c7 | 83 | size = client.read(msg, size); |
hudakz | 2:5656f7efd7c7 | 84 | for(int i = 0; i < size; i++) |
hudakz | 2:5656f7efd7c7 | 85 | pc.printf("0x%x ", msg[i]); |
hudakz | 2:5656f7efd7c7 | 86 | pc.printf("\r\n"); |
hudakz | 2:5656f7efd7c7 | 87 | free(msg); |
hudakz | 2:5656f7efd7c7 | 88 | } |
hudakz | 2:5656f7efd7c7 | 89 | client.stop(); |
hudakz | 2:5656f7efd7c7 | 90 | pc.printf("Disconnected from server.\r\n"); |
hudakz | 0:5e91bb901022 | 91 | } |
hudakz | 0:5e91bb901022 | 92 | } else { |
hudakz | 0:5e91bb901022 | 93 | pc.printf("Failed to connect to server\r\n"); |
hudakz | 0:5e91bb901022 | 94 | } |
hudakz | 0:5e91bb901022 | 95 | } |
hudakz | 0:5e91bb901022 | 96 | } |
hudakz | 0:5e91bb901022 | 97 | } |
hudakz | 0:5e91bb901022 | 98 |