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 :

Split de fichier ini


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2022
    Messages : 6
    Par défaut Split de fichier ini
    Bonjour, j' ai pour projet de développer une interface à base d' esp32 pour piloter des rubans led rgb adressable et j' ai besoin de découper les phrases lu dans le ini qui sont de type string pour en faire un tableau dynamique de char exploitable.
    Le nombre de mots séparés par la virgule est variable et je ne connais pas le nombre d' éléments à l' avance ( ben oui sinon c'est pas drôle )

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    String txt = "initialColor=blue,0,0,255"
     
    String txt = "red,255,0,0"
     
    Item[0] = "red"
    Item[1] = "255"
    Item[2] = "0"
    Item[3] = "0"
    Je débute en c++ et très franchement, venant de VB et python, je trouve ce language déconcertant. Du coup je ne sais vraiment pas comment m' y prendre

    Si l' un ou l' une d' entre vous peut m'aider cela sera avec grand plaisir

    Merci

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 248
    Billets dans le blog
    48
    Par défaut
    Bonjour,

    Il n'y a pas de fonction split dans la classe String d'Arduino, mais on trouve des codes sur Internet. Le plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    String item[4];
    String txt = "red,255,0,0";
     
    int r=0, t=0;
     
    for (int i=0; i < txt.length(); i++)
    { 
     if(txt.charAt(i) == ',') 
      { 
        item[t] = txt.substring(r, i); 
        r = i + 1; 
        t++; 
      }
    }
    à adapter et tester
    Édit : oups, si le nombre d'éléments du tableau et le nombre de caractères des éléments sont variables, le code ci-dessus n'est pas très optimisé

    Citation Envoyé par Nicoludique Voir le message
    Je débute en c++ et très franchement, venant de VB et python, je trouve ce language déconcertant.
    Les programmeurs C++, eux, trouvent que c'est Python qui est déconcertant. Comme quoi...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2022
    Messages : 6
    Par défaut Merci
    Merci beaucoup pour votre réponse, je pensais que les tableaux de string donnaient des résultats plus qu' aléatoires, je vais tester et tenter d' adapter.

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Bonsoir,

    tu as la fonction strtok

    Un exemple :
    https://www.developpez.net/forums/d1.../byte-tableau/

  5. #5
    Membre à l'essai
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2022
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2022
    Messages : 6
    Par défaut Merci Auteur
    Cool cette fonction, je teste demain, merci

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 248
    Billets dans le blog
    48
    Par défaut
    J'ai testé pour voir, je n'avais jamais utilisé strtok auparavant

    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
    const int LONGUEUR_STRING_MAX = 100;  // taille maxi de l'objet String
    const int LONGUEUR_ITEM_MAX   = 20;   // nbr de caractères maxi de l'item
    const int NBR_ITEMS_MAX       = 10;   // nbr d'items maxi
     
    void setup() {
      Serial.begin(115200);
     
      String str = "red,255,0,0"; // on suppose qu'on dispose d'un objet String au départ
      char delimiter[] = ",";     // délimiteur
      char *item[NBR_ITEMS_MAX];            // tableau des éléments découpés
     
      char text[LONGUEUR_STRING_MAX];
      str.toCharArray(text, sizeof(text));  // copie dans un tableau de char
     
      int nbr_items = 0;
     
      char* token = strtok(text, delimiter);
      while (token != nullptr && nbr_items < NBR_ITEMS_MAX)
      {
        item[nbr_items++] = token;
        token = strtok(nullptr, delimiter);
      }
     
      // affichage des items pour vérifier
      for (int i = 0; i < nbr_items; i++) {
        Serial.println(item[i]);
      }
    }
     
    void loop() {
      // code principal, en boucle infinie
    }

  7. #7
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    oui, c'est parce que le fond des écrans est noir et qu'il y a une grille qui empêche la luminosité voisine de venir baver sur les pixels éteints. donc sous le rouge à 50% il y a du noir ce qui fait ce rouge sombre et la taille du pixel est petite.

    Ce n'est pas le cas sur un bandeau de LED (le support est souvent blanc - ils existent en noir) et les trois couleurs primaires sont assez "imposantes"...

    Les joies de la calibration et de la colorimétrie

Discussions similaires

  1. Sauvegarde des attributs de texte en fichier ini
    Par Raylemon dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2003, 21h28
  2. Lecture et ecriture fichier .ini
    Par despe dans le forum C
    Réponses: 6
    Dernier message: 23/07/2003, 20h40
  3. Fichiers INI et TlistBox
    Par Philippe01 dans le forum Langage
    Réponses: 3
    Dernier message: 11/06/2003, 15h36
  4. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16
  5. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06

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