0

私は mbed LPC1768 を使用していますが、問題は実際にはハードウェアとは関係ありません。以下の標準的な例を使用して、LPC1768 で HTTP クライアントをテストしようとしています。この例では何も変更していません (オンラインで見たことがありますが、最初は「高速で効果的な組み込みシステム設計」の本で見つけました)。

#include "mbed.h"
#include "EthernetNetIf.h"
#include "HTTPClient.h"

EthernetNetIf eth(
    IpAddr(192,168,0,101),
    IpAddr(255,255,255,0),
    IpAddr(192,168,0,1),
    IpAddr(192,168,0,1)
);

HTTPClient http;
HTTPText txt;

Serial pc (USBTX, USBRX);

int main() {
    pc.printf("\r\nSetting up network connection...\n\r");
    eth.setup();
    pc.printf("\n\nSetup OK. Querying data...\r\n");

    // attempt to access file 'mbedclienttest.txt' through the Internet...
    HTTPResult r=http.get("http://www/embeddedacademic.com/mbed/mbedcllienttest.txt", &txt);
    pc.printf("Result: \n\r\"%s\"\n\r", txt.gets());
}

それはすべて非常に簡単に思えますが、一貫して次のエラーが発生しています。

Error: No default constructor exists for class "HTTPText" in "main.cpp", Line: 13, Col: 11
Error: Class "HTTPText" has no member "gets" in "main.cpp", Line: 24, Col: 46

どうしてか分かりません。つまり、エラーは理解できますが、HTTPText にはコンストラクターが存在し、HTTPText ファイルにも gets メソッドがあるため、ここで問題が発生する理由がよくわかりません。HTTPText.cpp/.h ファイルは のdataディレクトリにありHTTPClientます。最初の問題の原因がわかれば、2番目の問題はうまくいくと思います。

関数がどこにあるかを示すコーディングウィンドウでは、正しい場所を指しているので、2つの異なるクラスなどがある場合ではないと思います。

他の誰もこの問題を抱えていないようですので、これは私がやったこと/していないことが原因である可能性が最も高いと思います. おそらく、mbed 開発者環境が物事を処理する方法が原因です。私はシステムに比較的慣れていないので、まだそれを理解しています。

追加のメモとして、何らかの驚くべき理由で違いが生じる場合、プログラムフォルダーにライブラリー EthernetInterface と mbed-rtos を含める必要がありました。他のライブラリーの 1 つが特定のバージョンの TCPSocketConnection といくつかの lwip を必要とするように思われたためです。 .

私は何かばかげたことをしましたか?これは、オンラインの例で質問されていない他の人にも機能するようです。どんな助けでも感謝します。

4

0 に答える 0