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 :

Valeurs dans le port série qui diffèrent


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Par défaut Valeurs dans le port série qui diffèrent
    Bonjour à tous,

    Je suis en classe de terminale STI2D et je travaille pour un projet de fin d'année mais je suis face à un problème.

    Pour vous expliquer, mon camarade m'envoi en continu des valeurs égales à -100 via xBee. Je reçois ces valeurs mais comme j'en reçois plusieures je suis contraint de les différencier c'est pour ça qu'il y a un tiret devant.

    Dans mon code je supprime ce tiret et garde que le 100 mais au moment de print ceci dans le port série, certaines valeurs sont "mangées", "tronquées". Je ne comprends pas pourquoi et donc ça me fausse tous mes résultats.

    Ci dessous une capture d'écran:

    Nom : 9c64e96b8543dee6dbc6ea5880797626f7699c49.png
Affichages : 609
Taille : 163,2 Ko

    Et mon 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
    17
    18
    19
    20
    21
    22
    23
    void getLivraison(){
     
        if (Serial.available())  {
        char e = Serial.read();  //gets one byte from serial buffer
        if (e == '+') {
          readStringLivraison = readStringLivraison.substring(-4, 0);
          int resultatLivraison = readStringLivraison.toInt(); // conversion string en int
          Serial.println("valeur de la livraison:");
          Serial.println(resultatLivraison);
          if (resultatLivraison == 300){
            old_valeur_livraison = "3";
          }
          if (resultatLivraison == 304){
            old_valeur_livraison = "4";
          }
          readStringLivraison=""; //clears variable for new input    
        }
        else {    
          readStringLivraison += e; //makes the string readString
        }
      }
     
    }
    Merci d'avance

  2. #2
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour zkimi

    Si j'ai bien compris, tu reçois des valeurs avec un moins devant comme -100 ou -55 ou -9 et tu dois supprimer ce signe moins?
    Tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readStringLivraison = readStringLivraison.substring(-4, 0);
    Pourquoi -4? Comme on sait la longueur à supprimer, 1 pour le signe moins, et que l'on veut garder le reste de readStringLivraison, il faut écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    readStringLivraison = readStringLivraison.substring(1);
    Cordialement
    jpbbricole

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Par défaut
    Bonjour jpbbricole,

    Je dois effectivement supprimer le signe moins. Je viens d'essayer et ça me donne le même résultat... que faire?

    Nom : f0be2570351bb66bec15a8a16c4e10bfd76ae9c0.png
Affichages : 537
Taille : 161,7 Ko

    Merci pour ta réponse rapide.

  4. #4
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour zkimi

    Fais ce petit ajout pour voire ce qui se passe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
         if (e == '+') {
          Serial.println(readStringLivraison);
          readStringLivraison = readStringLivraison.substring(1);
          int resultatLivraison = readStringLivraison.toInt(); // conversion string en int
          Serial.println("valeur de la livraison:");
          Serial.println(resultatLivraison);
    Cordialement
    jpbbricole

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Par défaut
    J'ai fais l'ajout en dessous de la première ligne car sinon la variable n'était pas définie.
    Ca n'a pas changé grand chose, les valeurs sont toujours "coupées"...

    Nom : a6c9b5af86b1cbcc2545c4e682b6e56d4a797f07.png
Affichages : 516
Taille : 152,8 Ko

    J'ai remarqué qu'en ajoutant un delay, je ne recevais plus les valeurs.

    Merci encore pour ton aide

  6. #6
    Membre éclairé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Par défaut
    J'espère ne pas avoir lu trop vite.... .
    Si je puis me permettre, pourquoi chercher à réaliser des "opérations" mathématique du string, surtout qu'après tu convertis ta valeur en mot "int".
    Je te propose cette séquence :
    • convertis en int ta string
    • fais tes opérations, ici récupérer la valeur absolue, ou multiplier par -1 si <0.
    • Créer ta chaîne de sortie, formatée pour afficher ton int.



    Au fait sinon pour éviter de passer tout le temps à la ligne du dessous quand tu affiches ton message, tu peux ajouter à ta chaînes le retour chariot : "\r". Pour éviter après ça un effacement, soit tu utilises des escapes séquence VT100 (ou une lib "terminal" arduino si ça existe), soit tu faits une chaîne formatée qui effacera forcément la précédente (ex : afficher ton int paddé sur 4 caractères).

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2015, 03h29
  2. Réponses: 4
    Dernier message: 23/04/2008, 17h03
  3. Réponses: 5
    Dernier message: 12/01/2007, 21h40
  4. Changement de valeur dans différents formulaires
    Par dragonfly dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/05/2006, 10h21
  5. Envoyer des valeurs vers le port série
    Par aliwassem dans le forum Langage
    Réponses: 2
    Dernier message: 30/12/2005, 20h05

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