Arduino在一段时间后崩溃了

时间:2013-05-16 19:53:36

标签: php crash arduino

我正在开发一个arduino项目,它在服务器上发出http请求并读取http页面内容。在循环中我有一个函数:

String eventValue = check_for_event(); 

String check_for_event(){
if (client.connect(server, 80)) {
    client.print("GET /check_for_event.php?q=");
    client.print(class_code);
    client.println(" HTTP/1.0");
    client.println();

    return readPage(); 

} else{ return "704"; }
}

String readPage(){
  stringPos = 0;
  memset( &inString, 0, 32 );
  int print_flag=0;
  while(true){

    if (client.available()) {
      char c = client.read();
      if (c == '<' ) { 
        startRead = true; 
      }else if(startRead){
        if(c != '>'){ 
          inString[stringPos] = c;
          stringPos ++;
        }else{
          startRead = false;
          client.stop();
          client.flush();
          print_flag=1;
          return inString;
        }

      }
    }

  }
  if(print_flag==0){return "804";}
}

这是我的代码的一部分,我每3秒调用一次。它工作好几个小时,但突然崩溃,我不明白为什么。我发现在check_for_event函数中某处崩溃了。

1 个答案:

答案 0 :(得分:0)

很可能你的内存不足。由于您没有显示您的代码,因此很难确定原因。要么你有内存泄漏,要么你只是溢出你的内存。我建议检查收到的http页面的大小是否有所不同,以及崩溃是否只发生在特定的大页面上。

恕我直言,只有2k内存的Arduino不太适合http处理。 Raspi范围内的东西会更合适。

话虽如此,如果你想坚持使用Arduino,你可能会考虑使用更少ram的技术。首先是learn about the available memory

接下来是stop wasting memory for string constants。如果这还不够 - 很可能 - 您必须仔细检查并优化它。除非您受到严格的成本限制(例如,因为您设计了1000个设备)或者您的时间基本上是免费的,否则切换到更强大的硬件是一个更好的主意。