All pastes #2093948 Raw Edit

Anonymous

public text v1 · immutable
#2093948 ·published 2011-11-12 07:29 UTC
rendered paste body
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
#include <Udp.h>
#include <SPI.h>
/*
 * Web Server
 *
 * A simple web server: Displays a button to open/close
 * a door and door status
 */
 //-----------------------BEGIN Variable setup -------------------------------

String readString = String(30); //string for fetching data from address
boolean LEDON = false; //LED status flag

int state;
int val=0;

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] =  {
  192, 168, 1, 111 }; //Change your IP Address here
Server server(80); //Standard HTTP server port

//-----------------------END Variable setup-------------------------------

void setup()
{
  pinMode(4, OUTPUT);    

  Ethernet.begin(mac, ip);
  server.begin();
  delay(100);
  Serial.begin(9600);  //XBee module Baud rate
  UCSR0C |= _BV(UPM01);      //EVEN 
  UCSR0C &= ~_BV(UPM00);
  delay(100);
  }
void loop()
{
  byte ON[]={0x68,0x01,0x00,0x00,0x00,0x00,0x00,0x68,0x1C,0x0A,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x44,0xDD,0xB0,0x16}; //默认编号为01  拉
  byte i;
//---------------Web Server initialization------------------------------
  Client client = server.available();
  if (client) {

    boolean current_line_is_blank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (readString.length() < 100)
      {

        readString += c;
      }
///////////Check button status to determine actions to take for submit button///////////////
//默认编号为01
//68 01 00 00 00 00 00 68 1C 0A 33 33 33 33 33 33 33 33 44 DD B0 16  拉
//68 01 00 00 00 00 00 68 1C 0A 33 33 33 33 33 33 33 33 44 21 F4 16  合
       if(readString.indexOf("IO=1") >0){ // If door open request sent;
                                          // send instruction to remote arduino
             if (LEDON== false){          //Ensure it only send the info once
             //led has to be turned ON
             LEDON = true;                //Change LED state to print on the page
            
            for(i=0;i<22;i++)
            { 
               Serial.print(ON[i],BYTE);           //Send command to remote Arduino
            }  
          }
           }
           if(readString.indexOf("IO=0") >0){//Same as above but not used in
                                             //this application
           if (LEDON== true){
             //led has to be turned OFF
             LEDON = false;
             Serial.print('K');
           }
           }
///////////////Finish checking and actions for submit button//////////////////

//------------------Standard web Server Jargon-------------------------------
        if (c == 'n' && current_line_is_blank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: html");
          client.println();
          client.println("<html>");
          client.println("<head>");
          client.println("<title>Xboard interface--Door control</title>");
          client.println("</head>");
          client.println("<body>");
          client.print("welcome to DFRobot"); //Print your own message here
          client.println("<br />");
          client.print("//*************************************");
          client.println("<br />");
          client.println("<br />");
          client.print("//*************************************");
          client.println("<br />");
          client.println("<br />");
          client.print("<form>");
          client.print("<input type=radio name=IO value=1 /> Open<br />");
          client.print("<input type=submit value=Submit </form><br />");
          client.println("</body>");
            break;
            }

        if (c == 'n') {
          // we're starting a new line
          current_line_is_blank = true;
        }
        else if (c != 'r') {
          // we've gotten a character on the current line
          current_line_is_blank = false;
        }
      }
    }
//------------------END Standard web Server Jargon-------------------------------

//-----------------Print door status on web page and auto refresh----------------
     if (LEDON){
          //printing LED status
         client.print("<font size='5'>DOOR status: ");
         client.println("<font color='green' size='5'>OPEN");
         client.println("<META HTTP-EQUIV=REFRESH CONTENT=2;url=http://192.168.1.111/>"); //Autorefresh
                        //Auto-refresh the site after 2 seconds to reset the door status to closed
     }
     else{
          client.print("<font size='5'>DOOR status: ");
          client.println("<font color='grey' size='5'>CLOSED");
     }
          client.println("<hr />");
          client.println("<hr />");
          client.println("</body></html>");
          //clearing string for next read
          readString="";
//-----------------END Print door status on web page and auto refresh----------------
    client.stop();
  }

/*Routine to read response from remote Arduino
 *and light local LED on PIN4
 */
   if (Serial.available() > 0) {
    val = Serial.read();
    if (val == 'H') { //These values ('H')can be changed to what ever you want
                      //just make sure you change them in both the server
                      //program and the client program
      digitalWrite(4, HIGH);
      delay (20);
     }
    if (val == 'L') {
      digitalWrite(4, LOW);
       delay (20);
    }
   }
}