2010-01-02 10 views
2

Arduino 클라이언트 클래스를 사용하여 인터넷 (예 : Arduino 라이브러리 자체)에서 HTML 페이지를 가져 오려고하지만 작동하지 않습니다 (연결이 설정되지 않음). 내가 이더넷 및 Ethernet2 라이브러리를 모두 시도Arduino 웹 클라이언트 클래스가 작동하지 않습니다.

client.connect(); 

:

에 실패합니다.

내 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(;;); 
    } 
} 
+1

이더넷 쉴드가 있습니까? – maxedmelon

+0

로컬 웹 서버에 연결을 시도 했습니까? –

+0

네, 이더넷 실드를 가지고 있습니다. 네, 로컬 웹 서버에 연결하려고했는데, 역시 실패했습니다. –

답변

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() 

두 번이나 세 번 실패하지만 결국 Google 웹에 연결됩니다. se rver 및 'for'루프의 3 번째 또는 4 번째 반복에서 로컬 웹 서버로 이동합니다.

누군가 이러한 행동에 대한 이유를 알고 있다면 답장을 보내주십시오.

관련 문제