Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How to send the Data from Qt App to Arduino by serial communication
Forum Updated to NodeBB v4.3 + New Features

How to send the Data from Qt App to Arduino by serial communication

Scheduled Pinned Locked Moved Solved General and Desktop
25 Posts 8 Posters 4.7k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S sankarapandiyan
    16 Dec 2019, 10:24

    @mrjj @JonB

    alternate text

    Yes both of you are right .. above image shows my output ,
    if i clicked the send button first time ,
    "" is printed like this
    while clicked second time
    line 5 is printed
    while third time same is printed

    i Dont know why its came like this

    J Offline
    J Offline
    JonB
    wrote on 16 Dec 2019, 11:24 last edited by
    #11

    @sankarapandiyan
    You cannot expect people to help if you show output which simply does not correspond to anywhere in the code you have shown, can you? For example, you have a screenshot showing output where the code you have shown simply does not include any such output lines....

    S O 2 Replies Last reply 16 Dec 2019, 11:47
    2
    • J JonB
      16 Dec 2019, 11:24

      @sankarapandiyan
      You cannot expect people to help if you show output which simply does not correspond to anywhere in the code you have shown, can you? For example, you have a screenshot showing output where the code you have shown simply does not include any such output lines....

      S Offline
      S Offline
      sankarapandiyan
      wrote on 16 Dec 2019, 11:47 last edited by
      #12

      @JonB ok fine.. thanks

      1 Reply Last reply
      0
      • J JonB
        16 Dec 2019, 11:24

        @sankarapandiyan
        You cannot expect people to help if you show output which simply does not correspond to anywhere in the code you have shown, can you? For example, you have a screenshot showing output where the code you have shown simply does not include any such output lines....

        O Offline
        O Offline
        ODБOï
        wrote on 16 Dec 2019, 13:07 last edited by ODБOï
        #13

        @JonB said in How to send the Data from Qt App to Arduino by serial communication:

        you have a screenshot showing output where the code you have shown simply does not include any such output lines..

        hi, the 2nd line in his on_send_clicked method doas qDebbug() << "serial opened-"

        @sankarapandiyan you should put it in a if statement to call qDebug only if open() returns true

        if(serial->open(QIODevice::ReadWrite))
        
        J S 2 Replies Last reply 16 Dec 2019, 13:20
        0
        • O ODБOï
          16 Dec 2019, 13:07

          @JonB said in How to send the Data from Qt App to Arduino by serial communication:

          you have a screenshot showing output where the code you have shown simply does not include any such output lines..

          hi, the 2nd line in his on_send_clicked method doas qDebbug() << "serial opened-"

          @sankarapandiyan you should put it in a if statement to call qDebug only if open() returns true

          if(serial->open(QIODevice::ReadWrite))
          
          J Offline
          J Offline
          JonB
          wrote on 16 Dec 2019, 13:20 last edited by JonB
          #14

          @LeLev said in How to send the Data from Qt App to Arduino by serial communication:

          hi, the 2nd line ot his on_send_clicked method doas qDebbug() << "serial opened-"

          You are right. I searched the whole page for serial opened (or even seral opened), I have only just seen it is in a screenshot. However, I still do not see where the baToSend used there is declared or set, I only see it elsewhere (local variable inside on_send_clicked()). Nor do I know what it is the text file read in. So it's still pretty hard to know what is going on....

          S 3 Replies Last reply 16 Dec 2019, 15:07
          0
          • J JonB
            16 Dec 2019, 13:20

            @LeLev said in How to send the Data from Qt App to Arduino by serial communication:

            hi, the 2nd line ot his on_send_clicked method doas qDebbug() << "serial opened-"

            You are right. I searched the whole page for serial opened (or even seral opened), I have only just seen it is in a screenshot. However, I still do not see where the baToSend used there is declared or set, I only see it elsewhere (local variable inside on_send_clicked()). Nor do I know what it is the text file read in. So it's still pretty hard to know what is going on....

            S Offline
            S Offline
            sankarapandiyan
            wrote on 16 Dec 2019, 15:07 last edited by
            #15

            @JonB In text file i have 5 lines ,

            line 1
            line 2
            line 3
            line 4
            line 5

            i want to print these five line in arduino serial monitor , While i clicking send button

            1 Reply Last reply
            0
            • J JonB
              16 Dec 2019, 13:20

              @LeLev said in How to send the Data from Qt App to Arduino by serial communication:

              hi, the 2nd line ot his on_send_clicked method doas qDebbug() << "serial opened-"

              You are right. I searched the whole page for serial opened (or even seral opened), I have only just seen it is in a screenshot. However, I still do not see where the baToSend used there is declared or set, I only see it elsewhere (local variable inside on_send_clicked()). Nor do I know what it is the text file read in. So it's still pretty hard to know what is going on....

              S Offline
              S Offline
              sankarapandiyan
              wrote on 16 Dec 2019, 15:54 last edited by sankarapandiyan
              #16

              @JonB Tried to Edit my code in correct form

              #include "mainwindow.h"
              #include "ui_mainwindow.h"
              #include <QList>
              #include <QComboBox>
              #include <QString>
              #include <QTextEdit>
              #include <QTime>
              #include <QDebug>
              #include <QtSerialPort/QSerialPortInfo>
              #include <QtSerialPort>
              #include <QFile>
              #include <QList>
              #include <QSerialPort>
              
              MainWindow::MainWindow(QWidget *parent)
                  : QMainWindow(parent)
                  , ui(new Ui::MainWindow)
              {
              
                    ui->setupUi(this);
                    QString filename1="/home/adx-soft1/Shankar/serial/myfile1.txt";
                    QFile file(filename1);
                    if(!file.exists()){
                        qDebug() << "NO FILE "<<filename1;
                    }else{
                        qDebug() << filename1<<" ...";
                    }
                    QString line1;
                    ui->sender->clear();
                    if (file.open(QIODevice::ReadOnly | QIODevice::Text)){ ui->sender->setText(file.readAll()); }
              
                    QList<QSerialPortInfo> list;
                    list = QSerialPortInfo::availablePorts();
              
                    for (int i= 0; i < list.length(); i++)
                    {
                      ui->comboBox->addItem(list[i].portName());
              
                    }
              }
              
              MainWindow::~MainWindow()
              {
                  serial->close();
                  delete ui;
              }
              
              void MainWindow::on_pushButton_clicked()
              {
                  serial = new QSerialPort(this);
                  serial->setPortName(ui->comboBox->currentText());
                  serial->setBaudRate(QSerialPort::Baud9600);
                  serial->setDataBits(QSerialPort::Data8);
                  serial->setParity(QSerialPort::NoParity);
                  serial->setStopBits(QSerialPort::OneStop);
                  serial->setFlowControl(QSerialPort::NoFlowControl);
                  serial->open(QIODevice::ReadWrite);
                  connect(serial, &QSerialPort::readyRead, this, &MainWindow::serialReceived);
              
                 ui->progressBar->setValue(100);
              //    ui->receive->clear();
              }
              void MainWindow::checkAndSendData()
              {
                  if(!m_lines.isEmpty()){
                      baToSend = m_lines.takeFirst().toUtf8();
                      serial->write(baToSend);
                      //qDebug() << baToSend << "serial Writed---" ;
              
                      ui->aknowmnt->setText("Sent Message -->" +  QString(baToSend) + "\n");
                  }
                  else
                  {
                      ui->aknowmnt->setText("Receiving ");
                  }
              }
              
              
              void MainWindow ::on_send_clicked()
              {
                    //serial->open(QIODevice::ReadWrite);
                    qDebug () << baToSend << "seral opened ----" ;
              
                    qDebug() << "Serial: " << serial->isOpen();
                    qDebug() << "Error: " << serial->error() << " | " << serial->errorString();
              
                    line = ui->sender->toPlainText();
                      QString txt1 = ui->receive->toPlainText();
                      /*QString*/ txt3 = ui->aknowmnt->toPlainText();
              
                      qDebug() << "m_lines: " << m_lines;
              
                       if(m_lines.isEmpty()){
                          QFile inputFile(QString("/home/adx-soft1/Shankar/serial/myfile1.txt"));
                          inputFile.open(QIODevice::ReadOnly);
              
                          if (!inputFile.isOpen()) {
                              return;
                          }
              
                          QTextStream stream(&inputFile);
              
                          while(!stream.atEnd()) {
                              QString strline = stream.readLine();
                              m_lines.append(strline + QString("\r\n"));
              
                              qDebug() << "m_lines: " << m_lines;
                          }
                      }
                      checkAndSendData();
              }
              
              
              void MainWindow::serialReceived()
              {
              
                  qDebug() << "serial->readAll().trimmed(): " << serial->readAll().trimmed();
              
                  QString glen = serial->readAll().trimmed();
              
                  qDebug() << "glen: " << glen;
              
                   if (glen.length() > 0) {
                       ui->receive->append(glen);
                      /*QString*/ //line = ui->receive->toPlainText();
                      //ui->receive->setText(ui->receive->toPlainText() + line + "\n");
                      //ui->receive->setText(line + "\r\n" + glen + "\r\n");
                      //line = txt3;
                  }
                  checkAndSendData();
              }
              

              But i did not get the data received in arduino side

              L 1 Reply Last reply 18 Dec 2019, 08:41
              0
              • O ODБOï
                16 Dec 2019, 13:07

                @JonB said in How to send the Data from Qt App to Arduino by serial communication:

                you have a screenshot showing output where the code you have shown simply does not include any such output lines..

                hi, the 2nd line in his on_send_clicked method doas qDebbug() << "serial opened-"

                @sankarapandiyan you should put it in a if statement to call qDebug only if open() returns true

                if(serial->open(QIODevice::ReadWrite))
                
                S Offline
                S Offline
                sankarapandiyan
                wrote on 16 Dec 2019, 15:56 last edited by
                #17

                @LeLev ok fine i will correct it

                1 Reply Last reply
                0
                • J JonB
                  16 Dec 2019, 13:20

                  @LeLev said in How to send the Data from Qt App to Arduino by serial communication:

                  hi, the 2nd line ot his on_send_clicked method doas qDebbug() << "serial opened-"

                  You are right. I searched the whole page for serial opened (or even seral opened), I have only just seen it is in a screenshot. However, I still do not see where the baToSend used there is declared or set, I only see it elsewhere (local variable inside on_send_clicked()). Nor do I know what it is the text file read in. So it's still pretty hard to know what is going on....

                  S Offline
                  S Offline
                  sankarapandiyan
                  wrote on 17 Dec 2019, 07:39 last edited by
                  #18

                  @JonB @LeLev @mrjj cant open port : QSerialPort::SerialPortError(PermissionError)
                  I get the error like this ..

                  Thanks

                  J 1 Reply Last reply 17 Dec 2019, 07:45
                  0
                  • S sankarapandiyan
                    17 Dec 2019, 07:39

                    @JonB @LeLev @mrjj cant open port : QSerialPort::SerialPortError(PermissionError)
                    I get the error like this ..

                    Thanks

                    J Offline
                    J Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on 17 Dec 2019, 07:45 last edited by
                    #19

                    @sankarapandiyan said in How to send the Data from Qt App to Arduino by serial communication:

                    PermissionError

                    Make sure your user has needed access rights for the serial port device file.
                    See for example https://askubuntu.com/questions/58119/changing-permissions-on-serial-port

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    S 1 Reply Last reply 17 Dec 2019, 08:02
                    2
                    • J jsulm
                      17 Dec 2019, 07:45

                      @sankarapandiyan said in How to send the Data from Qt App to Arduino by serial communication:

                      PermissionError

                      Make sure your user has needed access rights for the serial port device file.
                      See for example https://askubuntu.com/questions/58119/changing-permissions-on-serial-port

                      S Offline
                      S Offline
                      sankarapandiyan
                      wrote on 17 Dec 2019, 08:02 last edited by
                      #20

                      @jsulm Is it possible to open the port in both Qt app and Arduino in a same OS ..
                      Here if i open the port in Qt means , in Arduino ,i got a error the port is changed or not found

                      while if i open the port in Arduino first means , I got a error message in Qt as (PERMISSION ERROR)

                      I am Stucked here for a day, I am very new to this arduino topic , So give me some idea abouth this .

                      Thanks in advance .

                      J J 2 Replies Last reply 17 Dec 2019, 09:05
                      0
                      • S sankarapandiyan
                        17 Dec 2019, 08:02

                        @jsulm Is it possible to open the port in both Qt app and Arduino in a same OS ..
                        Here if i open the port in Qt means , in Arduino ,i got a error the port is changed or not found

                        while if i open the port in Arduino first means , I got a error message in Qt as (PERMISSION ERROR)

                        I am Stucked here for a day, I am very new to this arduino topic , So give me some idea abouth this .

                        Thanks in advance .

                        J Offline
                        J Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on 17 Dec 2019, 09:05 last edited by
                        #21

                        @sankarapandiyan said in How to send the Data from Qt App to Arduino by serial communication:

                        Is it possible to open the port in both Qt app and Arduino in a same OS

                        Not sure what you mean? If both devices run same OS then yes.

                        "i got a error the port is changed or not found" - then make sure you're using correct port!

                        "I got a error message in Qt as (PERMISSION ERROR)" - then make sure your user has access right like I suggested above.

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        S 1 Reply Last reply 18 Dec 2019, 12:03
                        5
                        • S sankarapandiyan
                          17 Dec 2019, 08:02

                          @jsulm Is it possible to open the port in both Qt app and Arduino in a same OS ..
                          Here if i open the port in Qt means , in Arduino ,i got a error the port is changed or not found

                          while if i open the port in Arduino first means , I got a error message in Qt as (PERMISSION ERROR)

                          I am Stucked here for a day, I am very new to this arduino topic , So give me some idea abouth this .

                          Thanks in advance .

                          J Offline
                          J Offline
                          JKSH
                          Moderators
                          wrote on 18 Dec 2019, 07:40 last edited by JKSH
                          #22

                          @sankarapandiyan said in How to send the Data from Qt App to Arduino by serial communication:

                          Is it possible to open the port in both Qt app and Arduino in a same OS ..

                          If you have 2 apps on the same computer that want to use the same serial port, then only one of the programs can use the serial port at a time.

                          When App 1 opens a serial port, App 2 cannot use the same serial port. App 2 must wait until App 1 closes the port.

                          Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                          S 1 Reply Last reply 18 Dec 2019, 12:02
                          6
                          • S sankarapandiyan
                            16 Dec 2019, 15:54

                            @JonB Tried to Edit my code in correct form

                            #include "mainwindow.h"
                            #include "ui_mainwindow.h"
                            #include <QList>
                            #include <QComboBox>
                            #include <QString>
                            #include <QTextEdit>
                            #include <QTime>
                            #include <QDebug>
                            #include <QtSerialPort/QSerialPortInfo>
                            #include <QtSerialPort>
                            #include <QFile>
                            #include <QList>
                            #include <QSerialPort>
                            
                            MainWindow::MainWindow(QWidget *parent)
                                : QMainWindow(parent)
                                , ui(new Ui::MainWindow)
                            {
                            
                                  ui->setupUi(this);
                                  QString filename1="/home/adx-soft1/Shankar/serial/myfile1.txt";
                                  QFile file(filename1);
                                  if(!file.exists()){
                                      qDebug() << "NO FILE "<<filename1;
                                  }else{
                                      qDebug() << filename1<<" ...";
                                  }
                                  QString line1;
                                  ui->sender->clear();
                                  if (file.open(QIODevice::ReadOnly | QIODevice::Text)){ ui->sender->setText(file.readAll()); }
                            
                                  QList<QSerialPortInfo> list;
                                  list = QSerialPortInfo::availablePorts();
                            
                                  for (int i= 0; i < list.length(); i++)
                                  {
                                    ui->comboBox->addItem(list[i].portName());
                            
                                  }
                            }
                            
                            MainWindow::~MainWindow()
                            {
                                serial->close();
                                delete ui;
                            }
                            
                            void MainWindow::on_pushButton_clicked()
                            {
                                serial = new QSerialPort(this);
                                serial->setPortName(ui->comboBox->currentText());
                                serial->setBaudRate(QSerialPort::Baud9600);
                                serial->setDataBits(QSerialPort::Data8);
                                serial->setParity(QSerialPort::NoParity);
                                serial->setStopBits(QSerialPort::OneStop);
                                serial->setFlowControl(QSerialPort::NoFlowControl);
                                serial->open(QIODevice::ReadWrite);
                                connect(serial, &QSerialPort::readyRead, this, &MainWindow::serialReceived);
                            
                               ui->progressBar->setValue(100);
                            //    ui->receive->clear();
                            }
                            void MainWindow::checkAndSendData()
                            {
                                if(!m_lines.isEmpty()){
                                    baToSend = m_lines.takeFirst().toUtf8();
                                    serial->write(baToSend);
                                    //qDebug() << baToSend << "serial Writed---" ;
                            
                                    ui->aknowmnt->setText("Sent Message -->" +  QString(baToSend) + "\n");
                                }
                                else
                                {
                                    ui->aknowmnt->setText("Receiving ");
                                }
                            }
                            
                            
                            void MainWindow ::on_send_clicked()
                            {
                                  //serial->open(QIODevice::ReadWrite);
                                  qDebug () << baToSend << "seral opened ----" ;
                            
                                  qDebug() << "Serial: " << serial->isOpen();
                                  qDebug() << "Error: " << serial->error() << " | " << serial->errorString();
                            
                                  line = ui->sender->toPlainText();
                                    QString txt1 = ui->receive->toPlainText();
                                    /*QString*/ txt3 = ui->aknowmnt->toPlainText();
                            
                                    qDebug() << "m_lines: " << m_lines;
                            
                                     if(m_lines.isEmpty()){
                                        QFile inputFile(QString("/home/adx-soft1/Shankar/serial/myfile1.txt"));
                                        inputFile.open(QIODevice::ReadOnly);
                            
                                        if (!inputFile.isOpen()) {
                                            return;
                                        }
                            
                                        QTextStream stream(&inputFile);
                            
                                        while(!stream.atEnd()) {
                                            QString strline = stream.readLine();
                                            m_lines.append(strline + QString("\r\n"));
                            
                                            qDebug() << "m_lines: " << m_lines;
                                        }
                                    }
                                    checkAndSendData();
                            }
                            
                            
                            void MainWindow::serialReceived()
                            {
                            
                                qDebug() << "serial->readAll().trimmed(): " << serial->readAll().trimmed();
                            
                                QString glen = serial->readAll().trimmed();
                            
                                qDebug() << "glen: " << glen;
                            
                                 if (glen.length() > 0) {
                                     ui->receive->append(glen);
                                    /*QString*/ //line = ui->receive->toPlainText();
                                    //ui->receive->setText(ui->receive->toPlainText() + line + "\n");
                                    //ui->receive->setText(line + "\r\n" + glen + "\r\n");
                                    //line = txt3;
                                }
                                checkAndSendData();
                            }
                            

                            But i did not get the data received in arduino side

                            L Offline
                            L Offline
                            Lemat
                            wrote on 18 Dec 2019, 08:41 last edited by
                            #23
                            This post is deleted!
                            1 Reply Last reply
                            0
                            • J JKSH
                              18 Dec 2019, 07:40

                              @sankarapandiyan said in How to send the Data from Qt App to Arduino by serial communication:

                              Is it possible to open the port in both Qt app and Arduino in a same OS ..

                              If you have 2 apps on the same computer that want to use the same serial port, then only one of the programs can use the serial port at a time.

                              When App 1 opens a serial port, App 2 cannot use the same serial port. App 2 must wait until App 1 closes the port.

                              S Offline
                              S Offline
                              sankarapandiyan
                              wrote on 18 Dec 2019, 12:02 last edited by
                              #24

                              @JKSH Yes You are right .. thanks for your reply

                              1 Reply Last reply
                              0
                              • J jsulm
                                17 Dec 2019, 09:05

                                @sankarapandiyan said in How to send the Data from Qt App to Arduino by serial communication:

                                Is it possible to open the port in both Qt app and Arduino in a same OS

                                Not sure what you mean? If both devices run same OS then yes.

                                "i got a error the port is changed or not found" - then make sure you're using correct port!

                                "I got a error message in Qt as (PERMISSION ERROR)" - then make sure your user has access right like I suggested above.

                                S Offline
                                S Offline
                                sankarapandiyan
                                wrote on 18 Dec 2019, 12:03 last edited by
                                #25

                                @jsulm sure

                                1 Reply Last reply
                                0

                                20/25

                                17 Dec 2019, 08:02

                                • Login

                                • Login or register to search.
                                20 out of 25
                                • First post
                                  20/25
                                  Last post
                                0
                                • Categories
                                • Recent
                                • Tags
                                • Popular
                                • Users
                                • Groups
                                • Search
                                • Get Qt Extensions
                                • Unsolved