2

インターネットから HTML ページを取得するために Arduino クライアント クラスを使用しようとしています (Arduino ライブラリ自体からの例) が、機能していません (接続が確立されていません)。

失敗しています:

client.connect();

Ethernet と Ethernet2 ライブラリの両方を試しました。

私のArduino開発プラットフォームのバージョンは0017で、OSはWindows XPです。

以下は私のコードと構成のインラインです:

#include <Client.h>
#include <Ethernet2.h>
// #include <Ethernet.h>
#include <Print.h>
#include <Server.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,7 };
byte server[] = { 74,125,47,103 }; // Google home page
byte gateway[] = { 192,168,1,1 };
byte mask[] = { 255,255,255,0 };

Client client(server, 80);

void setup()
{
  Ethernet.begin(mac, ip, gateway, mask);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  if (client.connect()) {
    Serial.println("connected");
    client.println("GET /search?q=arduino HTTP/1.0");
    client.println();
  } else {
    Serial.println("connection failed");
  }
}

void loop()
{
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }

  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for(;;);
  }
}
4

1 に答える 1

5

理由はわかりませんがsetup()、コードを機能させるために次の関数を変更する必要がありました。

void setup() {
  Ethernet.begin(mac, ip, gateway, mask);
  Serial.begin(9600);

  delay(1000);

  Serial.println("connecting...");

  for(int i = 0;i <100 ; i++) {  
    if (client.connect()) {
      Serial.println("connected");        
      client.println("GET /search?q=arduino HTTP/1.0");
      client.println();
      break;
    } else {
      Serial.println("connection failed");
    }
  }
}

コード:

client.connect()

2 回または 3 回失敗しますが、最終的には「for」ループの 3 回目または 4 回目の繰り返しで、Google Web サーバーとローカル Web サーバーに接続します。

そのような行動の理由を知っている人は、返信してください。

于 2010-01-03T12:56:09.560 に答える