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

Arduino Discussion :

Class File n'est pas reconnue (VSC plateformio) [Arduino ESP32]


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 417
    Par défaut Class File n'est pas reconnue (VSC plateformio)
    Bonjour à tous
    Voilà un nouveau problème dans mon projet que je n'arrive pas à résoudre et toutes mes recherches se sont avérées vaines.
    J'ai déjà utilisé le SPIFFS dans d'autres projets et cela a toujours bien fonctionné. Là, je fais exactement la même procédure et la 'class' File semble avoir disparue:

    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
    //***************** Ecriture SPIFFS **********************************
    void ecritureFichier(const char *dir, const char *msg){
      bool ok=false;
      size_t lg;
      char buffer[160];
      File fic = SPIFFS.open(dir,"w");
      if(!fic){
        afficMsg(ERWRT);    //"Accès fichier impossible"
        return ok;
      }
      lg=fic.print(msg);    // Ecrit le message en SPIFFS  retourne la longueur
      delaiM(300);
      fic.close();  
      ok=true;  
      sprintf(buf, "Nb car: %d",lg);
      memcpy(buf,msg,16);
      afficMsg(buf);
    }
    File est souligné en rouge avec ce message:
    'File' was not declared in this scope
    identifier "File" is undefinedC/C++(20)
    Si je tente la compilation, j'obtiens ce message:
    File fic = SPIFFS.open(dir,"w");
    ^~~~
    src/main.cpp:241:3: note: suggested alternative:
    In file included from .pio/libdeps/az-delivery-devkit-v4/TFT_eSPI/Processors/TFT_eSPI_ESP32.h:138,
    from .pio/libdeps/az-delivery-devkit-v4/TFT_eSPI/TFT_eSPI.h:101,
    from src/main.cpp:3:
    C:/Users/Mormic/.platformio/packages/framework-arduinoespressif32/libraries/FS/src/FS.h:46:7: note: 'fs::File'
    class File : public Stream
    Une idée du problème?

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 638
    Par défaut
    Hello,

    Utilisez le namespace complet

    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
    void ecritureFichier(const char *dir, const char *msg){
      bool ok=false;
      size_t lg;
      char buffer[160];
      fs::File fic = SPIFFS.open(dir,"w");  // Ajout de fs::
      if(!fic){
        afficMsg(ERWRT);
        return ok;
      }
      lg=fic.print(msg);
      delaiM(300);
      fic.close();  
      ok=true;  
      sprintf(buf, "Nb car: %d",lg);
      memcpy(buf,msg,16);
      afficMsg(buf);
    }
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 417
    Par défaut
    Bonjour fred1599
    je n'aurai jamais trouvé cette solution de namespace complet qui permet la compilation du sketch.
    Par contre, maintenant c'est le mot 'open' de SPIFFS.open qui est souligné en rouge; mais cela ne semble pas bloquant.
    class "fs::SPIFFSFS" has no member "open"C/C++(135)
    Merci pour votre aide.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 638
    Par défaut
    Voici une version un peu optimisé

    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
    bool ecritureFichier(const char *dir, const char *msg){
      fs::File fic = SPIFFS.open(dir,"w");
      if(!fic){
        afficMsg(ERWRT);
        return false;
      }
      size_t lg = fic.print(msg);
      delaiM(300);
      fic.close();  
     
      sprintf(buf, "Nb car: %d", lg);
      memcpy(buf, msg, 16);
      afficMsg(buf);
      return true;
    }
    Un des problèmes que j'avais relevé dans votre précédent code était le type de retour incohérent défini dans votre fonction et incohérent avec le retour en cas d'accès fichier impossible.

    Pour le soulignement rouge sur SPIFFS.open, tant que la compilation passe et que votre code fonctionne, c'est juste l'IntelliSense qui est un peu perdu. Vous pouvez l'ignorer en toute sécurité.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    7 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 7 160
    Par défaut
    “SPIFFS is currently deprecated and may be removed in future releases of the core. Please consider moving your code to LittleFS.”
    Pourquoi continuer à utiliser SpiFFS alors que celui-ci est déprécié ?

  6. #6
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 417
    Par défaut
    Merci Artemus24 pour cette remarque.
    En effet, il n'y a pas de raison particulière à ne pas utiliser LittleFS, juste une vieille habitude.
    Je viens donc de passer avec LittleFS, mais je suis toujous obligé d'écrire le nameSpace complet "fs::File fic" alors que tous les exemples sont "File fic" ? Qu'en pensz-vous?

    ma routine d'écriture:
    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
    //***************** Ecriture SPIFFS **********************************
    bool ecritureFichier(const char *nomFic, const char *msg){
      size_t lg;
      char buffer[160];
      fs::File fic = LittleFS.open(nomFic,"w");
      if(!fic){
        return false;;
      }
      lg=fic.print(msg);    // Ecrit le message en SPIFFS  retourne la longueur
      delaiM(300);
      fic.close();  
      sprintf(buf, "Nb car: %d",lg);
      memcpy(buf,msg,16);   //le buf est affiche au retour
      return true;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Classe de champ type "Id" sur form n'est pas reconnue !
    Par clickandgo dans le forum Symfony
    Réponses: 0
    Dernier message: 09/03/2023, 20h23
  2. Réponses: 13
    Dernier message: 05/05/2008, 14h45
  3. Réponses: 3
    Dernier message: 16/05/2006, 17h34
  4. DOS: la commande 'more' n'est pas reconnue...
    Par billoum dans le forum Windows Serveur
    Réponses: 8
    Dernier message: 02/05/2006, 18h11
  5. Réponses: 8
    Dernier message: 04/08/2004, 15h17

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