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

Dependencies:   EthernetInterface SimpleSocket mbed-rtos mbed

Fork of SimpleSocketExamples by Hiroshi Yamaguchi

examples/webserver.cpp

Committer:
numeral369
Date:
2014-12-17
Revision:
1:016774025718
Parent:
0:6dc3cfd058c6

File content as of revision 1:016774025718:

#include "SimpleSocket.h"

void webserver()
{
    const char *response0 =
        "HTTP/1.1 200 OK\r\n"
        "Content-Type: text/html\r\n"
        "\r\n"
        "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5\">\r\n"
        "<html>\r\n"
        "<head>\r\n"
        "<title>mbed web server</title>\r\n"
        "</head>\r\n"
        "<body>\r\n"
        "<h2>Analog Input</h2>\r\n"
        "<table cellpadding=\"5\">\r\n";

    const char *response1 =
        "<tr style=\"background:#ccccff\">"
        "<th>pin</th><th>value</th>"
        "</tr>\r\n";

    const char *response2 =
        "<tr style=\"background:#cccccc\">"
        "<td>p%d</td><td align=\"center\">%f</td>"
        "</tr>\r\n";

    const char *response3 =
        "</table>\r\n"
        "</body>\r\n"
        "</html>\r\n";

    ServerSocket server(80);

    printf("webserver: %s\n", EthernetInterface::getIPAddress());

    while (true) {
        ClientSocket socket = server.accept();
        while (socket) {
            if (socket.available()) {
                while (socket.available())
                    socket.read();
                int ret1 = socket.printf(response0);
                //wait(0.1);
                int ret2 = socket.printf(response1);
                //wait(0.1);
                AnalogIn analogPin[] = {p15, p16, p17, p18, p19, p20};
                int ret = 0;
                for (int i = 0; i < 6; i++) {
                    ret += socket.printf(response2, 15 + i, analogPin[i].read());
                   // wait(0.1);
                }
                int ret3 = socket.printf(response3);
                //wait(0.1);
                socket.close();
                ::printf("len = %d, ret = %d, %d, %d, %d\n", strlen(response1), ret1, ret2, ret, ret3);
            }
        }
    }
}