dubbio su html

scusate ragazzi una domanda , se io tramite l'interfaccia ethernet di arduino ho creato una pagina web con username e password , ora vorrei che i dati imessi nelle text box vengano salvati dentro a dellke variabili di tipo string

ho provato un paio di metodi ma senza sucesso , sapreste suggerirmi qualche aiuto

ciao

che metodo hai impostato nella form? GET o POST? Sulla stessa pagina HTML?

questo e il codice che sto utilizzando

void loop(){

lcd.begin(16, 2);
lcd.print(user);

Client client = server.available();
if (client) {
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
readString.concat(c); //store characters to string
//if HTTP request has ended
if (c == ‘\n’ && currentLineIsBlank) {
Serial.print(readString);
lcd.print(user);

if(readString.indexOf(“L=1”) > 0) {
digitalWrite(ledPin, HIGH);
LEDON = true;
}else{
digitalWrite(ledPin, LOW);
LEDON = false;
}

if(readString.indexOf(“pul”)){
digitalWrite(ledPin, HIGH);
LEDON = true;
delay(500);
digitalWrite(ledPin, LOW);
LEDON = false;

}

client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println();
//client.println("<meta http-equiv="“REFRESH”" content="“5; URL=http://xxxxxxxx”">");
client.print("");
client.print(" MATRIX SYSTEM “);
client.print(”<body bgcolor=“cyan”>");
user = client.read();

client.print("<fieldset bgcolor=“grey”>LOG IN");
client.print("<label for=“username”>Username:<input name=“username” id=“username” value=“Some Text”>");
client.print("<label for=“password”>Password:<input type=“password” name=“password” id=“password” value=“Password”>");
client.print("");
//
client.print("");
client.print("");
//
client.print("<A HREF=“http://grix.it/”><IMG SRC=“http://www.buttongenerator.com/ima/link.gif” WIDTH=78 HEIGHT=31 BORDER=0 ALT=“RELINQUISHED”>");
//
client.print("<body style=background-color: red;>");
client.print(“

RELINQUISHED

”);
client.print("<hlrows=“5” cols=“30”>LED remoto");
//
client.println(“LED
“);
client.println(”
“);
client.println(”<body style=background-color: #FFCC66;>”);
//printing LED status
client.print(“LED status: “);
if (LEDON) {
client.println(“ON”);
}
else
{
client.println(“OFF”);
}
client.print(”

<font size=“20”>accendi! |”);
client.print(" <font size=“20”>spegni!

");

//print link
client.println("


");
client.print(“

Visita www.grix.it!

”);
client.println("
");

// chiudo pagina da togliere se uso ajax
client.println("");

//clearing string for next read
readString="";
//stopping client
client.stop();

} //if c == /n … devo capire che significa
} // if client available
} // while client connesso
} // if client
} //loop

mmm mi sembra molto sballato... è un po' che non metto mano all'html direttamente ma sicuramente tutti i campi devono essere all'interno di un tag FORM altrimenti il browser non invierà il loro contenuto: il tuo esempio sembra tanto il copia&incolla di due pezzi: quello del led mi pare ok, nel primo così a occhio manca quaclosa

non sono molto esperto pero attualmente il codice funziona e cmq ora quello che mi interessa e capire come risolvere il problema delle text box , poi il resto vien man mano

Ciao, non sono un grande esperto di ETH shield e avevo chiesto anche io aiuto su un problema simile. Prova a vedere se ne cavi qualcosa: http://arduino.cc/forum/index.php/topic,53045.msg378857.html#msg378857 Probabilmente Luca ha ragione.

relinquished: non sono molto esperto pero attualmente il codice funziona

funziona nel senso che ti appare la pagina sul browser, ma se è sbagliata la form il browser non ti rimanderà mai indietro i dati...

diciamo di si che e quello che voglio , il problema e che il codice non funziona

ok guardati questo tutorial, il tuo problema ora non è lato Arduino ma di codice HTML: http://xhtml.html.it/guide/lezione/1696/struttura-del-tag-form/

ma il problema e come faccio con un pulsante ad inviare un valore in una variabile ???

Se vedi nel esempio che ti ho linkato ho messo:

 // Finestra di login
client.print("<form action='http://192.168.0.4/'>");
client.print("Nome");    
client.print("utente: <input name='Nome' value=''>");
client.print("Password: <input type='Password' name='Pwd' value=''>");
client.print("<input type='submit' value=' OK '>");
client.print("</form>");

Poi vado a leggere la stringa Nome=pippo&Pwd=pluto con questo codice:

if(readString.indexOf("Nome=pippo&Pwd=pluto") > 0) {
   login=true;
} else {
   login=false;
}

In sostanza faccio una comparazione.

DevonMiles: Poi vado a leggere la stringa Nome=pippo&Pwd=pluto con questo codice:

if(readString.indexOf("Nome=pippo&Pwd=pluto") > 0) {
   login=true;
} else {
   login=false;
}

In sostanza faccio una comparazione.

Credo potresti sostituire tutto con un confronto/assegnazione:

login=readString.indexOf("Nome=pippo&Pwd=pluto");

Se è 0, la variabile sarà false, 1 o più di 1 darà su un boolean un risultato di true.

si ma cosi il valore delle text box non viene trasferito ad una variabile, inoltre io non voglio usare il metodo get ma il metodo post

ragazzi un altro problema se nel mio codice html voglio inserire un immagine che e presente sulla mia sd card come faccio???

relinquished: inoltre io non voglio usare il metodo get ma il metodo post

come mai? processare i dati passati con il metodo GET è molto più semplice (vengono "accodati" all'URL che richiami nella forma miapagina.htm?parametro1=valore1;parametro2=valore2...)

relinquished:
ragazzi un altro problema se nel mio codice html voglio inserire un immagine che e presente sulla mia sd card come faccio???

il tuo codice html conterrà un tag che indica l’URL di quella immagine (ad es. /miaimmagine.jpg), quando il browser legge quel tag, richiederà ad Arduino l’immagine con una successiva chiamata GET /miaimmagine.jpg
Tu dovrai:

  • lato codice discriminare la chiamata che ti fa il browser
  • se vedi che viene richiesta l’immagine, leggerla da SD
  • inviare una risposta corretta al browser indicando il mimetype della immagine (altrimenti il browser non saprebbe in che formato è) e quindi inviare l’immagine

potresti spiegarti un po meglio o perlomeno farmi un piccolo esempio io ho fatto cosi ma non mi funziona

client.print("<body background=“sd.open(“immagini/reli.bmp”)”>");
ma sfortunatamente non funziona

ciao

il tuo codice presenta alcuni errori che mi fanno pensare che non ti sia molto chiaro:

  • come funziona il dialogo browser->server web
  • come si utilizzano le SD con arduino

Partiamo dal primo aspetto: una tua pagina web può essere composta da più elementi (html, immagini, css...): questi elementi non vengono inviati tutti insieme dal server (nel tuo caso Arduino) al browser dell'utente. Quello che succede è che il browser dell'utente chiede al server un URL (es. /miapagina.htm) e il server invia soltanto questa. Il browser interpreta la pagina html e -se vi sono riferimenti ad elementi esterni (immagini...)- per ognuno di questi fa una nuova richiesta al server (es. /miaimmagine1.jpg, /miaimmagine2.jpg...).

Quindi lato arduino tu dovrai, nel codice che risponde ad una GET del client, discriminare cosa ti viene chiesto e inviare i dati di conseguenza: una volta invierai la pagina html, un'altra volta l'immagine... da dove queste ti provengano (RAM, PROGRAM, SD...) è poco importante.

Per invece l'uso della SD, in particolare su come leggere il contenuto di un file, Internet è pieno di ottimi tutorial quindi ti rimando a quelli...