我有一个问题让我的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
有什么想法?
是服务器上运行? telnet 192.168.0.53 80'返回什么?你是通过代理还是防火墙进行连接(似乎不是,但必须要问)?也许试试更简单的'Ethernet.begin(mac,ip)'来排除网关的问题。 –
服务器是运行在pc上的Apache服务器,服务器的ip地址是pc的ip地址。 telnet 192.168.0.53 80'工作成功。 出于测试目的,我在我的家庭网络工作,没有代理或防火墙,并且我还在电脑上关闭了防病毒和防火墙。 – Ahmad