2016-03-02 94 views
0

它保持失败,失败和失败。为什么我的代码从来没有得到命令重启?

Arduino YUN我有此代码。它必须去一个网站,并得到一个值“重新启动”,如果值“重新启动”发现它做的动作,如果“重新启动”不,然后别的什么都不做。

有时重启命令正在工作,但它并不总是工作,这让我很难过。

有谁知道为什么我的代码不工作?

#include <Bridge.h> 
#include <HttpClient.h> 

String result = String(""); 
void setup() { 
    delay(5000); 
    pinMode(2, OUTPUT); 
    Bridge.begin(); 
    digitalWrite(2, HIGH); 
} 

void loop() { 
    HttpClient client; 

    // PIN 2 
    client.get("http://www.example.com/output.php?value=reboot");// output.php outputs the value reboot and the reset the value to empty string. after 10 second php puts the value to reboot and then put the value to empty. 
    result = ""; 
    while (client.available()) { 
    char c = client.read(); 
    result = result + c; 
    } 

    if(result.indexOf("reboot") >= 0) {// this keeps failing, sometime working and sometime not working 
    digitalWrite(2, LOW); 
    delay(3000); 
    digitalWrite(2, HIGH); 
    } 

    delay(7000); 
} 
+1

当你用每个字符记录'client.read()'时,你有什么? –

+2

如果你把'http://www.example.com/output.php?value = reboot'放到一个普通的web-broser中,它是否一直工作,还是仍然有同样的问题? *网络服务器发回了什么? –

+0

1)client.read()是每个字符2)当我在curl或wget或浏览器上打开url时,我始终值得正确地进入“rebo​​ot” – YumYumYum

回答

0

它工作。

#include <Bridge.h> 
#include <HttpClient.h> 
String result = String(""); 
void setup() { 
    delay(5000); 
    pinMode(2, OUTPUT); 
    Bridge.begin(); 
    digitalWrite(2, HIGH); 

} 
boolean was_on = false; 
void loop() { 
    HttpClient client; 

    // PIN 2 
    client.get("http://ok.example.com/ajax/light"); 
    delay(500); 
    result = ""; 
    while (client.available()) { 
    char c = client.read(); 
    result = result + c; 
    } 


    if(result.indexOf("reboot") >= 0) { 
    digitalWrite(2, LOW); 
    delay(2000); 
    was_on = true; 
    } else { 
    if(was_on) { 
     digitalWrite(2, HIGH); 
     delay(1000); 
     was_on = false; 
    } 
    } 

    delay(3000); 
} 
相关问题