2016-09-27 9 views
0

Используя IDE Arduino с модулем Nodemcu-esp12e, я создал программу, которая выполняет HTTP-запрос GET.Проверка возврата HTTP-запроса GET с помощью arduino IDE и nodemcu-esp-12e

Однако я не знаю, как было бы правильным способом справиться с возвратом этой консультации.

Я проверяю возврат с помощью функции 'indexOf', чтобы узнать, является ли возврат false/off или true/on.

Это правильный способ подтверждения возврата?
Любые предложения по улучшению этого кода?

#include <ESP8266WiFi.h> 
const char* ssid  = "mywifiid"; 
const char* password = "mypassword"; 
IPAddress host(192,168,0,11); 

void setup() { 
    Serial.begin(115200); 
    Serial.println(); 
    Serial.print("Connecting to "); 
    Serial.println(ssid); 
    WiFi.begin(ssid, password); 
    // 
    while (WiFi.status() != WL_CONNECTED) { 
    delay(500); 
    Serial.print("."); 
    } 
    // 
    Serial.println(""); 
    Serial.println("WiFi connected"); 
    Serial.println("IP address: "); 
    Serial.println(WiFi.localIP()); 
} 

void loop() { 
    // 
    Serial.print("connecting to "); 
    Serial.println(host); 
    // 
    WiFiClient client; 
    const int httpPort = 80; 
    if (!client.connect(host, httpPort)) { 
    Serial.println("connection failed"); 
    return; 
    } 
    else{ 
    Serial.println("connection success"); 
    } 
    // 
    String get = "http://localhost/Test/GetStatusSensor?idsensor=2"; 
    Serial.println(get); 
    // 
    client.print("GET " + get + "\r\nHTTP/1.1\r\nHost: localhost\Test\r\nConnection: keep-alive\r\n\r\n"); 
    // 
    while(client.available()){ 
    String line = client.readStringUntil('\r'); 
    // 
    int iret= line.indexOf('on'); 
    // 
    Serial.print(line); 
    Serial.println(String(iret)); 
    // 
    if (iret> 0) { 
     // 
     Serial.println("On"); 
    } 
    else { 
     Serial.println("Off"); 
    }  
    } 
    // 
    Serial.println(); 
    Serial.println("closing connection"); 
    delay(20000); // 20 sec 
} 
+0

Arduino не C! – Olaf

+0

Спасибо за исправление! –

+0

http://stackoverflow.com/questions/11812850/does-arduino-use-c-or-c –

ответ

1

Мое предложение - использовать JSON для переключения на более структурированный способ связи. Вы можете определить пользовательские имена и типы данных и легко их покрыть. Посмотрите его на:

https://github.com/bblanchon/ArduinoJson

Вот некоторые JSON пример из примера HTTPClient:

DynamicJsonBuffer jsonBuffer(BUFFER_SIZE); 

    JsonObject& root = jsonBuffer.parseObject(client); 

    if (!root.success()) { 
    Serial.println("JSON parsing failed!"); 
    return false; 
    } 

    // Here were copy the strings we're interested in 
    strcpy(userData->name, root["name"]); 
    strcpy(userData->company, root["company"]["name"]); 

 Смежные вопросы

  • Нет связанных вопросов^_^