2016-03-02 87 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); 
} 
相關問題