Arduino – Transformation String en iInteger

Forums Construction d’unité astromech Electronique, radiocommande, motorisation Arduino – Transformation String en iInteger

  • Ce sujet contient 3 réponses, 3 participants et a été mis à jour pour la dernière fois par Anonyme, le 7 Mai. 2014, 22:47.
4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Messages
  • #7136
    Alkagios
    Bloqué

      Hello,

      Voilà, j’ai un problème sur mon arduino. Je suis en train d’essayer de programmer via une liaison série (futur liaison Xbee) un récepteur.

      Je reçois donc une chaine de caractère du type “HOLO1_123_456_789”

      HOLO1 concerne le premier HOLO

      123 : Variable sur 3 caractères

      456 : Variable sur 3 caractères

      789 : Variable sur 3 caractères

      Cependant, j’aimerais transformer la variable sur 3 caractères en un integer. Evidemment, il sera inférieur à 255 et sera uniquement composé de chiffre.

      J’ai trouvé la fonction atoi(). Mais rien ne marche.

      Si un des pro de l’arduino pouvait me filer un coup de main…

      Tchao,

      Mike

      #38252
      Alkagios
      Bloqué

        Personne ?

        Help me, Obi-Wan Kenobi. You’re my only hope. :moqueurlangue

        Tchao,

        Mike

        #38253
        kethry
        Bloqué

          Quel est le type de ta “chaine de caractères” ?

          Si c’est un “String”, utilise la méthode toInt()

          Si c’est un char*, atoi() doit fonctionner…

          Dans tous les cas, il faut que tu extraies des sous-chaines de ta chaine initiale, donne un extrait de ton code pour qu’on voie comment tu cuisines tout ça…

          #38254
          Anonyme

            est-ce que tu t’es fait un peu la main avec des sketches très basiques pour vérifier comment fonctionne atoi()?

            par exemple en te faisant un code tout bête juste pour tester la fonction de conversion dans le genre de ce qui est indiqué là:

            http://www.cplusplus.com/reference/cstdlib/atoi/

            Si ta fonction de conversion ne marche pas, il est fort probable que ce soit parce que la variable d’entrée n’est pas bien formatée (du style l’underscore qui passe avec les chiffres et la conversion est plantée…?). Tu peux décomposer en étapes simples: construit ta fonction de conversion, puis teste la en envoyant une valeur d’entrée fixe par exemple “255” et affiche le résultat sur le moniteur série.

            Ensuite tu teste avec une valeur < 100; puis < 10; puis tu fais une boucle de 0 à 255 pour vérifier que ça marche pour la gamme de valeur de valeurs que tu désires (0 à 255 ?). A chaque fois, tu affiches la valeur d’entrée sur le moniteur série; pièges = espaces ou autre caractère non numérique à la place des zéros, … un espace ou autre lettre va planter la conversion… Quand ça marchera pour une valeur, alors tu passes à deux valeurs séparées par un underscore, et ainsi de suite. Enfin, comme dit Xoff, si tu peux partager ton code, ça sera plus simple pour t’aider :-)

          4 sujets de 1 à 4 (sur un total de 4)
          • Vous devez être connecté pour répondre à ce sujet.