2012-10-29 43 views
4

我有一个问题让我的Arduino以太网屏蔽层与服务器进行通信, 串行监视器上的结果总是:的Arduino以太网屏蔽未连接到Web服务器

我的Arduino代码

#include <Ethernet.h>   //library for ethernet functions 
#include <SPI.h> 
#include <Dns.h> 
#include <Client.h>    //library for client functions 
#include <DallasTemperature.h> //library for temperature sensors 

// Ethernet settings 
byte mac[] = {0x09,0xA2,0xDA,0x00,0x01,0x26}; //Replace with your Ethernet shield MAC 
byte ip[] = { 192,168,0,54}; //The Arduino device IP address 
byte subnet[] = { 255,255,255,0}; 
byte gateway[] = { 192,168,0,1}; 
IPAddress server(192,168,0,53);     // IP-adress of server arduino sends data to 

EthernetClient client; 

bool connected = false;         

void setup(void) {          

    Serial.begin(9600);         
    Serial.println("Initializing Ethernet."); 
    delay(1000); 
    Ethernet.begin(mac, ip , gateway , subnet);  

} 

void loop(void) {          

    if(!connected) {         
     Serial.println("Not connected"); 
     if (client.connect(server, 80)) {     
      connected = true; 
      int temp =analogRead(A1);      
      Serial.print("Temp is ");        
      Serial.println(temp); 
      Serial.println(); 
      Serial.println("Sending to Server: ");     
      client.print("GET /formSubmit.php?t0=");    
      Serial.print("GET /formSubmit.php?t0=");    
      client.print(temp); 
      Serial.print(temp); 
      client.println(" HTTP/1.1");     
      Serial.println(" HTTP/1.1");     
      client.println("Host: http://localhost/PhpProject1/");  
      Serial.println("Host: http://localhost/PhpProject1/");  
      client.println("User-Agent: Arduino");   
      Serial.println("User-Agent: Arduino");   
      client.println("Accept: text/html");   
      Serial.println("Accept: text/html");   
      //client.println("Connection: close");   
      //Serial.println("Connection: close");   
      client.println();        
      Serial.println(); 
      delay(10000);            
     } 
     else{ 
     Serial.println("Cannot connect to Server");    
     } 
    } 
    else { 
     delay(1000);            
     while (client.connected() && client.available()) {   
     char c = client.read();         
     Serial.print(c);           
     }               
     Serial.println();           
     client.stop();            
     connected = false;           
    } 
} 

服务器是运行在pc上的Apache服务器,代码中的服务器ip地址是pc ip地址。出于测试目的,我在我的家庭网络工作,没有代理或防火墙,而且我还在电脑上关闭了防病毒和防火墙。

结果在串行监控始终是:

Not connected 
Cannot connect to Server 

有什么想法?

+1

是服务器上运行? telnet 192.168.0.53 80'返回什么?你是通过代理还是防火墙进行连接(似乎不是,但必须要问)?也许试试更简单的'Ethernet.begin(mac,ip)'来排除网关的问题。 –

+0

服务器是运行在pc上的Apache服务器,服务器的ip地址是pc的ip地址。 telnet 192.168.0.53 80'工作成功。 出于测试目的,我在我的家庭网络工作,没有代理或防火墙,并且我还在电脑上关闭了防病毒和防火墙。 – Ahmad

回答

2

它的工作,问题是在Ethernet.begin(mac, ip , gateway , subnet),我删除了这条线,并使用DHCP配置以太网盾,Ethernet.begin(mac)

+0

我有同样的问题,但DHCP没有解决我的问题。我确实得到一个IP分配,但是,但是当连接我得到未连接 不能/连接到服务器错误的任何其他建议? –

1

您是否验证过MAC地址是否正确?

如果还是不行,请尝试的

EthernetClient client 

代替使用

Client client(server, 80); 

,并更改

if (client.connect(server, 80)) { 

if (client.connect()) { 

希望这有助于

相关问题