烈火
发表于 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