Pages: 1 2 [3]   Go Down
Author Topic: Lo zipit Z1 e arduino  (Read 1709 times)
0 Members and 1 Guest are viewing this topic.
Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1745
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

cosa vuol dire non funziona?non compila? non funziona nulla?

a parte il doppio

Code:
while (client.connected()) {

e il

Code:
client.stop(); //disconnetti il client

che metterei dopo il while, dovrebbe funzionare....

Code:
/*
 * Web Server
 *
 * A simple web server that shows the value of the analog input pins.
 */

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

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
  192, 168, 1, 4 };

EthernetServer server(23);
EthernetClient client;
void setup()
{
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
  Serial.println("parto");
}

void loop()
{
  client = server.available();
  if (client) {
    // an http request ends with a blank line

    while (client.connected()) {


      Serial.println("invio");
      server.print("a");
      Serial.println("attendo una risposta di almeno 5 caratteri");
      while (client.available() < 5){
        //do nothing
      }
      Serial.println("risposta ricevuta! Rispondoi e disconnetto il client, di seguito quello che ho letto:");
      server.print("Grazie per avermi parlato, hai scritto:");
      while (client.available()){
        server.print( client.read() );
      }

      delay(10); //dai il tempo al client di ricevere il messaggio
      client.stop(); //disconnetti il client


    }
    client.stop(); //disconnetti il client
  }
}

edit: come non detto! client.availble() NON server.available()!

con server.available() ottieni un oggetto di tipo EthernetClient con dei dati da leggere.
con client.available() ottieni il numero di byte che quel client ha ricevuto.

oltre al fatto che se usi server.write  scrivi a tutti i client connessi, mavabe, qui dipende da cosa vuoi fare
Cavolo! Volete proprio confondermi? Non ho capito ancora cosa c'entra quell' edit.... potresti spiegarmi bene bene?
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

con quell'edit dico che hai sbagliato completamente la logica.

server.available() ritorna un oggetto EthernetClient che ha dei dati da leggere con la read.
client.available() ritorna il numero di dati da leggere con la read() da quel client.

esempio: ci sono 2 client connessi. nessuno scrive:
sia server.available() ritorna NULL (nessun oggetto client ha ricevuto dati)
client1.available() e client2.available() ritornano 0 (ovvero 0 dat da leggere)

ora client1 scrive "ciao" ad arduino:
server.available() ritorna client1 (che è un oggetto di tipo EthernetClient)
client1.available() ritorna 4 (ci sono 4 byte da leggere, perchè pgni lettera è un byte, se hai usato la codifica ASCII o UTF8, 2 byte per lettera se hai usato la codifica UTF16... quasi tutti usano la ASCII o la UTF8)
client2.available() ritorna 0
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1745
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

con quell'edit dico che hai sbagliato completamente la logica.

server.available() ritorna un oggetto EthernetClient che ha dei dati da leggere con la read.
client.available() ritorna il numero di dati da leggere con la read() da quel client.

esempio: ci sono 2 client connessi. nessuno scrive:
sia server.available() ritorna NULL (nessun oggetto client ha ricevuto dati)
client1.available() e client2.available() ritornano 0 (ovvero 0 dat da leggere)

ora client1 scrive "ciao" ad arduino:
server.available() ritorna client1 (che è un oggetto di tipo EthernetClient)
client1.available() ritorna 4 (ci sono 4 byte da leggere, perchè pgni lettera è un byte, se hai usato la codifica ASCII o UTF8, 2 byte per lettera se hai usato la codifica UTF16... quasi tutti usano la ASCII o la UTF8)
client2.available() ritorna 0
Quindi il codice giusto sarebbe?
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ehhh la pappa pronta no  smiley-razz
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1745
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ehhh la pappa pronta no  smiley-razz
Ehh sto facendo casino....
così va bene?
Code:
/*
 * Web Server
 *
 * A simple web server that shows the value of the analog input pins.
 */

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

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
  192, 168, 1, 4 };

EthernetServer server(23);
EthernetClient client;
void setup()
{
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
  Serial.println("parto");
}

void loop()
{
  client = client.available();
  if (client) {
    // an http request ends with a blank line

    while (client.connected()) {


      Serial.println("invio");
      server.print("a");
      Serial.println("attendo una risposta di almeno 5 caratteri");
      while (client.available() < 5){
        //do nothing
      }
      Serial.println("risposta ricevuta! Rispondoi e disconnetto il client, di seguito quello che ho letto:");
      server.print("Grazie per avermi parlato, hai scritto:");
      while (client.available()){
        server.print( client.read() );
      }

      delay(10); //dai il tempo al client di ricevere il messaggio
      client.stop(); //disconnetti il client


    }
    client.stop(); //disconnetti il client
  }
}[code]
[/code]
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10449
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

se client.available() ritorna un numero, come fai ad essegnarlo ad una variabile di tipo EthernetClient?
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Dueville (VI)
Offline Offline
Edison Member
*
Karma: 28
Posts: 1745
http://cesarecacitti.wordpress.com/
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

se client.available() ritorna un numero, come fai ad essegnarlo ad una variabile di tipo EthernetClient?
Dove?
Sto facendo un casino pazzesco........
Logged

Arduino UNO r3, Arduino MEGA 1280, adafruit motor shield, bluetooth module, enc28j60 shield.
Ultimi acquisti: un sacco di componenti elettronici, ATTEN AT 8586

Pages: 1 2 [3]   Go Up
Jump to: