Fala Galera, vejam se podem me ajudar!
Estou tentando utilizar o arduino com o shield ethernet como um server, assim posso visualizar dados enviados pelo arduino em uma página web. Meu código é bem simples, segue abaixo:
#include <Ethernet.h>
#include <EthernetServer.h>
#include <EthernetClient.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {172,17,1,200};
byte gateway[] = {172,17,1,1};
byte subnet[] = {255,255,255,0};
EthernetServer server(80);
void setup(){
Ethernet.begin(mac,ip,gateway,subnet);
server.begin();
Serial.begin(9600);
}
void loop(){
EthernetClient client = server.available();
if(client){
boolean proxLinha = true;
while(client.connected()){
if(client.available()){
char c = client.read();
Serial.println(c);
if (c == 10 && proxLinha){
Serial.println("TO AQUI");
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
}
if(c == '\n'){
proxLinha = false;
}
else if (c != '\r'){
proxLinha = false;
}
}
}
client.println("<HTML>");
client.println("<HEAD>");
client.println("<TITLE>WEBINO</TITLE>");
client.println("</HEAD>");
client.println("<BODY>");
client.println("TESTE DO JOSE");
client.println("</BODY>");
client.println("</HTML>");
}
delay(1000);
client.stop();
}
Mas ai vem o problema eu não consigo acessar através do navegador. Debugando o código eu notei o seguinte, coloquei um "Serial.println("TO AQUI");" dentro do if que verifica se o ultimo caractere da requisição é um '\n' e simplesmente não esta entrando no if, se eu tirar a comparação "c=='\n', ai funciona, minha teoria então é que esse '\n' não esta sendo entendido pelo código, alguem já passou por isso? como posso fazer pro código entender que a requisição do navegador chegou ao fim?
desde já agradeço
Josemar
Tags:
As respostas para este tópico estão encerradas.
Ae rapaziada, consegui fazer funcionar! não alterei algumas coisas, segue abaixo o código que funcionou para quem quiser:
#include <SPI.h>
#include <Ethernet.h>
//SUBSTITUA os XXX pelo seu ip e seu gateway respectivamente
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {xxx,xxx,xxx,xxx}; // ip fixo
byte gw[] = {xxx,xxx,xxx,xxx}; // gateway
byte nm[] = {255,255,255,0}; //mascara de sub rede
EthernetServer server(80);
void setup() {
// Inicia comunicação serial
Serial.begin(9600);
// inicia o shield Ethernet
Ethernet.begin(mac, ip, gw, nm);
//iniciar o servidor
server.begin();
Serial.print("Server ON ");
//printa o ip do server
//Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
//Serial.println("new client");
// an http request ends with a blank line
//boolean currentLineIsBlank = true;
boolean linhaEmBranco = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
//Serial.write(c); //Se descomentado é possivel ver o cabeçalho da requisição
if (c == '\n' && linhaEmBranco) {
// envia um header padrao para response
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>");
//client.println("<meta http-equiv=\"refresh\" content=\"5\">");
client.println("<head>");
client.println("<title>");
client.println("WEBINO");
client.println("</title>");
client.println("</head>");
client.println("<body>");
client.print("TESTE do JOSE ");
client.print("<br />");
client.print("<input type=\"button\" value=\"Clique\" onClick=\"window.alert('Josemar')\">");
client.println("<br />");
client.println("</body>");
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
linhaEmBranco = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
linhaEmBranco = false;
}
}
}
//tempo para o arduino receber os dados
delay(1);
// fecha conexao
client.stop();
Serial.println("Conexao Encerrada");
}
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por