Pages: 1 [2] 3 4 ... 7   Go Down
Author Topic: Ethernet shield - php server - interazione  (Read 4042 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 0
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

ho scritto questo codice provaj.html
Code:
<!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?
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2291
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 16, 2012, 12:03:52 pm by pitusso » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il codice di arduino è molto semplice ma non mi mostra il messaggio

Code:
#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();
  }
  }
}}
« Last Edit: February 16, 2012, 01:00:45 pm by LeonidRusnac » Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3255
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si devi mettere un client.print ciao
Logged

no comment

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2291
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Si devi mettere un client.print ciao

..mi sa meglio un
Code:
client.println()
  smiley-razz
dopo il println del tuo messaggio.

Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Code:
client.println()
  smiley-razz
dopo il println del tuo messaggio.


non funziona comunque smiley-sad
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3255
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
« Last Edit: February 16, 2012, 04:07:56 pm by pablos » Logged

no comment

Offline Offline
Jr. Member
**
Karma: 0
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
client.println("messaggio");
questo è quello che voglio mandare da arduino al html
Logged

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3255
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

no comment

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
alert('Ricevuta risposta');
così vediamo se almeno la funzione di callBack viene invocata...
Logged

lucadentella.it

Offline Offline
Jr. Member
**
Karma: 0
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

lucadentella.it

Genova
Offline Offline
Faraday Member
**
Karma: 38
Posts: 3255
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
               .............    
      }
« Last Edit: February 16, 2012, 04:22:16 pm by pablos » Logged

no comment

Offline Offline
Jr. Member
**
Karma: 0
Posts: 87
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie, provo anch'io allora smiley
Logged

Bergamo
Offline Offline
God Member
*****
Karma: 1
Posts: 663
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

lucadentella.it

Pages: 1 [2] 3 4 ... 7   Go Up
Jump to: