Diferencia entre revisiones de «WebServer»

De ArduWiki
Saltar a: navegación, buscar
(Web Server)
Línea 2: Línea 2:
  
 
<syntaxhighlight lang="c++">
 
<syntaxhighlight lang="c++">
/*
 
  Web Server
 
 
A simple web server that shows the value of the analog input pins.
 
using an Arduino Wiznet Ethernet shield.
 
 
Circuit:
 
 
created 18 Dec 2009
 
by David A. Mellis
 
modified 9 Apr 2012
 
by Tom Igoe
 
modified 02 Sept 2015
 
by Arturo Guadalupi
 
 
*/
 
 
 
#include <SPI.h>
 
#include <SPI.h>
 
#include <Ethernet.h>
 
#include <Ethernet.h>
  
// Enter a MAC address and IP address for your controller below.
 
// The IP address will be dependent on your local network:
 
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
 
IPAddress ip(192, 168, 1, 177);
 
IPAddress ip(192, 168, 1, 177);
Línea 32: Línea 13:
  
 
void setup() {
 
void setup() {
  Serial.begin(9600);
+
  Serial.begin(9600);
 +
  Serial.println("Ethernet WebServer Example");
 +
 
 +
  // start the Ethernet connection and the server:
 +
  Ethernet.begin(mac, ip);
 +
 
 +
  // Check for Ethernet hardware present
 +
  if (Ethernet.hardwareStatus() == EthernetNoHardware) {
 +
      Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
 +
      while (true) {
 +
        delay(1);    //do nothing, no point running without Ethernet hardware
 +
      }
 +
  }
 +
  if (Ethernet.linkStatus() == LinkOFF) {
 +
      Serial.println("Ethernet cable is not connected.");
 +
  }
 +
 
 +
  //start the server
 +
  server.begin();
 +
  Serial.print("server is at ");
 +
  Serial.println(Ethernet.localIP());
 
}
 
}
  
 
void loop() {
 
void loop() {
  // listen for incoming clients
+
  // listen for incoming clients
  EthernetClient client=server.available();
+
  EthernetClient client = server.available();
  if(client) {
+
  if (client) {
    Serial.println("new client");
+
      Serial.println("new client");
    // an http request ends with a blank line
+
      // an http request ends with a blank line
    boolean currentLineIsBlank = true;
+
      boolean currentLineIsBlank = true;
    while (client.connected()) {
+
      while (client.connected()) {
      if (client.available()) {
+
        if (client.available()) {
        char c = client.read();
+
            char c = client.read();
        Serial.write(c);
+
            Serial.write(c);
        // if you've gotten to the end of the line (received a newline
+
            //if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
+
            //character) and the line is blank, the http request has ended,
        // so you can send a reply
+
            //so you can send a reply
 
+
            if (c == '\n' && currentLineIsBlank) {
 +
              //send a standard http response header
 +
              client.println("HTTP/1.1 200 OK");
 +
              client.println("Content-Type: text/html");
 +
              client.println("Connection: close");    //the connection will be closed after completion of the response
 +
              client.println("Refresh: 5");            //refresh the page automatically every 5 sec
 +
              client.println();
 +
              client.println("<!DOCTYPE HTML>");
 +
              client.println("<html>");
 +
              //output the value of each analog input pin
 +
              for (byte analogChannel = 0; analogChannel < 6; analogChannel++) {
 +
                  int sensorReading = analogRead(analogChannel);
 +
                  client.print("analog input ");
 +
                  client.print(analogChannel);
 +
                  client.print(" is ");
 +
                  client.print(sensorReading);
 +
                  client.println("<br />");
 +
              }
 +
              client.println("</html>");
 +
              break;
 +
            }
 +
            if (c == '\n') {
 +
              //you're starting a new line
 +
              currentLineIsBlank = true;
 +
            }else if (c != '\r') {
 +
              // you've gotten a character on the current line
 +
              currentLineIsBlank = false;
 +
            }
 +
        }
 +
      }
 +
      //give the web browser time to receive the data
 +
      delay(1);
 +
      client.stop();    //Cierra conexion
 +
      Serial.println("client disconnected");
 +
  }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revisión del 19:45 30 may 2019

En este ejemplo, con Ethernet Shield y Arduino se crea un servidor web simple. Con la biblioteca Ethernet, su dispositivo podrá responder a una solicitud HTTP. Después de abrir un navegador y navegar a la dirección IP de su escudo Ethernet, su Arduino responderá con HTML para que un navegador muestre los valores de entrada de los seis pines analógicos.

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);

//Ethernet shield attached to pins 10, 11, 12, 13
//Analog inputs attached to pins A0 through A5 (optional)
EthernetServer server(80);

void setup() {
   Serial.begin(9600);
   Serial.println("Ethernet WebServer Example");

   // start the Ethernet connection and the server:
   Ethernet.begin(mac, ip);

   // Check for Ethernet hardware present
   if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
      while (true) {
         delay(1);    //do nothing, no point running without Ethernet hardware
      }
   }
   if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Ethernet cable is not connected.");
   }

   //start the server
   server.begin();
   Serial.print("server is at ");
   Serial.println(Ethernet.localIP());
}

void loop() {
   // listen for incoming clients
   EthernetClient client = server.available();
   if (client) {
      Serial.println("new client");
      // an http request ends with a blank line
      boolean currentLineIsBlank = true;
      while (client.connected()) {
         if (client.available()) {
            char c = client.read();
            Serial.write(c);
            //if you've gotten to the end of the line (received a newline
            //character) and the line is blank, the http request has ended,
            //so you can send a reply
            if (c == '\n' && currentLineIsBlank) {
               //send a standard http response header
               client.println("HTTP/1.1 200 OK");
               client.println("Content-Type: text/html");
               client.println("Connection: close");     //the connection will be closed after completion of the response
               client.println("Refresh: 5");            //refresh the page automatically every 5 sec
               client.println();
               client.println("<!DOCTYPE HTML>");
               client.println("<html>");
               //output the value of each analog input pin
               for (byte analogChannel = 0; analogChannel < 6; analogChannel++) {
                   int sensorReading = analogRead(analogChannel);
                   client.print("analog input ");
                   client.print(analogChannel);
                   client.print(" is ");
                   client.print(sensorReading);
                   client.println("<br />");
               }
               client.println("</html>");
               break;
            }
            if (c == '\n') {
               //you're starting a new line
               currentLineIsBlank = true;
            }else if (c != '\r') {
               // you've gotten a character on the current line
               currentLineIsBlank = false;
            }
         }
      }
      //give the web browser time to receive the data
      delay(1);
      client.stop();     //Cierra conexion
      Serial.println("client disconnected");
   }
}

Vea también


Referencias