我正在尝试使用Arduino客户端类从Internet获取HTML页面(例如来自Arduino库本身),但它无法正常工作(连接尚未建立)。
它失败了:
client.connect();
我尝试过以太网和Ethernet2库。
我的Arduino开发平台版本是0017,操作系统是Windows XP。
以下是我的代码和配置内联:
#include <Client.h>
#include <Ethernet2.h>
// #include <Ethernet.h>
#include <Print.h>
#include <Server.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,7 };
byte server[] = { 74,125,47,103 }; // Google home page
byte gateway[] = { 192,168,1,1 };
byte mask[] = { 255,255,255,0 };
Client client(server, 80);
void setup()
{
Ethernet.begin(mac, ip, gateway, mask);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
if (client.connect()) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;);
}
}
答案 0 :(得分:5)
我不知道原因,但我必须修改以下setup()
函数才能使代码正常工作:
void setup() {
Ethernet.begin(mac, ip, gateway, mask);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
for(int i = 0;i <100 ; i++) {
if (client.connect()) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
break;
} else {
Serial.println("connection failed");
}
}
}
代码:
client.connect()
确实失败了两次或三次但最终它在'for'循环的第3或第4次迭代中连接到谷歌网络服务器以及我的本地网络服务器。
如果有人知道这种行为的原因,请回复。