1

我的 Arduino Web 服务器草图偶尔会失败:

 EthernetClient client = server.available();
 if (client)

今天早上,它在第一次运行时连接得很好。现在,它无法再次连接到客户端。几天前,它工作了几次,但也失败了几次。我通过以太网电缆将屏蔽连接到我的家庭路由器。我已经验证了分配给 Arduino 的 IP 地址。我已经尝试了端口 80 和 8080。可能出了什么问题,我还能尝试什么?我的 ISP 会在这里阻止某些东西吗?请不要害怕提出显而易见的建议,因为我对网络几乎一无所知。

如果相关,这里是一段较大的代码,它循环

Serial.println("Listening");

代码:

#include <SPI.h>
#include <Ethernet.h>n

// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:

byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xF7, 0x99 };
IPAddress ip(192,168,2,5);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

String roundOpenTag = "";
String roundCloseTag = "";

void setup()
{
    // Start the Ethernet connection and the server:
    Ethernet.begin(mac, ip);
    server.begin();

    int ledPin = 8;
    // Initialize the digital pin as an output.
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
    Serial.println("Setting up");
}

void loop()
{
    // Listen for incoming clients
    EthernetClient client = server.available();
    Serial.println("Listening");
    if (client)
    {
        Serial.println("Server available");
        // An HTTP request ends with a blank line
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            Serial.println("Client connected");
            if (client.available())
            {
                char c = client.read();

我看不出包含草图的其余部分的目的。我真的很感谢你的帮助。

4

1 回答 1

1

您的 setup() 函数中有一个空的 Seiral.begin() 。尝试删除它。

编辑

当您调用 Serial.begin() 时,您必须提供您想要通信的波特率(速度)。您可以在Arduino library page阅读有关该功能的更多信息。

您的代码中有两个问题

  • 你有一个空的 Serial.begin() 函数调用,没有任何参数
  • 你有重复的 Serial.begin() 函数。您已经在 setup() 函数的开头指定了它。
于 2012-04-09T06:12:08.577 回答