Pages: [1]   Go Down
Author Topic: [RESOLU] Besoin d'aide pour lire Fichier HTML  (Read 827 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous

Je dédute dans la prgrammation avec l'Arduino ( Mega + Ethernet ) et avec la programmation en général.

J'ai trouvé beaucoup d'informations qui m'ont permis d'avancer dans mon projet mais la je n'arrive pas
à trouver l'info qu'il me faut sur ce forum et sur internet.

Je vous explique brievement mon programme ainsi que mon problème.
- Le but le mon programme est d'afficher sur un navigateur telle ou telle page HTML "fichier_x.html" en fonction de certaines conditions
(pour moi cela ce fait avec les pins en INPUT ).

J'ai créé mes fichiers .html qui marche sans problème sur mon navigateur mais impossible de le faire afficher depuis mon Arduino.
Mes fichiers sont sur un serveur, l'adresse des différents .html sur ce serveur est : http//:192.1.1.xxx/fichier_x.html.

J'arrive a afficher une image.gif avec la commande :
Code:
client.print("<img src=http://192.1.1.xxx/image.gif>");

mais donc ne trouve pas la commande pour afficher un fichier HTML.

Je vous met la partie du code qui marche pour l'image.gif.
Code:
if (buttonState4 == HIGH) {
  if (buttonState1 == HIGH && buttonState2 == LOW && buttonState3 == LOW){    
   EthernetClient client = serveur.available();
     if (client) {
      while (client.connected()) {
       if (client.available()) {
         char c = client.read();
   }
      else {
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           client.println();
           client.println("<!DOCTYPE HTML>");
           client.println("<html>");
           client.print("<img src=http://192.1.1.113/image.gif>");
      break;
       }
     }
    delay(1);
   client.stop();
    
}}

Je pense qu'il me manque juste la bonne commade a mettre dans client.print() mais j'ai essayé
beaucoup de chose et aucune ne marche.

Merci d'avance pour votre aide

Benoit

 
« Last Edit: January 15, 2013, 02:04:33 am by Benoit18 » Logged

France - Bais(53)
Offline Offline
Newbie
*
Karma: 0
Posts: 47
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

C'est du HTML que tu envois par le client.print. Met un lien HTML dans le client.print . C'est peut être une solution???
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'ai déja essayé plusieur lien dont le plus simple
Code:
client.print("<http//:192.1.1.xxx/fichier.html>")
mais cela ne fonctionne pas.

J'en ai cherché d'autre mais aucun ne fonctionne, il se peut qu'il ne me manque pas grand chose dans mon code.

Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3026
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Quote
C'est du HTML que tu envois par le client.print. Met un lien HTML dans le client.print . C'est peut être une solution???
Cette solution affichera le lien seulement.
je pense que pour faire afficher une page html sur le client 'il faut mettre l'URL dans un FRAME.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
<HEAD>
<TITLE>A simple frameset document</TITLE>
</HEAD>
<FRAMESET cols="20%, 80%">
  <FRAMESET rows="100, 200">
      <FRAME src="contents_of_frame1.html">
      <FRAME src="contents_of_frame2.gif">
  </FRAMESET>
  <FRAME src="contents_of_frame3.html">
</FRAMESET>
</HTML>
(extrait de HTML 4.0 specification)
Logged

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour, pour un code source HTML plus simple, je mettrais
Code:
<html>
<head>
<title>Titre</title>
</head>
<body>
<iframe src="http//:192.1.1.xxx/fichier.html" height="99%" width="100%"></iframe>
</body>
</html>
/!\ : Ne pas mettre 100% dans height, sinon un ascenseur apparaitra.
Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci beaucoup,

j'assaye les deux codes demain et je vous tiens au courant.

Par contre avec les " comment transcrire en langage Arduino car dans client.print() plusieurs " ne passe pas ?

mon code serai par exemple:
Code:
client.print("<html>")
client.print("<head>")
client.print("<title>Titre</title>")
client.print("<body>")
client.print("<iframe src=http//:192.1.1.xxx/fichier.html height=99% width=100%></iframe>")
client.print("</body>")
client.print("</html>")
?

Benoit
« Last Edit: January 13, 2013, 02:18:22 pm by Benoit18 » Logged

France, Lyon 6°
Offline Offline
Full Member
***
Karma: 0
Posts: 144
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut mettre \" à la place de ".
Le \ est chez mac Maj. + alt + / et chez Window se fait Alt Gr + 8 (sans Maj.).
Je ne suis pas sûr, n'ayant pas de clavier PC sous la main.
Logged

- Arduino UNO R3;
- PowerBook G4;
  - Arduino (C)
  - Eclipse (Java)
  - wxLua (µLua)
  - TextWrangler (HTML + JS)
- (3)DS et bientôt R4 (po

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il faut mettre \" à la place de ".
Le \ est chez mac Maj. + alt + / et chez Window se fait Alt Gr + 8 (sans Maj.).
Je ne suis pas sûr, n'ayant pas de clavier PC sous la main.

merci en remplaçant comme tu l'as dis ça prend la commande.

Code:
<html>
<head>
<title>Titre</title>
</head>
<body>
<iframe src="\http//:192.1.1.xxx/fichier.html\" height=\"99%\" width=\"100%\"></iframe>
</body>
</html>

Je n'arrvive pas a faire fonctionner ce code , il m'affiche des fenetres vides les unes dans les autres sans afficher
mon fichier html.


J'ai essayé les 2 codes donné précédement et cela fait quasiment la même chose.

Quand je tape directement l'adresse de mon fichier html, il s'affiche correctement dans le navigateur.

Logged

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3026
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un iframe est juste un contenant qui affiche l'URL passée en argument. Après cela dépend aussi de ce que tu fais dans la page appelée.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

un iframe est juste un contenant qui affiche l'URL passée en argument. Après cela dépend aussi de ce que tu fais dans la page appelée.

Avec la page appelée je ne fait que l'afficher sur mon navigateur, j'ai plusieurs pages différentes et en fonction des action sur l'arduino
j'affiche telle ou telle page c'est tout.
Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1661
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
déjà une erreur à première vue
Quote
<iframe src="\http//:192.1.1.xxx/fichier.html\" height=\"99%\" width=\"100%\"></iframe>
au lieu de
Quote
<iframe src=\"http//:192.1.1.xxx/fichier.html\" height=\"99%\" width=\"100%\"></iframe>

est ce que ton nono est sur la même plage ip que le pc hébergeant tes pages?
donne ton code entier pour voir, tu dois avoir une BIIIIIIP dedans qui fait que même sans appuyer sur une touche, il tourne en boucle.
d'ou les cadres imbriqués et la page vide.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

bonjour,
déjà une erreur à première vue
Quote
<iframe src="\http//:192.1.1.xxx/fichier.html\" height=\"99%\" width=\"100%\"></iframe>
au lieu de
Quote
<iframe src=\"http//:192.1.1.xxx/fichier.html\" height=\"99%\" width=\"100%\"></iframe>

est ce que ton nono est sur la même plage ip que le pc hébergeant tes pages?
donne ton code entier pour voir, tu dois avoir une BIIIIIIP dedans qui fait que même sans appuyer sur une touche, il tourne en boucle.
d'ou les cadres imbriqués et la page vide.

Le code était bon c'est le recopiage qui était mauvais.

Mon arduino à pour IP 192.1.1.190 et mon serveur 192.1.1.113.

Ci-joint la prog ( c'est mon premier "grand" programme ) il y a surement des choses à améliorer pour le reste du programme
pour le moment c'est l'affichage de mes pages HTML qui m'embete.

Code:

 #include <SPI.h>
 #include <Ethernet.h>
 #include <EthernetServer.h>
 #include <EthernetClient.h>
 
 byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x3F, 0x90 };
 byte ip[] = { 192,1,1,190 };
 EthernetServer serveur(80);

 const int buttonPin1 = 22; // Condition 1
 const int buttonPin2 = 23; // Condition 2
 const int buttonPin3 = 24; // Condition 3
 const int buttonPin4 = 25; // Bâtiment A
 const int buttonPin5 = 26; // Bâtiment B
 const int buttonPin6 = 27; // Bâtiment C
  
 int buttonState1 = 0;
 int buttonState2 = 0;
 int buttonState3 = 0;
 int buttonState4 = 0;
 int buttonState5 = 0;
 int buttonState6 = 0;
  
void setup() {

  pinMode(buttonPin1, INPUT);  
  pinMode(buttonPin2, INPUT);
  pinMode(buttonPin3, INPUT);
  pinMode(buttonPin4, INPUT);
  pinMode(buttonPin5, INPUT);
  pinMode(buttonPin6, INPUT);
  pinMode(buttonPin7, INPUT);
  
 Serial.begin(115200);
    
 Ethernet.begin(mac, ip);
 }

void loop()
{
  buttonState1 = digitalRead(buttonPin1);
  buttonState2 = digitalRead(buttonPin2);
  buttonState3 = digitalRead(buttonPin3);
  buttonState4 = digitalRead(buttonPin4);
  buttonState5 = digitalRead(buttonPin5);
  buttonState6 = digitalRead(buttonPin6);
  
 //---------------------------------------------------------------AUCUNE ACTIVITE-------------------------------------------------------------------------------//
  if (buttonState1 == HIGH && buttonState2 == LOW && buttonState3 == LOW ) {
   Serial.println("Aucune Activite");
   EthernetClient client = serveur.available();  
   if (client) {
    Serial.println ("Client present !");
    while (client.connected()) {
      if (client.available()) {
     char c = client.read();
   }
   else {
           client.println("HTTP/1.1 200 OK");
           client.println("Content-Type: text/html");
           client.println();
           client.println("<html>");
           client.println("<body>");
           client.println("<iframe src=\"http//:192.1.1.113/Zone_Y.html\" height=\"99%\" width=\"100%\"></iframe>");
           client.println("</iframe>");
           client.println("</body>");
           client.println("</html>");
         break;
       }
     }
     delay(1);
  client.stop();
    
}}
if (buttonState1 == LOW && buttonState2 == HIGH && buttonState3 == LOW ) {
   Serial.println("Aucune Activite");
   EthernetClient client = serveur.available();  
   if (client) {
    Serial.println ("Client present !");
    ............

La suite du programme reste dans le même principe en affichant d'autres pages HTML sous d'autres conditions.

Ce programme marche très bien lorsque j'affiche des fichiers .gif avec le code
Code:
client.print("<img src=http://192.1.1.113/image.gif>");

Merci pour votre aide

Benoit
« Last Edit: January 14, 2013, 02:06:50 pm by Benoit18 » Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1661
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

cherchez l'erreur
Quote
           client.println("<iframe src=\"http//:192.1.1.113/Zone_Y.html\" height=\"99%\" width=\"100%\"></iframe>");
           client.println("</iframe>");

déjà pour etre sur que tout fonctionne comme il faut, tu créé une page html simple avec l'iframe dedans et tu regarde si ca fonctionne.
Quote
<html>
<body>
<iframe src="http//:192.1.1.113/Zone_Y.html" height="99%" width="100%"></iframe>
</body>
</html>

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 7
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
cherchez l'erreur

           client.println("<iframe src=\"http//:192.1.1.113/Zone_Y.html\" height=\"99%\" width=\"100%\"></iframe>");
           client.println("</iframe>");

 smiley-eek pourquoi ne l'ai ja pas vu .

J'ai essayé d'afficher ma page html avec l'iframe sous windows et ça marche bien même avec mon erreur  smiley-confuse

Je charge ça demain dans mon arduino

[EDIT] l'erreur venait du doublon du </iframe> et aussi je pense du "http//:" au lieu du "http://"

Merci de votre aide pour l'iframe.

Benoit
 

Merci
« Last Edit: January 15, 2013, 02:03:47 am by Benoit18 » Logged

Offline Offline
Edison Member
*
Karma: 9
Posts: 1661
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

content pour toi alors smiley
j'avais pas vu non plus le http//:  smiley-eek-blue
Logged

Pages: [1]   Go Up
Jump to: