2017-03-19 13 views
1

私はPersonカウンタを作成しています。部屋のIn/Outを数えてデータベースにアップロードするだけです。私はArduino MEGA2560をESP8266で私のサーバーへのコミュニケータとして使用しています。Http GETリクエスト非閉塞Arduino

私のサーバーでHTTP GETリクエストを送信すると問題が発生します。 HTTP GETリクエストを送信すると、HTTP GETリクエストが完了するまでカウンター機能が動作しなくなります。ここでArduinoに非同期機能があり、使いやすく、スタンドであるか、HTTP GETリクエストを使用して正しい方法があるかどうか疑問に思うだけです。

void loop{ 
    counter(); // let's assume that this function is just counting in and out person in the room 
    // changing the value of variable count 
    uint8_t buffer[1024] = {0}; 

    if (wifi.createTCP(HOST_NAME, HOST_PORT)) { 
     Serial.print("create tcp ok\r\n"); 
    } else { 
     Serial.print("create tcp err\r\n"); 
    } 

    char hello[]; 
    strcpy(hello, "GET /vbus/insert.php?coount="); 
    strcat(hello, count); 
    strcat(hello," HTTP/1.1\r\nHost: www.test.com\r\nConnection:close\r\n\r\n"); 
    wifi.send((const uint8_t*)hello, strlen(hello)); 
    wifi.send((const uint8_t*)hello, strlen(hello)); 

    uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); 
    if (len > 0) { 
     Serial.print("Received:["); 
     for(uint32_t i = 0; i < len; i++) { 
      Serial.print((char)buffer[i]); 
     } 
     Serial.print("]\r\n"); 
    } 
} 

PS:

はここに私のコードです、私は私が言ったの上にちょうど1つのHTTP GETリクエストを送信して問題ありません。

+0

esp8266でarduino fwを使用していますか? Arduino-esp8266タグがあります。 – cagdas

+0

私はesp8266でarduinoを使用しています。私のタグが間違っていれば私を修正してください:) – zxcetera

+0

いいえ、問題ありません。 esp8266にarduino fwを使用しています – cagdas

答えて

1

この種のシリアルライブラリは、カスタムリクエストの柔軟性からは程遠いものです。シリアル経由でESP8266デバイスを使用している間は、リクエストを処理するためのソフトウェアが組み込まれています。これがファームウェアです。

ATコマンドを使用すると、それはあなたのケースを助けません。そのため、非同期HTTP要求を処理するための非ブロッキングTCP実装はありません。

アルドゥーノベースのESP8266ユーザーにはasync TCP libraryのソリューションがあります。そこにコードベースを適用することができます。柔軟性のためです。

+0

こんにちは、私はこのエラーが発生しているサンプルプログラムをコンパイルしようとしているとき。 C:\ Users \ユーザーzxcetドキュメント\ \ Arduinoの\ライブラリ\ ESPAsyncTCP-マスターの\ SRC/ESPAsyncTCP.h:27:22:致命的なエラー:機能:そのようなファイルやディレクトリ の#include ^ コンパイル終了していません。 終了ステータス1 ボードArduino/Genuino MegaまたはMega 2560のコンパイルエラー。 – zxcetera

+1

これはesp8266デバイス用です。あなたはarduinoのメガではなく、ESP8266を直接プログラムします。したがって、ボードマネージャからデバイスとしてesp8266をインポートする必要があります。 – cagdas

+1

ここをクリックしてください:https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-guide/installing-the-esp8266-arduino-addon – cagdas

関連する問題