IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Question sur un pointeur ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut Question sur un pointeur ?
    Bonjour.

    J'ai un problème avec un pointeur sur un programme dans un arduino.

    Je me permet de le poster ici car sur le forum arduino il n'y à pas beaucoup de réponses...

    J'ai un objet nommé Wifi que je ne comprends pas trop...

    J'ai écris ce code (simplifié) qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <Wire.h>
    #include <UnoWiFiDevEd.h>
     
    void setup() 
    {
        Wifi.begin(); // Initialise le serveur wifi.
        Wifi.println(F("Web Server is up")); // Préviens le serveur que tout est ok et prêt à etre utilisé.
    }
     
    void loop() 
    {
        while(Wifi.available())
        {
          process(Wifi);
        }
      delay(50);
    }
     
    void process(WifiData client) 
    {
      String command = client.readStringUntil('/');
     
      if (command == "webserver") 
      {
        WebServer(&client);
      }
    }
     
    void WebServer(WifiData *client) 
    {
     
      int index = -1;
     
      index = client->parseInt();
     
      if (index == 10)
      {
        page_etat(client);
      }
    }
     
    void page_etat(WifiData *client)
    {
      client->println(F("HTTP/1.1 200 OK"));
      client->println(F("Content-Type: text/html"));
      client->println();
     
      client->println(F("<!DOCTYPE html>"));
      client->println(F("<html>"));
      client->println(F("<head>"));
      client->println(F("<meta charset=\"utf-8\">"));
      client->print(F("<meta http-equiv=\"refresh\" content=\"0.1; URL=http://adresseweb.html">"));
      client->println(F("</head>"));
      client->println(F("<body/>"));
      client->println(F("</html>"));
      client->print(DELIMITER); // very important to end the communication !!!

    J'ai voulu éclaircir un peut la chose et j'ai écris le même code mais de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #include <Wire.h>
    #include "Pages_Web.h"
    #include <UnoWiFiDevEd.h>
     
    Pages_Web pageWeb();
     
    void setup() 
    {
      Wifi.begin(); // Initialise le serveur wifi.
      Wifi.println(F("Web Server is up")); // Préviens le serveur que tout est ok et prêt à etre utilisé.
    }
     
    void loop() 
    {
      while(Wifi.available())
      {
        process(Wifi);
      }
     
      delay(50);
    }
     
    void process(WifiData client) 
    {
      String command = client.readStringUntil('/');
     
      if (command == "webserver") 
      {
        WebServer(&client);
      }
    }
     
    void WebServer(WifiData *client) 
    {
     
      short int index = -1;
     
      index = client->parseInt();
     
      if (index == 10) 
      {
        pageWeb.page_etat(client);
      }
    Mon objet pageWeb fait partit d'une classe présente dans le fichier "Pages_Web.h" (d'ou l'include en haut du fichier main)

    Mon fichier Pages_Web.cpp contient ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void Pages_Web::page_etat(WifiData *client)
    { 
      client->println(F("HTTP/1.1 200 OK"));
      client->println(F("Content-Type: text/html"));
      client->println();
     
      client->println(F("<!DOCTYPE html>"));
      client->println(F("<html>"));
      client->println(F("<head>"));
      client->println(F("<meta charset=\"utf-8\">"));
      client->print(F("<meta http-equiv=\"refresh\" content=\"0.1; URL=http://adresseweb.html">"));
      client->println(F("</head>"));
      client->println(F("<body/>"));
      client->println(F("</html>"));
      client->print(DELIMITER); // very important to end the communication !!!
    }
    Mais ce code ne fonctionne pas : le navigateur internet pédale sans rien afficher.

    Si quelqu'un sait pourquoi et par la même occasion m'expiquer ce qu'est l'objet Wifi qui devient WifiData avec un ... je ne sais quoi qui deviens client ??

    Bref je suis un peut perdu.

    Je précise que le site qui contenais les informations (arduino.org) est plus entretenu donc je ne trouve plus les docs pour l'arduino.

    Je précise également que c'est un arduino uno Wifi (avec wifi intégré dans la carte donc pas de shield).

    Merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Vue que pageWeb est le nom d'une fonction et en rien un objet instancié dans ce que tu montres, ton code ne devrait même pas compiler parce que pageWeb.page_etat(client); n'a aucun sens.
    Aussi si c'est juste pour ne rien utiliser de variables membres de Page_Web, autant mettre ça en static ou dans un namespace.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    Je ne comprends pas votre phrase :
    Vue que pageWeb est le nom d'une fonction et en rien un objet instancié
    Ma fonction c’est Pages_Web et mon objet c’est pageWeb. Ou alors je me mélange les pinceaux ?

    Du coup je suis d’accord avec le fait de le mettre en static mais je suis pas sûr que ça résolve le problème si ?

    Je ne sais pas trop comment manipuler mon objet ? Classe ? Truc Wifi :/

  4. #4
    Membre éclairé Avatar de sylvain.cool
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Par défaut
    En faisant cela :
    Tu déclare une fonction pageWeb qui retourne un objet Pages_Web.
    Toi, tu veux faire celà je pense :
    Pour créer un objet Pages_Web nommé pageWeb.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Par défaut
    Comme Pages_Web est une classe, si je fais Pages_Web pageWeb(); je fais appel à mon constructeur non ? Et par la même occasion je crée un objet de la classe Pages_Web de nom pageWeb ?
    Je l’ai pas mis dans le code que je vous ai envoyé mais il y est !

    J’ai toujours fait comme ça :$. Je me plantais ?

    P.S. Désolé pour les balises je suis sur un smartphone et je n’ai pas accès aux balises...

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Non, tu déclares une fonction.

    il faut écrire Pages_Web pageWeb; ou Pages_Web pageWeb{};

Discussions similaires

  1. question sur les pointeurs
    Par jd.baculard dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 02h30
  2. [Debutant] Nouvelle question sur les pointeurs
    Par etiennegaloup dans le forum Débuter
    Réponses: 3
    Dernier message: 11/01/2006, 09h55
  3. [Debutant] Question sur un pointeur
    Par etiennegaloup dans le forum Débuter
    Réponses: 15
    Dernier message: 06/01/2006, 23h34
  4. Question sur les pointeurs.
    Par Chrisemi dans le forum C++
    Réponses: 5
    Dernier message: 28/10/2005, 23h47
  5. questions sur les pointeurs
    Par Hyoga dans le forum C++
    Réponses: 17
    Dernier message: 08/01/2005, 23h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo