Simple web server with WiFly Shield - HTTP response problems (solved)
i'm trying make rgb led light using web page called wifly shield mounted onto arduino uno r3. arduino connected hp laptop running ubuntu 14.04. web page shows seen in figure 1. however, http response on serial monitor turns complete gibberish. @ figure 2 see http response. finally, i've attached 1 last figure, figure 3, shows correct response should getting.
below code used wifly server i've built. got sparkfun website.
anyone know how solve problem? please me asap!!
below code used wifly server i've built. got sparkfun website.
code: [select]
#include <spi.h>
#include "wifly.h" //include wifly experimental library
char msg[128];//variables reading in html responses
int lettercount = 0;
int redpin = 3;
int greenpin = 5;
int bluepin = 6;
wiflyserver server(80);// set manually line needed initialize server()
//port 80 default http port
///////////////////////////////////////////////////////////////////
void setup()
{
pinmode(redpin, output); //set rgb pins outputs
pinmode(greenpin, output);
pinmode(bluepin, output);
digitalwrite(redpin, low); //set leds low/off
digitalwrite(greenpin, low);
digitalwrite(bluepin, low);
wifly.begin();//begin wifly communictaiosn
serial.begin(9600); //serial communication @ 9600 buad debugging
serial.print("ip: ");
serial.println(wifly.ip()); //prints ip address once associated network
//if dhcp on, ip can change. if static ip set, should not.
server.begin(); //initialize server
}
///////////////////////////////////////////////////////////////////
void loop()
{
wiflyclient client = server.available();
//the flag dataflag give notification of actual post
//is once flag can begin recording message
//so can stuff later on
int dataflag = 0;
int msgisolator = 0;
//int inchar; //variable reading in data phone/browser
//boolean isparsing = false;// flag reading in , parsing data
if (client) {
// http request ends blank line
boolean current_line_is_blank = true;
boolean endofcode = true;
char c;
while (client.connected())
{
if (client.available())
{
c = client.read();
delay(10);
//uncomment line see http respone
serial.print(c);
// if we've gotten end of line (received newline
// character) , line blank, http request has ended,
// can send reply
if (!client.available()) {
endofcode = true;
} else if (c == '\n') {
// we're starting new line
current_line_is_blank = true;
} else if (c != '\r') {
// we've gotten character on current line
current_line_is_blank = false;
endofcode = false;
}
//this message user entered going where
//we record char array
if (msgisolator == 1)
{
recordmessage(c);
delay(100);
}
if ((c == '\n' && current_line_is_blank && !client.available()) || endofcode)
{
//as page has been refreshed letter count set zero
lettercount = 0;
//once page has been refreshed no longer on first run through
//off program set false
endofcode = false;
// send standard http response header
client.println("http/1.1 200 ok");
client.println("content-type: text/html");
//client.println("connection: close");
client.println();
//this creates user see on site.
client.println("<html>");
client.println("<title>rgb led server</title>");
//the form code creates buttons click , change temp/blanketstate
client.println("<center>");
client.println("<form name=\"input\" action=\"\" method=\"post\">");
client.println("<input type=\"submit\" name=\"%\" value=\"red\" style=\"height:50px; width:150px\" >");// made buttons larger smart phone screens
client.println("</form>");
client.println("<form name=\"input\" action=\"\" method=\"post\">");
client.println("<input type=\"submit\" name=\"%\" value=\"green\" style=\"height:50px; width:150px\" >");
client.println("</form>");
client.println("<form name=\"input\" action=\"\" method=\"post\">");
client.println("<input type=\"submit\" name=\"%\" value=\"blue\" style=\"height:50px; width:150px\" >");
client.println("</form>");
client.println("</center>");
client.println("</html>");
//***note: added reload button, , broke everything. combined temperature state , number 1 line ,
//took out other html code. worked. leads me beleive there wifly can serve @ time??***
delay(500);//delay important. gives browser time process requests
lettercount = 0;
checkaction();//go check action function html button pressed.
break;
}
//if want see data comming in , going out uncomment line below
//serial.print(c);
//we detect actual post data in other words user entered
//once isolate can parse , use it
if (c =='%')
{
dataflag = 1;
}
if (dataflag == 1)
{
//in here goes user entered data follows string "25="
if (c == '=')
{
//trim fat of recorded char user entered message
msgisolator = 1;
}
}
}
}
// give web browser time receive data
delay(100);//delay important
client.flush();
client.stop();
}
}
///////////////////////////////////////////////////////////////////////
char recordmessage (char incomingmsg)
{
//lettercount = 0;
msg[lettercount] = incomingmsg;
lettercount++;
delay(100);
}
///////////////////////////////////////////////////////////////////////
void checkaction()
// first 2 or 3 letters of each message read determine button clicked on webage
{
if (msg[0] == 'r' && msg[1] == 'e' && msg[2] == 'd')// turn on red led
{
digitalwrite(redpin, high);
digitalwrite(greenpin, low);
digitalwrite(bluepin, low);
}
//-------------------------------------------------------
else if (msg[0] == 'g' && msg[1] == 'r' && msg[2] == 'e')//turn on green led
{
digitalwrite(redpin, low);
digitalwrite(greenpin, high);
digitalwrite(bluepin, low);
}
//-------------------------------------------------------
else if (msg[0] == 'b' && msg[1] == 'l' && msg[2] == 'u')//turn on blue led
{
digitalwrite(redpin, low);
digitalwrite(greenpin, low);
digitalwrite(bluepin, high);
}
}//end checkaction()
anyone know how solve problem? please me asap!!
that not gibberish. header.
i don't see difference between second , third image.
also, type of form using uses post method. send data after header (blank line or double cr/lf), , using client.flush() delete it. either read after blank line, or recommend, change form methods get.
edit: , none of post request. requests.
i don't see difference between second , third image.
also, type of form using uses post method. send data after header (blank line or double cr/lf), , using client.flush() delete it. either read after blank line, or recommend, change form methods get.
edit: , none of post request. requests.
Arduino Forum > Using Arduino > Project Guidance > Simple web server with WiFly Shield - HTTP response problems (solved)
arduino
Comments
Post a Comment