Go Down

Topic: Ethernet shield - php server - interazione (Read 4932 times) previous topic - next topic

LeonidRusnac

grazie a tutti, adesso mi sono messo a fare delle prove con jQuery

ho scritto questo codice provaj.html
Code: [Select]
<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.7.1.js"></script>
<script>
   function invia() {
     // invio, richiedo dati
     $.get( 'http://192.168.1.177', { data: 'pinD3' },
             function( answer ) {
               $( "#result" ).html( answer );
             }
           );
   };
</script>
</head>
<body>
<input id="prova" onclick="invia()" type="button" value="Invia"/>
<div id="result"></div>
</body>
</html>


funziona tutto bene mi accende il led del pin digitale 3 ma non riesco a mandare il messaggio indietro da arduino
nello sketch di arduino cosa dovrei mettere? un semplice client.println("messaggio")  o qualcos'altro?

pitusso

#16
Feb 16, 2012, 06:00 pm Last Edit: Feb 16, 2012, 06:03 pm by pitusso Reason: 1
ciao,
posta anche il codice Arduino.

Cmq sì, dovresti gestire una risposta da parte di Arduino (a seguito della conferma di ricezione - il 200 OK), con content-type text/plain

LeonidRusnac

#17
Feb 16, 2012, 06:22 pm Last Edit: Feb 16, 2012, 07:00 pm by LeonidRusnac Reason: 1
il codice di arduino è molto semplice ma non mi mostra il messaggio

Code: [Select]
#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0x90, 0xa2, 0xda, 0x0d, 0x05, 0x18 };
IPAddress ip(192,168,1,177);

EthernetServer server(80);

void setup(){
 Serial.begin(9600);
 Ethernet.begin(mac, ip);
 server.begin();
 Serial.println("ready");
}

void loop(){
 EthernetClient client = server.available();
 if (client) {
 while (client.connected()) {
 if (client.available()) {
 
 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: text/html");
 client.println("messaggio");
 
 if( client.find("pinD3") ) { // search for 'GET'
 
 Serial.print("Digital pin ");
 pinMode(3, OUTPUT);
 digitalWrite(3, HIGH);
 }
 // give the web browser time to receive the data
 delay(1);
 client.stop();
 }
 }
}}

pablos

no comment

pitusso

Quote
Si devi mettere un client.print ciao


..mi sa meglio un
Code: [Select]
client.println()  :P
dopo il println del tuo messaggio.


LeonidRusnac



Code: [Select]
client.println()  :P
dopo il println del tuo messaggio.



non funziona comunque :(

pablos

#21
Feb 16, 2012, 10:02 pm Last Edit: Feb 16, 2012, 10:07 pm by pablos Reason: 1
Si io messo un client.print per intendere che ci deve mettere un messaggio di risposta, comunque non è detto che ci debba per forza essere un a capo, può anche usare un # per indicare fine messaggio.
Comunque un mese fa circa avevo pubblicato un html con jquery  e sketch. Il punto è che non ho ancora capito cosa vuole fare.... Un php in un server, una pagina html dentro Arduino, un html su una macchina esterna, una pagina statica su sd, arduino client, arduino webserver
Ciao
no comment

LeonidRusnac

adesso sto facendo la prova di una pagina html esterna con jQuery.

voglio mandare una richiesta ad arduino e leggere la risposta inviata da arduino mostrandola in un div

Code: [Select]
client.println("messaggio"); questo è quello che voglio mandare da arduino al html

pablos

ok, la risposta in realtà viene mandata al tuo html, ma non c'e' nulla che la legge

function invia() {
   ........................
..............................
            function( answer ) {
              $( "#result" ).html( answer );
            }
          );
  };

devi lavorare su questo pezzo è questa funzione che legge la risposta dell' http 1.1
no comment

lucadentella

ciao

guardando sia il codice Ajax che quello Arduino sembra tutto ok... eppure a quanto dici non viene correttamente visualizzato il "messaggio"? Vedo che il codice Ajax lo aggiungerebbe al div "result"... dovresti provare a modificare il codice Ajax magari aggiungendo nella callBack function qualcosa tipo
Code: [Select]
alert('Ricevuta risposta');
così vediamo se almeno la funzione di callBack viene invocata...
lucadentella.it

LeonidRusnac


ok, la risposta in realtà viene mandata al tuo html, ma non c'e' nulla che la legge

function invia() {
   ........................
..............................
            function( answer ) {
              $( "#result" ).html( answer );
            }
          );
  };

devi lavorare su questo pezzo è questa funzione che legge la risposta dell' http 1.1


ma non dovrebbe mostrarmi tutta la richiesta allora?

lucadentella


ok, la risposta in realtà viene mandata al tuo html, ma non c'e' nulla che la legge


ciao

in realtà la $.Get di JQuery accetta come terzo parametro una funzione di "callBack" sulla risposta alla GET... il codice postato semplicemente definisce tale funzione "in line" con il metodo $.Get... leggendola più estesa sarebbe:

- fai la chiamata GET a http://192.168.1.177 con parametro data='pinD3'
- se ottieni risposta, passa quello che ricevi alla funzione di callBack "answer"
- la funzione "answer" ricerca un elemento con ID "result" e imposta il valore HTML di tale elemento con quanto ha ricevuto
lucadentella.it

pablos

#27
Feb 16, 2012, 10:19 pm Last Edit: Feb 16, 2012, 10:22 pm by pablos Reason: 1
io nel jquery uso questa funzione ajax

$.ajax({
     type: "POST",
       data: dato,
       dataType: "text",
       cache: false,
       url: url,
       success: function(r)
        {
       .......................
            Qui dentro c'e' la stringa di risposta di arduino
           .......................
       },
       error: function()
         {
      .............
                qui gli faccio fare x cose in caso ho un errore
              .............    
      }
no comment


lucadentella

tu però stai facendo una POST, lui una GET e in realtà $.Get è uno "shorthand" per la più generale $.Ajax che usi tu
lucadentella.it

Go Up