TCP client.connect() restart ethernet ad ogni post.

Buona a tutti.

Stavo in questi giorni giocando con la ethernet shield SD + arduino UNO.

Non riesco a capire 2 cose: Per ogni post o get devo rinizializzare la scheda con Ethernet.begin(mac, ip, gateway, subnet); e client.connect ? Se non lo faccio non si connette piu..

Non posso aprire una connessione TCP e con un timing definito fare le GET/POST senza doverla chiudere ed aprire ogni volta ? Grazie mille !!

da quel che ho capito arduino lancia le GET e POST. allora, secondo il protocollo HTTP(versione 1.0, la 1.1 non la conosco bene) ogni richiesta è una connessione. Quindi sei obbligato a fare client.connect ma non Ethernet.begin(mac, ip, gateway, subnet);

Grazie della risposta, VERO ! non mi ricordavo piu. La versione 1.1 mantiene la connessione a differenza del 1.0 Nella risposta però vedo HTTP/1.1 200 OK magari provo a fare un while (client.connected()) { if (client.available()) {.... Forse qualche cosa cambia......

per il secondo problema se non reinizializzo la scheda la connessione client.connected() = FALSE.

Qualche idea ? posto il codice... //---------------------------------------------------------------------------- Client localClient(remoteServer, 80);

void setupEthernet() { localClient.flush(); Serial.println("Setup ethernet..."); Ethernet.begin(mac, ip, gateway, subnet); Client remoteClient(255); delay(500); Serial.println("Setup complete !"); } void Pachube() { Serial.println("Pachube"); if (localClient.connect()) { ftoa(pachube_data, SensorA0Reading, 2); content_length = strlen(pachube_data); localClient.print("GET /api/"); localClient.print(CONTROL_FEED_ID); localClient.print(".csv **HTTP/1.1**nHost: pachube.com\nX-PachubeApiKey: "); localClient.print(PACHUBE_API_KEY); localClient.print("\nUser-Agent: Arduino (Pachube controller v1.1)"); localClient.println("\n");

localClient.print("PUT /api/"); localClient.print(SHARE_FEED_ID); localClient.print(".csv HTTP/1.1\nHost: pachube.com\nX-PachubeApiKey: "); localClient.print(PACHUBE_API_KEY);

localClient.print("\nUser-Agent: Arduino (Pachube controller v1.1)"); localClient.print("\nContent-Type: text/csv\nContent-Length: "); localClient.print(content_length); localClient.print("\nConnection: close\n\n"); localClient.print(pachube_data); localClient.print("\n"); Serial.print("finished PUT: "); last_connect = millis(); } else { Serial.print("Ethernet Down..."); localClient.stop(); last_connect = millis(); setupEthernet(); }