Go Down

Topic: Coucou j'ai un probleme (Read 8807 times) previous topic - next topic

derder9161

Tu peux mettre les valeurs que tu veux du moment que si tu déclares ton tableau avec un type tu n'y mets que le même type

sophie3399

j'ai enfin compris ce qu'il fallait que je fasse exactement ! j'ai juste besoin d'une correction s'il vous plait :$ (plus précisement le tableau "Nom" ou j'ai apparement des erreurs de déclarations :/)

Code: [Select]
#include <SPI.h> // Chargement de la Librairie SPI
#include <Ethernet.h> // Chargement de la Librairie Ethernet

char Nom[i] = {"Mendiondo", "Dormont", "Millereux"};

byte mac[] = {0x90, 0xA2, 0xDA, 0x0F, 0x12, 0xDC }; // Instaure l'adresse mac de la shield Ethernet
IPAddress ip(172,19,239,60); // Initialise l'adresse IP 172.19.239.60 dans le programme

EthernetServer server(80); // Permet à la carte de communiquer avec le Navigateur en HTTP

void setup()
  {
  Serial.begin(9600);
  Ethernet.begin(mac,ip); // Initialise la Librairie Ethernet, l'adresse mac et IP 
  server.begin(); // Initialise le Serveur
  Serial.print("L'adresse du serveur HTTP est: "); // Affiche le message à l'adresse du réseau HTTP
  Serial.println(Ethernet.localIP()); // Affiche l'adresse IP
  }


void loop()
  {
  //Fonction qui permet de savoir si un client est connecté au serveur et que des données sont disponibles
  EthernetClient client = server.available(); // Regarde si le serveur est disponible
  if (client)
  {
    //Un nouveau client est identifié
    Serial.println("new client");
    boolean currentLineIsBlank = true; // Une requête http finit avec une ligne blanche
   
    //Tant que le client est connecté et que les données sont disponibles, on va lire et envoyer les données sur le port série
    while (client.connected()) // Tant que l'arduino et la carte réseau sont connectés
   {
    if (client.available()) // Si le client est disponible
    {
      char c = client.read();// Lit la valeur du client
      Serial.write(c);
      if (c == '\n' && currentLineIsBlank) // Si on est arrivé à la fin de la ligne (on a reçu un retour à la ligne) et que la ligne est blanche, la requête http est fini, donc on peut envoyer une réponse
      {
       //Quand toutes les données sont envoyées, la requête HTTP est terminée, fin de la connexion     
       client.println("HTTP/1.1 200 OK");
       client.println("Content-Type: text/html");
       client.println("Connnection: close"); // La connexion sera fermé après l'achèvement de la réponse
       
       //Permet de fixer le temps de rafraichissement de la page web à 5s
       client.println("Refresh: 5");
       client.println();
       client.println("<!DOCTYPE HTML>");
       {
          }
        {
          client.print("<body>"); // Contient le corps du document html
            client.println("<body style = background:#003366>"); // Définit la couleur en fond du site en Bleu nuit
              client.println("<span style = color:#FEFDF0>"); // Définit la couleur de la police du site en Blanc de Troyes
                client.print("<u>"); // Souligne le Texte à l'intérieur de la balise
                  client.println("<center>"); // Centre le texte
                    client.println ("<font size=7>"); // Règle la taille des caractères
                      client.println ("<font face=Comic sans MS>"); // Applique une police au texte
                        client.println ("<b>"); // Règle le texte en gras
                          client.print("Lyc&eacutee Gustave Eiffel : ");
                        client.print ("</b>"); // Fin de la balise <b>
                      client.print ("</font size>"); // Fin de la balise <font size=7>
                    client.print ("</font face>"); // Fin de la balise <font face=Comic sans MS>
                  client.print("</center>"); // Fin de la balise <center>
                client.println("</u>"); // Fin de la balise <u>
          client.println("<ul>"); // Permet de créer une liste ordonnée ou numéroté
            client.println("<li>"); // Incrémente le nombre qui sera affiché devant l'élement de la liste
           client.print("Absents :");
           client.print(Nom);
          client.println("</ol>"); // Fin de la balise <ol>
          client.println("<br />"); // Retour à la ligne
          client.print("</body>"); // Fin de la balise <body>
        }
       client.println("</html>");
       break;
      }
     
     // Fin de la transmission et déconnexion
     if (c == '\n')
     {
     currentLineIsBlank = true; // Commencer une nouvelle ligne
     }
    else if (c != '\r')
    {
    currentLineIsBlank = false; // Obtention d'un caractère sur la ligne actuelle
    }
   }
  }
delay(1); // Temps pour que le Navigateur Internet reçoive les données
client.stop();  // Couper la connexion
Serial.println("client disonnected");
}
}


Je tiens aussi a remercier toutes les personnes qui ont eu la patience de m'aider <3

john_lenfr

#17
May 25, 2014, 07:48 am Last Edit: May 25, 2014, 08:03 am by john_lenfr Reason: 1
Bonjour,
Quote
j'ai enfin compris ce qu'il fallait que je fasse exactement !

Apparemment non car ton code ne tiens pas compte de tes besoins.
Je ne vois pas apparaitre la gestion des absents et présents?
Que viennent faire les noms dans l'histoire?

Dans tous les cas pour la déclaration de ton tableau tu as besoin d'un tableau de pointeurs vers des chars (tes noms) et non un tableau de char.
Chaque élément du tableau de pointeurs sera initialisé à l'adresse de la chaine littérale pour ce nom.

char *Nom[] = {"Mendiondo", "Dormont", "Millereux"};

Tu y accède ensuite par:
Code: [Select]
int i=0;
client.print(Nom[i]);


En choisissant i tu affichera le nom que tu souhaites. Attention n'oublies pas que dans un tableau on commence à 0 donc tu auras:
Quote
Nom[0]= "Mendiondo"
Nom[1]="Dormont"
Nom[2]= "Millereux"


Mais si tu veux associer une liste de noms à une valeur "absent" ou "présent" il faut plutôt partir sur un tableau à 2 colonnes: la première pour stocker les noms, la deuxième pour stocker l'information "présent" ou "absent".

;)

Super_Cinci

Effectivement, il y a un souci de déclaration :

Code: [Select]

char Nom[i] = {"Mendiondo", "Dormont", "Millereux"};

nulentout

Code: [Select]
Coucou nulentout merci beaucoup pour cette correction mais je comprends pas pourquoi tu met des 0 et des 1 au tableau pourquoi un est 1 et pourquoi l'autre 0 ?
Bonjour tout le monde,
Pour répondre (Un peu tard) à ta question, je suppose que les noms des personnes sont contenues dans un tableau de chaines de caractères. Le tableau que je te propose contient autant d'éléments que de personnes identifiées par leur noms. Dans ce tableau, respectant l'ordre des personnes, je place un "1" si la personne est présente, et un zéro dans le cas contraire. C'est un moyen détourné d'écrire des booléens. Il serait plus logique de déclarer un tableau de booléens et de le remplir avec des true et de false. C'est alors une question de lisibilité, de philosophie, voir d'optimisation de ton programme.
Amicalement : Nulentout.

Super_Cinci

ça optimise pas trop, vu qu'un boolean est un octet qui vaut 1 ou 0. mais côté lecture, c'est plus clair en effet.

sophie3399

Enfait mon code doit lire le tableau d'un autre programme qui contient les absents et je dois faire un tableau avec le nom de ces absents et biensur apres les afficher sur mon site web :/

john_lenfr

Et comment tu fais liaison entre les deux?

sophie3399


john_lenfr

#24
May 25, 2014, 06:10 pm Last Edit: May 25, 2014, 06:13 pm by john_lenfr Reason: 1
Et à quel moment dans ton code tu:
Quote
lire le tableau d'un autre programme

?

Mis à part le
Code: [Select]
Serial.begin(9600);

Je ne vois pas de gestion de communication ni de récupération de valeurs...

sophie3399

Je couple les deux programmes

sophie3399

Ouch tu as raison en fait je n'ai rien mis pour lire le tableau de l'autre programme oubli mon post précédent

sophie3399

Ma fonction a pour but de créer un interface web et d'y afficher et stocker les absences des élèves, je dois lire les absents (= 0) relevés par la NFC/RFID et leur affecter un nom. Pour créer l'interface web il n'y a aucun soucis je sais faire seulement je suis perdue pour le reste c'est vraiment l'impasse

john_lenfr

Il faut déjà que tu récupère le tableau créé par ton camarade en scrutant la liaison série en stockant ces variables dans un tableau à toi.
Ensuite tu parcours ce tableau pour l'afficher sur ta page web avec une boucle For.

Si tu passes par une liaion "cable" je suppose que vous allez utiliser la liaison série donc ton collègue doit prévoir de t'envoyer les données avec un Srial.print et toi de les recevoir avec un Serial.read

Il y a plusieurs exemples sur le net là dessus.

Dans tous les cas vous pouvez pas vous dire dans votre groupe "Moi je fais telle partie, toi tu fais telle autre", il faut voir avec l'autre comment vous voulez procéder pour récupérer les données correctement.

john_lenfr

Apparement il utilise un tableau en stockant dedans la valeur présent ou pas pour chaque cas: 
Code: [Select]
int present[]={0,0,0,0,0,0,0,0,0,0,0};

Donc il te faut récupérer ces valeurs mise à jour par sa partie RFID.

Go Up