Arduino (Uno) Ethernet-client-Verbindung schlägt fehl, nachdem viele Kunden druckt

Bin ich mit einem Arduino Uno mit Ethernet-Shield.

Nach dem Absenden viele HTTP-Anforderungen, client.println(...), wird der client gestartet, um Fehler beim anschließen. Die Zeit zu scheitern scheint willkürlich zu sein, und die Sequenz Auslesen aus der Schleife können überall variieren zwischen ~1000 und ~7000.

Den Fehler nicht zu tun mit dem Ethernet-Sendepuffer überläuft (Nach diese Beratung)

Hier ist der code, fehlschlägt:

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

//Network constants
byte mac[] = {0x00, 0x23, 0xdf, 0x82, 0xd4, 0x01};
byte ip[] = {/*REDACTED*/};
byte server[] = {/*REDACTED*/};
int port = /*REDACTED*/;
Client client(server, port);

//State
int sequence;

void setup(){
    Ethernet.begin(mac, ip);
    Serial.begin(9600);
    sequence = 0;

    delay(1000);
}

void loop(){
    httpPut("/topic/:test/publish?sessionId=SESenanhygrp");
    Serial.println(sequence++);
}

void httpPut(char* url){
    if (!client.connect()) {
        Serial.println("EXCEPTION: during HTTP PUT. Could not connect");
        return;
    }

    client.print("PUT");
    client.print(" ");
    client.print(url);
    client.println(" HTTP/1.0");
    client.println();

    while(!client.available()){
        delay(1);
    }

    while(client.available()) {
        char c = client.read();
        Serial.print(c);
    }

    while(client.connected()){
        Serial.println("Waiting for server to disconnect");
    }

    client.stop();
}

Tritt der Fehler im folgenden segment

if (!client.connect()) {
    Serial.println("EXCEPTION: during HTTP PUT. Could not connect");
    return;
}
An dem Punkt, wenn der client nicht verbinden, ich würde zwei Dinge tun: (1) überprüfen Sie die server-logs für jeden Beweis der server empfängt die fehlerhafte Verbindung anfordert; (2) netstat auf dem server, um festzustellen, ob die früheren verbindungen geschlossen wurden oder noch werden.
Zusätzlich zu den oben genannten, 3) würde ich überprüfen, ob der stack überlaufen ist. 4) es ist ein Speicherverlust tritt auf, dass nach tausenden von Zyklen.
Die server-logs nicht an, keine Probleme. Speicher ist immer ein problem bei der Verwendung von Arduinos, aber der obige code sollte ganz "memory safe"
Wie haben Sie die Bibliothek herunterladen von basteln?

InformationsquelleAutor ChrisSSocha | 2011-09-15

Schreibe einen Kommentar