私は 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 を必要とするように思われたためです。 .
私は何かばかげたことをしましたか?これは、オンラインの例で質問されていない他の人にも機能するようです。どんな助けでも感謝します。