Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. qextserial port in qt5.7.0
Forum Updated to NodeBB v4.3 + New Features

qextserial port in qt5.7.0

Scheduled Pinned Locked Moved Unsolved Installation and Deployment
16 Posts 4 Posters 2.7k Views 2 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.
  • V Offline
    V Offline
    vivekyuvan
    wrote on last edited by vivekyuvan
    #1

    Dear Friends
    I want to use qextserial port in qt5.7.0 vesrion i know the qextserial library for older qt versions.

    I have a source code that was previously written in qt4.8.7 but now i have upgraded my source code with newer version qt5.7.0 with help of the document Transition from Qt 4.x to Qt5 except qextserial

    the source code was compiled and executed successfully without issue.

    qextserial library is linked static include in the .pro file

    So now my doubt is can i use qextserial lib in qt5.7.0?

    Thanks and best regards
    vivekyuvan

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by SGaist
      #2

      Hi,

      There’s no particular reason you can’t use it especially since it looks like it’s already working for you.

      Just note that Qt 5 has now a dedicated module to handle serial ports.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      V 1 Reply Last reply
      1
      • V Offline
        V Offline
        vivekyuvan
        wrote on last edited by
        #3

        Hi@SGaist
        yes i know qt 5 has a qserial port . But my doubt is how to transit the qextserial code to qtserial port

        in my previous version code i know how to initialise and open the serial communication port

        by this line

        
         DataAcquisitionPort = new QextSerialPort("/dev/ttyUSB0", QextSerialPort::EventDriven);
            DataAcquisitionPort->setPortName("/dev/ttyUSB0");
        
        DataAcquisitionPort->setBaudRate(BAUD115200);                                      // To set the DataAcquisitionPort Baudrate to 115200 for Protocol
            DataAcquisitionPort->setFlowControl(FLOW_OFF);                                     // To set the flow control to none
            DataAcquisitionPort->setParity(PAR_NONE);                                          // To set the None pairity
            DataAcquisitionPort->setDataBits(DATA_8);                                          // To set the bit length to 8
            DataAcquisitionPort->setStopBits(STOP_1);                                          // To set the stop bits to 1
            DataAcquisitionPort->setTimeout(0);
        

        But here in qt5.7.0 i don know how to initialise and open the communicaton port ttyUSB in qtserail port library

        so can you show me an spinet or example code that will helpful

        Thanks and regards
        vivekyuvan

        J.HilkJ 1 Reply Last reply
        0
        • V vivekyuvan

          Hi@SGaist
          yes i know qt 5 has a qserial port . But my doubt is how to transit the qextserial code to qtserial port

          in my previous version code i know how to initialise and open the serial communication port

          by this line

          
           DataAcquisitionPort = new QextSerialPort("/dev/ttyUSB0", QextSerialPort::EventDriven);
              DataAcquisitionPort->setPortName("/dev/ttyUSB0");
          
          DataAcquisitionPort->setBaudRate(BAUD115200);                                      // To set the DataAcquisitionPort Baudrate to 115200 for Protocol
              DataAcquisitionPort->setFlowControl(FLOW_OFF);                                     // To set the flow control to none
              DataAcquisitionPort->setParity(PAR_NONE);                                          // To set the None pairity
              DataAcquisitionPort->setDataBits(DATA_8);                                          // To set the bit length to 8
              DataAcquisitionPort->setStopBits(STOP_1);                                          // To set the stop bits to 1
              DataAcquisitionPort->setTimeout(0);
          

          But here in qt5.7.0 i don know how to initialise and open the communicaton port ttyUSB in qtserail port library

          so can you show me an spinet or example code that will helpful

          Thanks and regards
          vivekyuvan

          J.HilkJ Offline
          J.HilkJ Offline
          J.Hilk
          Moderators
          wrote on last edited by J.Hilk
          #4

          @vivekyuvan have you taken a look at the docu yet?
          http://doc.qt.io/qt-5/qserialport.html

          the
          QSerialport modul has all the functions you mention in the post
          0_1532688470506_da17695d-225d-41dc-b1cc-6e23c42ab407-image.png

          and the constuctor also excepts a string to the device

          seems like you won't have to change much?


          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


          Q: What's that?
          A: It's blue light.
          Q: What does it do?
          A: It turns blue.

          1 Reply Last reply
          3
          • SGaistS SGaist

            Hi,

            There’s no particular reason you can’t use it especially since it looks like it’s already working for you.

            Just note that Qt 5 has now a dedicated module to handle serial ports.

            V Offline
            V Offline
            vivekyuvan
            wrote on last edited by vivekyuvan
            #5

            Hi@SGaist I have a problem while installing the qtserial port library here i pasted the error message

            nu/qt5/QtCore -I.moc -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o .obj/qserialport.o qserialport.cpp
            In file included from qserialport.cpp:47:0:
            qserialport_p.h:58:33: fatal error: private/qiodevice_p.h: No such file or directory
            compilation terminated.
            Makefile:402: recipe for target '.obj/qserialport.o' failed
            make[2]: *** [.obj/qserialport.o] Error 1
            make[2]: Leaving directory '/home/vivek/qtserialport/src/serialport'
            Makefile:42: recipe for target 'sub-serialport-make_first' failed
            make[1]: *** [sub-serialport-make_first] Error 2
            make[1]: Leaving directory '/home/vivek/qtserialport/src'
            Makefile:44: recipe for target 'sub-src-make_first' failed
            make: *** [sub-src-make_first] Error 2
            vivek@vivek-Veriton-Series:~/qtserialport$ 
            
            
            
            [0_1532751720829_gg](Uploading 100%)
            aha_1980A 1 Reply Last reply
            0
            • V vivekyuvan

              Hi@SGaist I have a problem while installing the qtserial port library here i pasted the error message

              nu/qt5/QtCore -I.moc -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o .obj/qserialport.o qserialport.cpp
              In file included from qserialport.cpp:47:0:
              qserialport_p.h:58:33: fatal error: private/qiodevice_p.h: No such file or directory
              compilation terminated.
              Makefile:402: recipe for target '.obj/qserialport.o' failed
              make[2]: *** [.obj/qserialport.o] Error 1
              make[2]: Leaving directory '/home/vivek/qtserialport/src/serialport'
              Makefile:42: recipe for target 'sub-serialport-make_first' failed
              make[1]: *** [sub-serialport-make_first] Error 2
              make[1]: Leaving directory '/home/vivek/qtserialport/src'
              Makefile:44: recipe for target 'sub-src-make_first' failed
              make: *** [sub-src-make_first] Error 2
              vivek@vivek-Veriton-Series:~/qtserialport$ 
              
              
              
              [0_1532751720829_gg](Uploading 100%)
              aha_1980A Offline
              aha_1980A Offline
              aha_1980
              Lifetime Qt Champion
              wrote on last edited by
              #6

              Hi @vivekyuvan,

              why do you need to build QtSerialPort yourself? It is already included in Qt since 5.1.

              How did you install Qt 5.7? With the package manager or with the online installer?

              BTW: You should better use Qt 5.9 LTS or 5.11 for new development.

              Regards

              Qt has to stay free or it will die.

              1 Reply Last reply
              1
              • V Offline
                V Offline
                vivekyuvan
                wrote on last edited by vivekyuvan
                #7

                hi@aha_1980 Yes indeed qtserial is already exists in qt5

                But here I face an issue while calling the QSerial Header files with QT Creator Editor . My QT creator Doesn't includes the QSerial Header files

                so that's why I did install qtserial port library manually. but now i got the header files in qt creator Editor with installing this command in terminal
                $ sudo apt-get install libqt5serialport5-dev

                is that ok correct me if i am wrong

                Thanks & Regards
                vivekyuvan

                aha_1980A 1 Reply Last reply
                0
                • V vivekyuvan

                  hi@aha_1980 Yes indeed qtserial is already exists in qt5

                  But here I face an issue while calling the QSerial Header files with QT Creator Editor . My QT creator Doesn't includes the QSerial Header files

                  so that's why I did install qtserial port library manually. but now i got the header files in qt creator Editor with installing this command in terminal
                  $ sudo apt-get install libqt5serialport5-dev

                  is that ok correct me if i am wrong

                  Thanks & Regards
                  vivekyuvan

                  aha_1980A Offline
                  aha_1980A Offline
                  aha_1980
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  @vivekyuvan

                  $ sudo apt-get install libqt5serialport5-dev

                  that looks good, and should work.

                  Afterwards, you need to add QT += serialport in your .pro file, as stated in the documentation

                  Qt has to stay free or it will die.

                  V 1 Reply Last reply
                  1
                  • V Offline
                    V Offline
                    vivekyuvan
                    wrote on last edited by
                    #9

                    @aha_1980 Thanks Now i am going to build my application hope it will build successfully.

                    1 Reply Last reply
                    1
                    • aha_1980A aha_1980

                      @vivekyuvan

                      $ sudo apt-get install libqt5serialport5-dev

                      that looks good, and should work.

                      Afterwards, you need to add QT += serialport in your .pro file, as stated in the documentation

                      V Offline
                      V Offline
                      vivekyuvan
                      wrote on last edited by vivekyuvan
                      #10

                      @aha_1980 My code build and compiled successfully but my com port /dev/ttyUSB0 open was unsuccessful

                      Here is code snippet

                      void MainWindow::SerialPortInit()
                      {
                      
                      
                          DataAcquisitionPort = new QserialPort();
                          DataAcquisitionPort->setPortName("/dev/ttyUSB0");
                          DataAcquisitionPort->setBaudRate(QSerialPort::Baud115200);
                          DataAcquisitionPort->setFlowControl(QSerialPort::NoFlowControl);                                     
                          DataAcquisitionPort->setDataBits(QSerialPort::Data8);
                          DataAcquisitionPort->setParity(QSerialPort::NoParity);
                          DataAcquisitionPort->setStopBits(QSerialPort::OneStop);
                          qDebug() << "PORT Initialize completed";
                      bool res = false;
                          res = DataAcquisitionPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered | QIODevice::Append | QIODevice::Text);  
                          connect(DataAcquisitionPort, SIGNAL(readyRead()), this, SLOT(Get_Data_from_Serial_port()));         
                          if(res)
                         {
                              qDebug() << "TRYING TO OPEN PORT"
                          }
                          else
                          {
                             qDebug("PROTOCOL PORT OPEN FAILED");
                          }
                      }
                      

                      this code cant open my port it always "protocol port open failed "

                      Help me out to resolve this issue

                      Thanks

                      aha_1980A 1 Reply Last reply
                      0
                      • V vivekyuvan

                        @aha_1980 My code build and compiled successfully but my com port /dev/ttyUSB0 open was unsuccessful

                        Here is code snippet

                        void MainWindow::SerialPortInit()
                        {
                        
                        
                            DataAcquisitionPort = new QserialPort();
                            DataAcquisitionPort->setPortName("/dev/ttyUSB0");
                            DataAcquisitionPort->setBaudRate(QSerialPort::Baud115200);
                            DataAcquisitionPort->setFlowControl(QSerialPort::NoFlowControl);                                     
                            DataAcquisitionPort->setDataBits(QSerialPort::Data8);
                            DataAcquisitionPort->setParity(QSerialPort::NoParity);
                            DataAcquisitionPort->setStopBits(QSerialPort::OneStop);
                            qDebug() << "PORT Initialize completed";
                        bool res = false;
                            res = DataAcquisitionPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered | QIODevice::Append | QIODevice::Text);  
                            connect(DataAcquisitionPort, SIGNAL(readyRead()), this, SLOT(Get_Data_from_Serial_port()));         
                            if(res)
                           {
                                qDebug() << "TRYING TO OPEN PORT"
                            }
                            else
                            {
                               qDebug("PROTOCOL PORT OPEN FAILED");
                            }
                        }
                        

                        this code cant open my port it always "protocol port open failed "

                        Help me out to resolve this issue

                        Thanks

                        aha_1980A Offline
                        aha_1980A Offline
                        aha_1980
                        Lifetime Qt Champion
                        wrote on last edited by
                        #11

                        @vivekyuvan said in qextserial port in qt5.7.0:

                        Hi, your code looks good so far, however this line:

                        bool res = false;
                        res = DataAcquisitionPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered | QIODevice::Append | QIODevice::Text);

                        should be simplified to: bool res = DataAcquisitionPort->open(QIODevice::ReadWrite);

                        I think open fails because you don't have the needed access rights.

                        Please send the output of ls -l /dev/ttyUSB0 to verify.

                        Usually the solution is to add your username to the group dialout

                        Regards.

                        PS: It does not hurt to write "Please help me to solve this issue" ;)

                        Qt has to stay free or it will die.

                        1 Reply Last reply
                        2
                        • V Offline
                          V Offline
                          vivekyuvan
                          wrote on last edited by vivekyuvan
                          #12

                          @aha_1980 I have changed the line as like your simplified line. and again i got same error

                          vivek@vivek-Veriton-Series:~$ ls -l /dev/ttyUSB0
                          crw-rw---- 1 root dialout 188, 0 Jul 28 13:25 /dev/ttyUSB0

                          I have verified ttyUSB0 in terminal its looking fine

                          and i didn't understand the line " Usually the solution is to add your username to the group dialout

                          "

                          can you please show me how to add username to group dialout ?

                          aha_1980A 1 Reply Last reply
                          0
                          • V vivekyuvan

                            @aha_1980 I have changed the line as like your simplified line. and again i got same error

                            vivek@vivek-Veriton-Series:~$ ls -l /dev/ttyUSB0
                            crw-rw---- 1 root dialout 188, 0 Jul 28 13:25 /dev/ttyUSB0

                            I have verified ttyUSB0 in terminal its looking fine

                            and i didn't understand the line " Usually the solution is to add your username to the group dialout

                            "

                            can you please show me how to add username to group dialout ?

                            aha_1980A Offline
                            aha_1980A Offline
                            aha_1980
                            Lifetime Qt Champion
                            wrote on last edited by
                            #13

                            @vivekyuvan

                            Usually the solution is to add your username to the group dialout

                            In the terminal, input the following command:

                            sudo adduser vivek dialout

                            After that log out and in again or reboot the computer. Then it should work.

                            Regards

                            Qt has to stay free or it will die.

                            1 Reply Last reply
                            2
                            • V Offline
                              V Offline
                              vivekyuvan
                              wrote on last edited by vivekyuvan
                              #14

                              hi@aha_1980 thanks for reply. I have an another issue in my code that is " I can't get UART RAW data continuously " My code compiled successfully and when I run application it throws an error

                              ASSERT: "uint(i) < uint(size())" in file /usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h, line 464
                              The program has unexpectedly finished.
                              

                              Serial port Initialize function

                              void MainWindow::SerialPortInit()
                              { 
                                  DataAcquisitionPort = new QSerialPort();
                                  DataAcquisitionPort->setPortName("/dev/ttyUSB0");
                                  DataAcquisitionPort->setBaudRate(QSerialPort::Baud115200);
                                  DataAcquisitionPort->setFlowControl(QSerialPort::NoFlowControl);                                     // To set the flow control to none
                                  DataAcquisitionPort->setDataBits(QSerialPort::Data8);
                                  DataAcquisitionPort->setParity(QSerialPort::NoParity);
                                  DataAcquisitionPort->setStopBits(QSerialPort::OneStop);
                                  qDebug() << "PORT Initialize completed";
                                 // bool res = false;
                                 // res = DataAcquisitionPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered | QIODevice::Append | QIODevice::Text);  // To open the DataAcquisitionPort
                                   bool res = DataAcquisitionPort->open(QIODevice::ReadWrite);
                                  connect(DataAcquisitionPort, SIGNAL(readyRead()), this, SLOT(Get_Data_from_Serial_port()));         
                                  if(res)
                                  {
                                      qDebug() << "TRYING TO OPEN PORT";
                                      const char data[] = "PROTOCOL PORT OPEN SUCCESS";
                                      qDebug() << data;
                                      DataAcquisitionPort->write(data, sizeof(data));
                                      const char Protocol_init_data_1[] = { 0x80};
                                      const char Protocol_init_data_2[] = { 0x04 };
                                      const char Protocol_init_data_3[] = { 0x00 };
                                      const char Protocol_init_data_4[] = { 0x80 };
                                      const char Protocol_init_data_5[] = { 0x02 };
                                      const char Protocol_init_data_6[] = { 0x00 };
                                      DataAcquisitionPort->write(Protocol_init_data_1, sizeof(Protocol_init_data_1));
                                     // Sleeper::msleep(100);
                                      QThread::msleep(100);
                                      DataAcquisitionPort->write(Protocol_init_data_2, sizeof(Protocol_init_data_2));
                                     // Sleeper::msleep(100);
                                      QThread::msleep(100);
                                      DataAcquisitionPort->write(Protocol_init_data_3, sizeof(Protocol_init_data_3));
                                      //Sleeper::msleep(100);
                                      QThread::msleep(100);
                                      DataAcquisitionPort->write(Protocol_init_data_4, sizeof(Protocol_init_data_4));
                                      //Sleeper::msleep(100);
                                      QThread::msleep(100);
                                      DataAcquisitionPort->write(Protocol_init_data_5, sizeof(Protocol_init_data_5));
                                      //Sleeper::msleep(100);
                                      QThread::msleep(100);
                                      DataAcquisitionPort->write(Protocol_init_data_6, sizeof(Protocol_init_data_6));
                                      qDebug() << "PROTOCOL OPEN SUCCESS";
                                  }
                                  else
                                  {
                                     qDebug("PROTOCOL PORT OPEN FAILED");
                                  }
                              }
                              

                              this function for protocol raw data frame

                              void MainWindow::Get_Data_from_Serial_port()
                              {
                                  QByteArray Protocol_Raw_Data;
                                  Protocol_Raw_Data = DataAcquisitionPort->readAll().toHex(); // Get the data and convert it to Hex fornat
                                      qDebug() << Protocol_Raw_Data;
                                  if((Protocol_Raw_Data.startsWith("02")) && (Protocol_Raw_Data.endsWith("03")))  // To check for the Complete Frame
                                  {
                                      P1.append(Protocol_Raw_Data);
                                      Protocol_Data_Organize(P1);
                                      P1.clear();
                                  }
                                  else
                                  {
                                      P1.append(Protocol_Raw_Data);                       // If the frame is not completed, then append the data to Pi array
                                  }
                              }
                              

                              And this function for split the raw data and separate the into single frame

                              void MainWindow::Protocol_Data_Organize(QByteArray Data)
                              {
                                  QList <QByteArray> Data_Frame;
                                  for(int pos = 0; pos < Data.size(); pos++)
                                  {
                                      if( (Data.at(pos-1) == '0' && Data.at(pos) == '3' && Data.at(pos+1) == '0' && Data.at(pos+2) == '2') || ((Data.at(pos) == '3') && pos == (Data.size()-1)) )
                                      {
                                          Data.insert((pos+1), ';');          // Inserting a Splitter between the individual data frames
                                      }
                                  }
                                  Data_Frame << Data.split(';');              // Splits the Whole data frame into separate individual data frame and stores it in the List
                                  Protocol_Data_split(Data_Frame);
                              }
                              

                              0_1532928899888_M1.png

                              In my previous version QT4.8.7 with qextserial library my application runs without issue but here i am facing this issue "The program has unexpectedly finished." and i cant get continuous UART Data . I don know what am missing please help me to resolve this issue

                              Thanks and Regard
                              vivekyuvan

                              aha_1980A 1 Reply Last reply
                              0
                              • V vivekyuvan

                                hi@aha_1980 thanks for reply. I have an another issue in my code that is " I can't get UART RAW data continuously " My code compiled successfully and when I run application it throws an error

                                ASSERT: "uint(i) < uint(size())" in file /usr/include/x86_64-linux-gnu/qt5/QtCore/qbytearray.h, line 464
                                The program has unexpectedly finished.
                                

                                Serial port Initialize function

                                void MainWindow::SerialPortInit()
                                { 
                                    DataAcquisitionPort = new QSerialPort();
                                    DataAcquisitionPort->setPortName("/dev/ttyUSB0");
                                    DataAcquisitionPort->setBaudRate(QSerialPort::Baud115200);
                                    DataAcquisitionPort->setFlowControl(QSerialPort::NoFlowControl);                                     // To set the flow control to none
                                    DataAcquisitionPort->setDataBits(QSerialPort::Data8);
                                    DataAcquisitionPort->setParity(QSerialPort::NoParity);
                                    DataAcquisitionPort->setStopBits(QSerialPort::OneStop);
                                    qDebug() << "PORT Initialize completed";
                                   // bool res = false;
                                   // res = DataAcquisitionPort->open(QIODevice::ReadWrite | QIODevice::Unbuffered | QIODevice::Append | QIODevice::Text);  // To open the DataAcquisitionPort
                                     bool res = DataAcquisitionPort->open(QIODevice::ReadWrite);
                                    connect(DataAcquisitionPort, SIGNAL(readyRead()), this, SLOT(Get_Data_from_Serial_port()));         
                                    if(res)
                                    {
                                        qDebug() << "TRYING TO OPEN PORT";
                                        const char data[] = "PROTOCOL PORT OPEN SUCCESS";
                                        qDebug() << data;
                                        DataAcquisitionPort->write(data, sizeof(data));
                                        const char Protocol_init_data_1[] = { 0x80};
                                        const char Protocol_init_data_2[] = { 0x04 };
                                        const char Protocol_init_data_3[] = { 0x00 };
                                        const char Protocol_init_data_4[] = { 0x80 };
                                        const char Protocol_init_data_5[] = { 0x02 };
                                        const char Protocol_init_data_6[] = { 0x00 };
                                        DataAcquisitionPort->write(Protocol_init_data_1, sizeof(Protocol_init_data_1));
                                       // Sleeper::msleep(100);
                                        QThread::msleep(100);
                                        DataAcquisitionPort->write(Protocol_init_data_2, sizeof(Protocol_init_data_2));
                                       // Sleeper::msleep(100);
                                        QThread::msleep(100);
                                        DataAcquisitionPort->write(Protocol_init_data_3, sizeof(Protocol_init_data_3));
                                        //Sleeper::msleep(100);
                                        QThread::msleep(100);
                                        DataAcquisitionPort->write(Protocol_init_data_4, sizeof(Protocol_init_data_4));
                                        //Sleeper::msleep(100);
                                        QThread::msleep(100);
                                        DataAcquisitionPort->write(Protocol_init_data_5, sizeof(Protocol_init_data_5));
                                        //Sleeper::msleep(100);
                                        QThread::msleep(100);
                                        DataAcquisitionPort->write(Protocol_init_data_6, sizeof(Protocol_init_data_6));
                                        qDebug() << "PROTOCOL OPEN SUCCESS";
                                    }
                                    else
                                    {
                                       qDebug("PROTOCOL PORT OPEN FAILED");
                                    }
                                }
                                

                                this function for protocol raw data frame

                                void MainWindow::Get_Data_from_Serial_port()
                                {
                                    QByteArray Protocol_Raw_Data;
                                    Protocol_Raw_Data = DataAcquisitionPort->readAll().toHex(); // Get the data and convert it to Hex fornat
                                        qDebug() << Protocol_Raw_Data;
                                    if((Protocol_Raw_Data.startsWith("02")) && (Protocol_Raw_Data.endsWith("03")))  // To check for the Complete Frame
                                    {
                                        P1.append(Protocol_Raw_Data);
                                        Protocol_Data_Organize(P1);
                                        P1.clear();
                                    }
                                    else
                                    {
                                        P1.append(Protocol_Raw_Data);                       // If the frame is not completed, then append the data to Pi array
                                    }
                                }
                                

                                And this function for split the raw data and separate the into single frame

                                void MainWindow::Protocol_Data_Organize(QByteArray Data)
                                {
                                    QList <QByteArray> Data_Frame;
                                    for(int pos = 0; pos < Data.size(); pos++)
                                    {
                                        if( (Data.at(pos-1) == '0' && Data.at(pos) == '3' && Data.at(pos+1) == '0' && Data.at(pos+2) == '2') || ((Data.at(pos) == '3') && pos == (Data.size()-1)) )
                                        {
                                            Data.insert((pos+1), ';');          // Inserting a Splitter between the individual data frames
                                        }
                                    }
                                    Data_Frame << Data.split(';');              // Splits the Whole data frame into separate individual data frame and stores it in the List
                                    Protocol_Data_split(Data_Frame);
                                }
                                

                                0_1532928899888_M1.png

                                In my previous version QT4.8.7 with qextserial library my application runs without issue but here i am facing this issue "The program has unexpectedly finished." and i cant get continuous UART Data . I don know what am missing please help me to resolve this issue

                                Thanks and Regard
                                vivekyuvan

                                aha_1980A Offline
                                aha_1980A Offline
                                aha_1980
                                Lifetime Qt Champion
                                wrote on last edited by
                                #15

                                Hi @vivekyuvan said in qextserial port in qt5.7.0:

                                "The program has unexpectedly finished."

                                A typical case for using the debugger. Start a debugging session, on the crash you get a stack trace. Then inspect the different functions in the stack trace until you find the guilty one.

                                if( (Data.at(pos-1) == '0'

                                This already looks like a candidate when pos == 0.

                                Qt has to stay free or it will die.

                                1 Reply Last reply
                                2
                                • aha_1980A Offline
                                  aha_1980A Offline
                                  aha_1980
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #16

                                  Another thing I noticed: You are using signals&slots together with sleeping functions.

                                  That is wrong - stop doing it, you putting yourself into trouble.

                                  Qt has to stay free or it will die.

                                  1 Reply Last reply
                                  2

                                  • Login

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