Hola,
He estado probando los ejemplos que vienen incluidos en la librería ethercard (para poder usar el chip ENC28J60) y me encontrado con una cosa curiosa, en el ejemplo del cliente web. En tal ejemplo encontramos esta línea:
const char website[] PROGMEM = "www.google.com";
Al ejecutarlo obtengo lo siguiente:
[webClient]
IP: 192.168.1.136
GW: 192.168.1.1
DNS: 87.216.1.65
DNS failed
SRV: 0.0.0.0
<<< REQ
<<< REQ
<<< REQ
<<< REQ
<<< REQ
<<< REQ
...
Pero si le quito el "PROGMEM" el DNS funciona y obtengo lo siguiente:
[webClient]
IP: 192.168.1.136
GW: 192.168.1.1
DNS: 87.216.1.65
SRV: 173.194.41.20
<<< REQ >>>
HTTP/1.0 400 Bad Request
Content-Type: text/html; charset=UTF-8
Content-Length: 1419
Date: Sat, 24 May 2014 22:17:12 GMT
Server: GFE/2.0
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 4...
Por lo que el DNS sí funciona al no usar PROGMEM ¿La razón? Ni idea...
Otra cosa que no entiendo es por qué obtengo un bad request si estoy llamando a la siguiente función:
ether.browseUrl(PSTR("/search?q="), "arduino", website, my_callback);
Que, por lo que yo entiendo, equivaldría a la siguiente URL: arduino - Google Search
Esto ejecutado desde el navegador va como la seda ¿Qué añade la librería para que salga un "404 bad request"? ¿o como funciona? La función browseUrl está sin documentar.
¿Alguien sabe algo al respecto???
Saludos