本文介绍了Arduino Ethernet Shield 无法连接到 WebServer的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使 Arduino 以太网扩展板与服务器通信时遇到问题,串行监视器上的结果总是:

I have a problem making my Arduino Ethernet shield to communicate with the server,the result on the serial monitor is always:

我的 arduino 代码是

my arduino code is

#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地址.出于测试目的,我在家庭网络中工作,没有代理或防火墙,而且我还关闭了电脑上的防病毒和防火墙.

the server is an Apache server running on a pc, the server ip address in the code is the pc ip address. For testing purposes I work at my homes network, there's no proxy or firewall, and I also turned of the antivirus and firewall on my pc.

串行监视器中的结果总是:

the result in the serial monitor is always:

Not connected
Cannot connect to Server

有什么想法吗??

推荐答案

它有效,问题出在 Ethernet.begin(mac, ip , gateway , subnet),我删除了这一行并配置使用 DHCP 的以太网屏蔽,Ethernet.begin(mac)

It worked, the problem was in Ethernet.begin(mac, ip , gateway , subnet), I removed this line and configure the Ethernet Shield using the DHCP, Ethernet.begin(mac)

这篇关于Arduino Ethernet Shield 无法连接到 WebServer的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-09 03:48