examples for SimpleSocket/EthernetInterface

Dependencies:   EthernetInterface SimpleSocket mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers webserver.cpp Source File

webserver.cpp

00001 #include "SimpleSocket.h"
00002 
00003 void webserver()
00004 {
00005     const char *response0 =
00006         "HTTP/1.1 200 OK\r\n"
00007         "Content-Type: text/html\r\n"
00008         "\r\n"
00009         "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5\">\r\n"
00010         "<html>\r\n"
00011         "<head>\r\n"
00012         "<title>mbed web server</title>\r\n"
00013         "</head>\r\n"
00014         "<body>\r\n"
00015         "<h2>Analog Input</h2>\r\n"
00016         "<table cellpadding=\"5\">\r\n";
00017 
00018     const char *response1 =
00019         "<tr style=\"background:#ccccff\">"
00020         "<th>pin</th><th>value</th>"
00021         "</tr>\r\n";
00022 
00023     const char *response2 =
00024         "<tr style=\"background:#cccccc\">"
00025         "<td>p%d</td><td align=\"center\">%f</td>"
00026         "</tr>\r\n";
00027 
00028     const char *response3 =
00029         "</table>\r\n"
00030         "</body>\r\n"
00031         "</html>\r\n";
00032 
00033     ServerSocket server(80);
00034 
00035     printf("webserver: %s\n", EthernetInterface::getIPAddress());
00036 
00037     while (true) {
00038         ClientSocket socket = server.accept();
00039         while (socket) {
00040             if (socket.available()) {
00041                 while (socket.available())
00042                     socket.read();
00043                 int ret1 = socket.printf(response0);
00044                 //wait(0.1);
00045                 int ret2 = socket.printf(response1);
00046                 //wait(0.1);
00047                 AnalogIn analogPin[] = {p15, p16, p17, p18, p19, p20};
00048                 int ret = 0;
00049                 for (int i = 0; i < 6; i++) {
00050                     ret += socket.printf(response2, 15 + i, analogPin[i].read());
00051                    // wait(0.1);
00052                 }
00053                 int ret3 = socket.printf(response3);
00054                 //wait(0.1);
00055                 socket.close();
00056                 ::printf("len = %d, ret = %d, %d, %d, %d\n", strlen(response1), ret1, ret2, ret, ret3);
00057             }
00058         }
00059     }
00060 }