我正在尝试以5秒的循环间隔从网页检索数据到我的Arduino。我正在建立Adafruit CC3000'Webclient'的例子。
完整的代码可以是seen here。
一切都按预期工作,Arduino连接到网络,然后向指定的网站发出一个请求。
现在我正在尝试添加循环,以便Arduino获取刷新的数据。我不想断开连接,然后必须重新连接到wifi网络,所以我尝试循环以下代码。
void myLoop(uint32_t ip)
{
// START LOOPING
int count = 0;
while(count == 0) {
Adafruit_CC3000_Client www = cc3000.connectTCP(ip, 80);
if (www.connected()) {
www.fastrprint(F("GET "));
www.fastrprint(WEBPAGE);
www.fastrprint(F(" HTTP/1.1\r\n"));
www.fastrprint(F("Host: ")); www.fastrprint(WEBSITE); www.fastrprint(F("\r\n"));
www.fastrprint(F("\r\n"));
www.println();
} else {
Serial.println(F("Connection failed"));
return;
}
/* Read data until either the connection is closed, or the idle timeout is reached. */
//unsigned long lastRead = millis();
while (www.connected()) {
while (www.available()) {
char c = www.read();
content = c;
Serial.print(c);
//lastRead = millis();
}
}
www.close();
Serial.println(F("\n\nDisconnecting"));
cc3000.disconnect();
delay(5000);
}
}
循环运行一次,但在第一次迭代后不断输出“Connection Failed”。
似乎我不能多次运行connectTCP功能,但我无法理解为什么
Adafruit_CC3000_Client www = cc3000.connectTCP(ip, 80);
我也尝试将其从循环中移除并移除www.close();
和cc3000.disconnect();
,但仍然无法保持连接处于打开状态。
非常感谢任何协助。
答案 0 :(得分:1)
我也是使用CC3000的新用户,之前对该代码也存在同样的问题。
您无法再次连接,因为您将cc3000.disconnect();
放在循环()
所以只需删除它,但将www.close();
保留在循环()中。
答案 1 :(得分:1)
我遇到了同样的问题,cc3000在崩溃之前只连接了一次或3-4次http请求(Get)。
现在我的工作方式如下: 在循环():
Adafruit_CC3000_Client www = cc3000.connectTCP(ip, WEBPORT);
delay(300);
if (www.connected()) {
//your http request get
//with a connection close:
www.fastrprint(F("GET "));
//inser your stuff
www.fastrprint(F("Connection: close\r\n"));
www.fastrprint(F("\r\n"));
www.println();
} else {
Serial.println(F("Connection failed"));
return;
}
//reading response
while(www.connected()){
while (www.available()) {
char c = www.read();
Serial.print(c);
}
}
www.stop();
delay(100);
www.close();
delay(200);
and stop&close the client at the end.
希望这可以帮助某人......花了很长时间才能让这些简单的东西工作!