Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probléme avec Serial.avalaible( )

    24 juin 2019 à 12:08:42

    Bonjour tous le monde... Je travaille sur le module de code à barres (DFR0314) + convertisseur RS232-TTL et Arduino Mega2560. J'utilise ce code pour lire la valeur du code à barres sur le moniteur série:
    String code = ""; //initialize the output string
    boolean endbit = 0; //a flag to mark 0D received
    char temp;
    
    void setup() {
    Serial.begin(9600); //initialize the Serial port
    }
    
    void loop() {
    if (Serial.available() > 0) {
    temp = char( Serial.read()); //read the input data
    code += temp;
    }
    
    if (temp == '\r'){ 
    // Or temp == '\r'
    Serial.println(code);
    
    code = "";
    endbit = 0;
    temp = 0;
    }
    
    }
    Au début, je n’obtiens aucune valeur. Afin de cerner le problème, j’ai constaté que Serial.read () return -1 c'est que  Serial.available () ne fonctionnaient pas. Le problème se trouve donc ici:
    if (Serial.available ()> 0) {
    temp = char (Serial.read ()); // lit les données d'entrée
    code + = temp;
    }
    Je ne sais pas comment résoudre ça, est-ce que quelqu'un peut m'aider ..
    merci beaucoup   

    -
    Edité par BenhissineShiraz 24 juin 2019 à 13:16:06

    • Partager sur Facebook
    • Partager sur Twitter
      Staff 24 juin 2019 à 12:13:13

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2019 à 13:27:40

        Bonjour, Merci pour votre remarque ,j'ai modifié la publication ^^

        .Je suis nouvelle dans ce forum et je sais pas comment l'utiliser .Si vous avez le contact des personnes qui peuvent m'aider , je te serai reconnaissante de me donner leur profil 

        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2019 à 21:16:26

          Bonsoir,

          L'objet "serial" fait généralement référence au port de communication série avec le pc (La console du soft Arduino).

          Pour tout autre dispositif, il faut utiliser respectivement :

          - pin 19(RX) et 18(TX) avec l'objet "serial1"

          - pin 17(RX) et 16(TX) avec l'objet "serial2"

          - pin 15(RX) et 14(TX) avec l'objet "serial3"

          Tous les détails sont disponibles sur le site officiel Arduino.

          Bonne continuation.

          • Partager sur Facebook
          • Partager sur Twitter

          Stringman | Jeux de plateforme : Nouvelle Démo. (màj : 16 Juin 2019)

            25 juin 2019 à 18:29:37

            Merci bcp pour votre réponse drx :D.

            J'ai changé le cablage comme il est indiqué dans cette image :

            et j'ai effectué une petitee modification dans le  code comme suit: 

            String code = "";           //initialize the output string
            boolean endbit = 0;            //a flag to mark 0D received
            char temp;
            
            void setup() {
              Serial.begin(9600);       //initialize the Serial port
              Serial1.begin(9600); 
            }
            
            void loop() {
              if (Serial1.available() > 0)     {
                temp = char( Serial1.read());    //read the input data
                code += temp;
              }
             
              if (temp == 0x0D){ 
                // Or temp == '\r'
                Serial.println(code);
               
                code = "";
                endbit = 0;
                temp = 0;
              }
            
            }

             malheureusement , le problème persiste et je ne peux pas  encore récupérer le code lu sur le moniteur série :(

            • Partager sur Facebook
            • Partager sur Twitter
              26 juin 2019 à 14:24:35

              Salut,

              Tes paramètres de communication sont-ils identiques des deux côtés ? parité, vitesse etc ?

              • Partager sur Facebook
              • Partager sur Twitter

              Stringman | Jeux de plateforme : Nouvelle Démo. (màj : 16 Juin 2019)

                28 juin 2019 à 12:24:48

                bonjour 

                oui la vitesse de transmission  est à 9600 baud, la longueur des mots est à 8 bits 

                • Partager sur Facebook
                • Partager sur Twitter

                Probléme avec Serial.avalaible( )

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown