Webserver ajax_inputs en GET /

algemene C code
Berichten: 17
Geregistreerd: 23 Mei 2014, 22:52

Webserver ajax_inputs en GET /

Berichtdoor -zuur- » 05 Jun 2014, 20:38

ik werk met mijn web server via ajax inputs om zo mijn apparaten aan te sturen.

nu wil ik op de webserver OOK images kunnen laden.

als ik mijn sketch uit rust met :

Code: Alles selecteren
if (StrContains(HTTP_req, "ajax_inputs")) {
                        // send rest of HTTP header
                        client.println(F("Content-Type: text/xml"));
                        client.println(F("Connection: keep-alive"));
                        client.println();
                        SetLEDs();
                       
                        // send XML file containing input states
                        XML_response(client);
                    }


werkt alles om aan te sturen maar geen image load.

als ik de sketch uit voer met :

Code: Alles selecteren
if (StrContains(HTTP_req, "GET / ")
                                 || StrContains(HTTP_req, "GET /index.htm")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("index.htm");        // open web page file
                    }
else if (StrContains(HTTP_req, "GET /pic.jpg")) {
                        webFile = SD.open("pic.jpg");
                        if (webFile) {
                            client.println("HTTP/1.1 200 OK");
                            client.println();
                        }
                    }


werkt de image wel maar het schakelen niet meer.

is er een combi van dit te maken??

Code: Alles selecteren
if (StrContains(HTTP_req, "ajax_inputs", "GET /")) {


staat de sketch ook niet toe. (heeft te maken met de RCSWITCH libary)


nog even de complete void loop :

Code: Alles selecteren
void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read(); // read 1 byte (character) from client
                // limit the size of the stored received HTTP request
                // buffer first part of HTTP request in HTTP_req array (string)
                // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1)
                if (req_index < (REQ_BUF_SZ - 1)) {
                    HTTP_req[req_index] = c;          // save HTTP request character
                    req_index++;
                }
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // send a standard http response header
                    client.println(F("HTTP/1.1 200 OK"));
                    // remainder of header follows below, depending on if
                    // web page or XML page is requested
                    // Ajax request - send XML file
                    if (StrContains(HTTP_req, "ajax_inputs")) {
                        // send rest of HTTP header
                        client.println(F("Content-Type: text/xml"));
                        client.println(F("Connection: keep-alive"));
                        client.println();
                        SetLEDs();
                       
                        // send XML file containing input states
                        XML_response(client);
                    }
                    else {  // web page request
                        // send rest of HTTP header
                        client.println(F("Content-Type: text/html"));
                        client.println(F("Connection: keep-alive"));
                        client.println();
                        // send web page
                        webFile = SD.open("index.htm");        // open web page file
                        if (webFile) {
                            while(webFile.available()) {
                                client.write(webFile.read()); // send web page to client
                            }
                            webFile.close();
                        }
                    }
                    // display received HTTP request on serial port
                    Serial.print(HTTP_req);
                    // reset buffer index and all buffer elements to 0
                    req_index = 0;
                    StrClear(HTTP_req, REQ_BUF_SZ);
                    break;
                }
                // every line of text received from the client ends with \r\n
                if (c == '\n') {
                    // last character on line of received text
                    // starting new line with next character read
                    currentLineIsBlank = true;
                }
                else if (c != '\r') {
                    // a text character was received from client
                    currentLineIsBlank = false;
                }
            } // end if (client.available())
        } // end while (client.connected())
        delay(1);      // give the web browser time to receive the data
        client.stop(); // close the connection
    } // end if (client)
}

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Webserver ajax_inputs en GET /

Berichtdoor nicoverduin » 05 Jun 2014, 23:50

-zuur- schreef:
Code: Alles selecteren
if (StrContains(HTTP_req, "ajax_inputs", "GET /")) {


staat de sketch ook niet toe. (heeft te maken met de RCSWITCH libary)


Lijkt me logisch. StrContains() kan alleen kijken of HTTP_req EEN string bevat niet 2. Dan moet je hem splitsen en en beide vragen ORen. RCSwitch lijkt me stug eigenlijk.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 17
Geregistreerd: 23 Mei 2014, 22:52

Re: Webserver ajax_inputs en GET /

Berichtdoor -zuur- » 06 Jun 2014, 20:08

ok daar zit wel een logica in maar ik heb het ook al met OR gedaan ||

maar hierbij doet hij ook niks....
kan je me een handje op weg helpen??

Berichten: 4067
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Webserver ajax_inputs en GET /

Berichtdoor shooter » 07 Jun 2014, 20:23

Code: Alles selecteren
if (StrContains(HTTP_req, "GET / ")
                                 || StrContains(HTTP_req, "GET /index.htm")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("index.htm");        // open web page file
                    }
if (StrContains(HTTP_req, "GET /pic.jpg")) {
                        webFile = SD.open("pic.jpg");
                        if (webFile) {
                            client.println("HTTP/1.1 200 OK");
                            client.println();
                        }
                    }

ik heb else weggehaald probeer dat eens
paul deelen
shooter@home.nl

Berichten: 17
Geregistreerd: 23 Mei 2014, 22:52

Re: Webserver ajax_inputs en GET /

Berichtdoor -zuur- » 10 Jun 2014, 20:10

helaas krijg ik het nog steeds niet voor elkaar.
ik heb met if 's geprobeerd met else if
na de if (webfile) plaatsen er voor maar niks werkt...

als ik met meer else if 's werk kan ik wel meerdere plaatjes laden dus de else if 's achter elkaar werken wel.

alleen krijg ik de ajax inputs niet in de sketch er bij.

Code: Alles selecteren
if (StrContains(HTTP_req, "GET / ")
                                 || StrContains(HTTP_req, "GET /index.htm")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("index.htm");        // open web page file
                    }
                    else if (StrContains(HTTP_req, "GET /lamp1.jpg")) {
                        webFile = SD.open("lamp1.jpg");
                        if (webFile) {
                            client.println("HTTP/1.1 200 OK");
                            client.println();
                        }
                    }
                    else if (StrContains(HTTP_req, "GET /TV.jpg")) {
                      webFile = SD.open("TV.jpg");
                        if (webFile) {
                            client.println("HTTP/1.1 200 OK");
                            client.println();
                        }
                        }
                        if (webFile) {
                            while(webFile.available()) {
                                client.write(webFile.read()); // send web page to client
                            }
                            webFile.close();
                        }


// met dit stuk hier onder er bij werkt het niet meer.

                        if (StrContains(HTTP_req, "ajax_inputs")) {
                      // send rest of HTTP header
                        client.println(F("Content-Type: text/xml"));
                        client.println(F("Connection: keep-alive"));
                        client.println();
                        SetLEDs();
                       
                        // send XML file containing input states
                        XML_response(client);
                        }

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 30 gasten