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

Qt Discussion :

Pas de communication avec QSerialPort


Sujet :

Qt

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2018
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2018
    Messages : 124
    Points : 55
    Points
    55
    Par défaut Pas de communication avec QSerialPort
    Bonjour à tous,

    je suis en train de faire des essais de communication sur un port COM. Je sais que mon port fonctionne correctement parce que lorsque j'utilise "termite" (c'est une console), mes données sortent et rentrent sans problème.
    J'ai d’abord essayer de tester la réception de données, mais rien alors je me suis concentré sur l'envoi de données pour voir si j'obtenais quelque chose, voici le petit bout de 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     serial.setPortName("COM5");
     
      // Si le port est ouvert je le configure
      if(serial.open(QIODevice::ReadWrite))
      {
        if(!serial.setBaudRate(QSerialPort::Baud115200))
        {
          std::cout << "Error in Baud Rate setting";
        }
        if(!serial.setDataBits(QSerialPort::Data8))
        {
          std::cout << "Error in Nb bits setting";
        }
        if(!serial.setParity(QSerialPort::NoParity))
        {
          std::cout << "Error in No parity setting";
        }
        if(!serial.setStopBits(QSerialPort::OneStop))
        {
          std::cout << "Error in Stop bit Nb setting";
        }
        if(!serial.setFlowControl(QSerialPort::NoFlowControl))
        {
          std::cout << "Error in No flow control setting";
        }
     
        QByteArray ba;
        ba.resize(1);
        ba[0] = 0x36;
        while(1)
        {
          serial.flush();
          serial.write(ba); // J'envoie un octet
        };
    Je sais que mon port COM5 fonctionne, puisque si je laisse mon terminal (console) ouvert, je ne rentre pas dans le "if" du "serial.open".
    Et je sais que rien ne sort, parce que je regarde à l'oscilloscope.

    Est-ce que quelqu'un saurait ce que j'ai oublié ?

    Merci d'avance

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2018
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2018
    Messages : 124
    Points : 55
    Points
    55
    Par défaut
    J'ai même ajouté la fonction "waitForBytesWritten" qui ne semble pas fonctionner aussi, parce que j'ai définit un timeout de 30s alors que le "Data not sent" est envoyé en permanence:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      serial.write(ba); // J'envoie la trame au port serie
      if(serial.waitForBytesWritten(30000))
      {
        std::cout << "Data not sent";
      }

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2018
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Septembre 2018
    Messages : 124
    Points : 55
    Points
    55
    Par défaut
    Par contre, lorsque je mets ce code, cela fonctionne, mais je ne comprends pas la différence, si quelqu'un pouvait m'expliquer
    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
     
      QSerialPort serial;
     
      serial.setPortName("COM5");
      if (serial.open(QIODevice::ReadWrite))
      {
        std::cout << "Connected";
     
        serial.setBaudRate(QSerialPort::Baud115200);
        serial.setDataBits(QSerialPort::Data8);
        serial.setParity(QSerialPort::NoParity);
        serial.setStopBits(QSerialPort::OneStop);
        serial.setFlowControl(QSerialPort::NoFlowControl);
     
        QByteArray testOuts;
        testOuts.resize(1);
        testOuts[0] = '6';
     
        while(1)
        {
          serial.write (testOuts);
          serial.flush();
          if (false == serial.waitForBytesWritten(500))
          {
            std::cout << "Data not sent";
          }
        };
      }
      else
      {
        std::cout << "Port Com not connected !!";
      }
    Merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/11/2017, 17h59
  2. [UBUNTU GWTEXT] pas de communication avec le serveur
    Par nezdeboeuf62 dans le forum GWT et Vaadin
    Réponses: 1
    Dernier message: 11/02/2009, 19h31
  3. [Débutant][Applet] Communication avec Servlet - IO Exception
    Par gandalf_le_blanc dans le forum Applets
    Réponses: 35
    Dernier message: 16/04/2004, 13h29
  4. [SSL]Communication avec un serveur en https
    Par menon dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 04/09/2003, 16h38
  5. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43

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