Arduino教程——使用Ethernet构建简易的Web Server-Arduino中文社区 - Powered by Discuz! Archiver

烈火 发表于 2017-1-5 14:48

奈何col 发表于 2017-1-4 20:57
F12看看有无报错,然后对应报错修改。应该都是浏览器的问题,如果没有报错的话,我也不知道咋改了 ...
我把SendHTML()函数中的:client.println("<! DOCTYPE HTML>");这句给删除以后在chrome里显示正常了,但是跟用360浏览器一样,也是可以正确显示IP,但是点击turn on没有反应,而且串口里显示client disconnected,是不是已经断开了,所以没法控制了呢?






奈何col 发表于 2017-1-5 15:02

烈火 发表于 2017-1-5 14:48
我把SendHTML()函数中的:client.println("");这句给删除以后在chrome里显示正常了,但是跟用360浏览器一 ...

F12 > console 可以看到报错信息

烈火 发表于 2017-1-5 16:38

奈何col 发表于 2017-1-5 15:02
F12 > console 可以看到报错信息
在chrome用F12看了下,在console显示:Uncaught ReferenceError: send2arduino is not definedonclick @ (index):11    (如下图)
说我的send2arduino函数没有定义,但是我明明在head里的script里面定义send2arduino函数的,好奇怪呀...


奈何col 发表于 2017-1-5 18:21

烈火 发表于 2017-1-5 16:38
在chrome用F12看了下,在console显示:Uncaught ReferenceError: send2arduino is not definedonclick @ ( ...

检查下语法吧,这是个javascript问题了

烈火 发表于 2017-1-5 22:36

奈何col 发表于 2017-1-5 18:21
检查下语法吧,这是个javascript问题了

感谢奈何大神,确实是JavaScript函数写错了,已经修改过来,现在可以实现功能了,但是有个问题就是web端显示的是双份的(如下图),两个开关按钮有时候点击两三次LED等才会有反应,不知啥原因呢,源码如下:



#include "SPI.h"
#include "Ethernet.h"
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
EthernetServer server(80);
EthernetClient client;
String readString = "";
int Light = 2;
int Sensor = A0;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Ethernet.begin(mac);
server.begin();
pinMode(Light, OUTPUT);
Serial.print("Server IP is:");
Serial.println(Ethernet.localIP());
}

void loop()
{
// put your main code here, to run repeatedly:
client = server.available();
if (client)
{
    Serial.println("new client!");
//    SendHTML();
    while (client.connected())
    {
      if (client.available())
      {
      char c = client.read();
      readString += c;
      if (c == '\n')
      {
          Serial.println(readString);
          if (readString.indexOf("?on") > 0)
          {
            digitalWrite(Light, HIGH);
            Serial.println("LED ON");
            break;
          }
          if (readString.indexOf("?off") > 0)
          {
            digitalWrite(Light, LOW);
            Serial.println("LED OFF");
            break;
          }

          if (readString.indexOf("? getBrightness") > 0)
          {
            client.println(analogRead(Sensor));
            break;
          }
          SendHTML();
          break;
      }
      }
    }
    delay(1);
    client.stop();
    Serial.println("client disconnected");
    readString = "";
}
}

void SendHTML()
{
client.println("HTTP/1.1 200 OK");
client.println("Content - Type:text/html");
client.println("Connection: close");
client.println("");
//client.println("<! DOCTYPE HTML>");
client.println("<html><head><meta charset = \"UTF - 8\"><title>LED</title>");
client.println("<script type = \"text/javascript\">");
client.println("function send2arduino(){ var xmlhttp; if(window.XMLHttpRequest) xmlhttp=new XMLHttpRequest(); else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\"); element = document.getElementById(\"light\"); if(element.innerHTML.match(\"Turn on\")) { element.innerHTML=\"Turn off\"; xmlhttp.open(\"GET\",\"?on\",true); } else { element.innerHTML=\"Turn on\"; xmlhttp.open(\"GET\",\"?off\",true); } xmlhttp.send(); }");
//client.println("function send2arduino(){ alert(\"hahaha...\");}");
client.println("function getBrightness(){var xmlhttp;if (window.XMLHttpRequest)xmlhttp=new XMLHttpRequest();else xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");xmlhttp.onreadystatechange=function(){if (xmlhttp.readyState==4 && xmlhttp.status==200)document.getElementById(\"brightness\").innerHTML=xmlhttp.responseText;};xmlhttp.open(\"GET\",\"?getBrightness\",true); xmlhttp.send();}");
//client.println("function getBrightness(){ }");
client.println("window.setInterval(getBrightness,1000);");
client.println("</script>");
client.println("</head><body><div align= \"center\"><h1>LED</h1><div>brightness:</div>");
client.println("<div id=\"brightness\">");
client.println(analogRead(Sensor));
client.println("</div>");
client.println("<button id=\"light\" type=\"button\" onclick=\"send2arduino()\">Turn on</button>");
client.println("</div></body></html>");
}


早茶月光 发表于 2017-3-21 10:52

我用的是uno和Ethernet Shield,网页显示不出来,程序和楼主的一样,这是什么原因呢?求教!!!

奈何col 发表于 2017-3-21 10:57

早茶月光 发表于 2017-3-21 10:52
我用的是uno和Ethernet Shield,网页显示不出来,程序和楼主的一样,这是什么原因呢?求教!!! ...

怎么不一样?详细描述才能解决问题

早茶月光 发表于 2017-3-21 11:07

早茶月光 发表于 2017-3-21 10:52
我用的是uno和Ethernet Shield,网页显示不出来,程序和楼主的一样,这是什么原因呢?求教!!! ...

网页提示是无法显示该页面,串口监控器也只显示了Server is at 219.228.246.72

早茶月光 发表于 2017-3-21 11:18

奈何col 发表于 2017-3-21 10:57
怎么不一样?详细描述才能解决问题

网页提示的无法显示该页面,串口监视器也只显示Server is at 219.228.246.72。
我在想是不是我的链接有问题,我把uno通过USB连在了电脑上,网线也连在电脑上,在ethernet上连了另一根网线。。。是不是不对。。。

奈何col 发表于 2017-3-21 11:28

早茶月光 发表于 2017-3-21 11:18
网页提示的无法显示该页面,串口监视器也只显示Server is at 219.228.246.72。
我在想是不是我的链接有问 ...

将PC和arduino都通过网线链接到你的路由器上
页: 1 2 3 4 5 6 7 8 [9] 10 11 12
查看完整版本: Arduino教程——使用Ethernet构建简易的Web Server