Problème communication serie

Accueil/Questions/Problème communication serie
Problème communication serie 2016-07-15T13:59:59+00:00

Accueil Forums Questions Problème communication serie

Affichage de 1 message (sur 1 au total)
  • Auteur
    Messages
  • Nyhillius
    Participant
    Nombre d'articles : 9
    #9768 |

    Bonjour,

    Je souhaite faire communiquer mon Arduino Leo avec mon PC via le port serie.

    J’arrive à envoyer des infos de mon PC et à les recevoir sur mon Arduino mais je n’arrive pas à envoyer de mon Arduino vers le PC sans avoir au moins une fois ouvert le moniteur série.

    Est-ce que quelqu’un sait pourquoi ?

    le code sous Qt :

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QSerialPortInfo arduinoInfo;
    
        foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts())
            {
                if (info.description().contains("Arduino") && info.manufacturer().contains("Arduino"))
                    arduinoInfo = info;
            }
    
        qDebug() << "Arduino device founds on " << arduinoInfo.portName();
    
        QSerialPort serial;
        serial.setPort(arduinoInfo);
        serial.setBaudRate(QSerialPort::Baud9600);
        if (serial.open(QIODevice::ReadWrite) && serial.isOpen() && serial.isWritable())
        {
            QByteArray ba("Coucou\n");
            //QTime time;
    
            qDebug() << "Connected on" << arduinoInfo.description() << "on port" << serial.portName();
            serial.write(ba);
            //serial.flush();
            ba.clear();
            while (serial.waitForReadyRead(150))
                ba += serial.readAll();
            qDebug() << ba;
            serial.close();
        }
        else
            qDebug() << arduinoInfo.portName() << "is buzy.";
    
        return a.exec();
    }

    Sous Arduino :

    void setup()
    {
      Serial.begin(9600);
      while (!Serial);
      display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
    
      display.display();
      delay(2000);
      
      display.setTextColor(WHITE);
    }
    
    void loop()
    {
      display.clearDisplay();
      print_title("SERIAL COM");
      my_read();
      display.display();
    }
    
    void my_read()
    {
      if (Serial.available())
      {
        String data;
        
        display.setCursor(0, 30);
        while (Serial.available())
          data.concat((char)Serial.read());
        display.print(data);
        display.display();
        Serial.print(data);
        display.display();
        delay(3000);
      }
    }

    Cordialement.

Affichage de 1 message (sur 1 au total)

Vous devez être connecté pour répondre à ce sujet.