Go Down

Topic: Serveur Web Arduino PHP (Read 1 time) previous topic - next topic

Pouty

Mar 25, 2017, 03:44 pm Last Edit: Mar 25, 2017, 03:49 pm by Pouty
Bonjour j'ai un projet qui consiste a afficher une valeur sur un site web contenue dans fichier contenue sur la SD. Pour cela j'ai réaliser un code html dans le quelle j'ai incorporer du php. Mais il est impossible d'afficher  la valeur contenue dans le fichier.txt.

Voici mon programme Arduino:
Code: [Select]

#include <SPI.h>
#include <Ethernet2.h>
#include <SD.h>

// size of buffer used to capture HTTP requests
#define REQ_BUF_SZ   20

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 143); // IP address, may need to change depending on network
EthernetServer server(80);  // create a server at port 80
File webFile;
char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string
char req_index = 0;              // index into HTTP_req buffer

void setup()
{
    // disable Ethernet chip
    pinMode(10, OUTPUT);
    digitalWrite(10, HIGH);
    
    Serial.begin(9600);       // for debugging
    
    // initialize SD card
    Serial.println("Initializing SD card...");
    if (!SD.begin(4)) {
        Serial.println("ERROR - SD card initialization failed!");
        return;    // init failed
    }
    Serial.println("SUCCESS - SD card initialized.");
    // check for index.htm file
    if (!SD.exists("Site.php")) {
        Serial.println("ERROR - Can't find Site.php file!");
        return;  // can't find index file
    }
    Serial.println("SUCCESS - Found Site.php file.");
    
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
}

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
                // 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++;
                }
                // print HTTP request character to serial monitor
                Serial.print(c);
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // open requested web page file
                    if (StrContains(HTTP_req, "GET / ")
                                 || StrContains(HTTP_req, "GET /Site.php")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("Site.php");        // open web page file
                    }
                    else if (StrContains(HTTP_req, "GET /style.css")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("style.css");        // open web page file
                    }
                    else if (StrContains(HTTP_req, "GET /test.txt")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("test.txt");        // open web page file
                    }
                   else if (StrContains(HTTP_req, "GET /Logo.jpg")) {
                        webFile = SD.open("Logo.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();
                    }
                    // 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)
}

// sets every element of str to 0 (clears array)
void StrClear(char *str, char length)
{
    for (int i = 0; i < length; i++) {
        str[i] = 0;
    }
}

// searches for the string sfind in the string str
// returns 1 if string found
// returns 0 if string not found
char StrContains(char *str, char *sfind)
{
    char found = 0;
    char index = 0;
    char len;

    len = strlen(str);
    
    if (strlen(sfind) > len) {
        return 0;
    }
    while (index < len) {
        if (str[index] == sfind[found]) {
            found++;
            if (strlen(sfind) == found) {
                return 1;
            }
        }
        else {
            found = 0;
        }
        index++;
    }

    return 0;
}


Code HTML:
Code: [Select]

<?php
$monfichier 
fopen('test.txt''r+');
$ligne fgets($monfichier);
echo (
"$ligne");
fclose($monfichier);
?>


Merci Beaucoup d'avance.  

J-M-L

#1
Mar 25, 2017, 06:49 pm Last Edit: Mar 25, 2017, 06:51 pm by J-M-L
votre arduino ne sait pas interpréter du PHP...

expliquez le mode opératoire. que doit faire l'utilisateur pour voir cette page web? sur quoi il se connecte, qui a les données etc...
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Pouty

L'utilisateur doit uniquement se connecter grâce a un navigateur sur ip de l'arduino est une page web apparait est les valeur doit apparaitre dessous des titre c'est tout.

infobarquee

bonjour,
comme l'a indiqué JML, pas de php sur un arduino

L'utilisateur doit uniquement se connecter grâce a un navigateur sur ip de l'arduino est une page web apparait est les valeur doit apparaitre dessous des titre c'est tout.
et en clair, ca donne quoi?
AUCUNE AIDE PAR MP

J-M-L

Bonsoir

Éventuellement regardez l'exemple que j'ai posté dans la partie tutos
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Pouty

D'accord merci beaucoup.

Infobarquee: En claire sa donne une consommation en kW/h qui est dynamique car elle est instantanée. Voila

Merci.

bilbo83

#6
Mar 26, 2017, 10:46 am Last Edit: Mar 26, 2017, 10:48 am by bilbo83
Juste une précision, pour une consommation instantanée, l'unité est le Watt, pas le kW/h.
Et pour une consommation électrique, l'unité est le kW.h et pas le kW/h.

Go Up