Pages: 1 [2]   Go Down
Author Topic: far dialogare piu client  (Read 1757 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

lato arduino



#include <SPI.h>
#include <WiFi.h>
int sensorReading = 1;
int count=0;

char ssid[] = "Ivan";      
char pass[] = "******";  
int keyIndex = 0;    
int buffer [10];

int status = WL_IDLE_STATUS;

WiFiServer server(80);

void setup() {
 
  Serial.begin(9600);
  
  
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while(true);
  }
  
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(1000);
  }
  server.begin();
  // you're connected now, so print out the status:
  printWifiStatus();
}


void loop() {

  WiFiClient client = server.available();
  if (client) {
    Serial.println("new client");
    
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // add a meta refresh tag, so the browser pulls again every 5 seconds:
          client.println("<meta http-equiv=\"refresh\" content=\"1\">");
            count ++;
            scrivibuffer();
            for (int i= 0;i <10;i++) {
              client.print(buffer);
 }
            //client.println(buffer[3]);
            Serial.println(buffer[3]);
            client.println("<br />");      
//          }
          client.println("</html>");
           break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
      // close the connection:
      client.stop();
      Serial.println("client disonnected");
  }
}


void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}

void scrivibuffer(){
 for (int i= 0;i <10;i++) {
  buffer=i*count;
  
 }
}

« Last Edit: April 09, 2013, 03:13:08 am by ale16289 » Logged

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

se comunichi direttamente in TCP, non puoi più usare il browser ma non servono gli header.

non capisco perchè fai

Code:
scrivibuffer();
            for (int i= 0;i <10;i++) {
              client.print(buffer);
quando potresti fare un for solo che somma e scrive, in oltre non capisco perchè fai ciò.


Quote
sono anche riuscito a leggere i dati mandati dallo shield da remoto con processing bastava non aprire la pagina http con l-ip del modem
cioè??? hai usato l'ip locale del modem invece che quella dell'arduino?

Quote
il problema e che devo sempre mandare l-header per le pagine http e questo mi occupa memoria nel buffer non posso far parlare direttamente server e client  ,ide arduino e processing.
cosa vuol dire? spiega meglio.

Quote
scrive due volte gli stessi dati prima di aggiornarli... ti carico gli sketch...
??? anche questo mi sembra strano, probabilmente più un problema lato processing. tatnto per cominciare la logica NON si mette mai nel draw(), usa la loop() ome faresti su arduino. nella draw() si disegna e basta; immaginati la loop e la draw come due programmi differenti. La draw deve essere leggera per evitare rallentamenti e sfarfallamenti del video.
Logged

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

Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

per il fatto di scrivi buffer hai ragione ho fatto un for di troppo...per quanto rigurda il browser per vedere i dati devo aprire la pagina http con l-id del modem per vederli.
detto questo io vorrei togliere il browser e usare la com,unicaziobne tcp/ip ma non so come fare con arduino...sai dove posso trovare qualche esempio...grazie mille...
Logged

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

lato arduino usi client.println e client.read; tu stai già usando la tcp/ip che usi per mandare richietse HTTP: immagina una cosa a strati come una cipolla, sotto ci sta il TCP, e sopra l'HTTP

poi dal pc ti colleghi via telnet, che è un "serial monitor" che però lavora col TCP invece che con la seriale.

basta fare da riga di comando (sia per windows, linux e mac!) "telenet o IP PORTA" dove ip è l'ip locale dell'arduino (non capisco perchè dici modem.. studiati la differenza tra modem e router, e anche cos'è la NAT, se no non ne esci vivo! e nemmeno io smiley-grin )
Logged

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

Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ok in effeti facevo un po di confusione adesso ho capito...stavo pensando ,o meglio mi hanno detto di fare una connessione punto punto senza dovermi connettere a internet, usando quindi gli ip dei due dispositivi ,computer e wifi shield, l-unico esempio che ho trovato e questo pero usa una libreria diversa da quella classica...che te ne sembra

http://www.mauroalfieri.it/informatica/wifi-shield-arduino-libreria.html
Logged

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

la libreria da usare dipende da che chip monta la Shiled che hai comprato... non va a gusti smiley-wink
Logged

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

Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

infatti avevo qualche dubbio a riguardo....ma la mia che il wifi shield ufficiale quindi non posso usarla?....e per la connessione punto punto?
Logged

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

se la tua è l'ufficiale usa la libreria ufficiale, gli esempi sono già nell'ide.
Logged

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

Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si pero se ho capito bene non ce la possibilta di scegliere una connessione punto punto, ma si collega sempre ad una rete tramite un access point.
Logged

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

la connessione punto a punto si chiama "ad hoc", ma non trovo nulla sul fatto che sia supportata.. dalla libreria direi di no
Logged

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

Offline Offline
Jr. Member
**
Karma: 1
Posts: 99
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

e infatti...per queo volevo sapere se potevo usare l-altra libreria...
Logged

Pages: 1 [2]   Go Up
Jump to: