尝试使用Arduino Adafruit CC3000 Webclient循环http请求

时间:2015-04-21 12:05:13

标签: arduino arduino-ide

我正在尝试以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();,但仍然无法保持连接处于打开状态。

非常感谢任何协助。

2 个答案:

答案 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. 

希望这可以帮助某人......花了很长时间才能让这些简单的东西工作!