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. Reading from SerialPort and convert it to QString?!
Forum Updated to NodeBB v4.3 + New Features

Reading from SerialPort and convert it to QString?!

Scheduled Pinned Locked Moved Solved General and Desktop
16 Posts 5 Posters 6.5k 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.
  • MucipM Mucip

    Hi,
    No. I already add the plaintextEditor on the form. and below code:

    ui->plainTextEdit->insertPlainText(QString(ba));

    I can see the results in the editor. No problem!... :(
    Like below;

    A 720
    A 720
    A 720

    Regards,
    Mucip:)

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

    @Mucip if you enter a Text via Qt-Designer, can you see that, whan the program is running?
    Can you highlight the Label/LineEdit and copy paste the text into a text document?


    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
    0
    • MucipM Offline
      MucipM Offline
      Mucip
      wrote on last edited by
      #7

      Hi,
      I didn't understand? Please could you explain little bit more?...
      Regards,
      Mucip:)

      J.HilkJ 1 Reply Last reply
      0
      • MucipM Offline
        MucipM Offline
        Mucip
        wrote on last edited by
        #8

        Hi,
        I checked.
        When I highlight and copy from PlainTextEditor I can paste it on the TextEditor of windows.
        But when I highlight and copy it from LineEdit I can not paste it on the TextEditor of windows.

        I think between 2th and 7th bits contain NULL when the value less then 6 digits like "200".

        So what happend if the ByteArray has NULL and why PlainTextEditor shows the value (like A 720) well and Why LineEdit NOT?!...

        Regards,
        Mucip:)

        1 Reply Last reply
        0
        • MucipM Mucip

          Hi,
          I didn't understand? Please could you explain little bit more?...
          Regards,
          Mucip:)

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

          @Mucip Well I just wanted to see, what is actually in that QByteArray

          You could use this function to "see" the content of your data:

          for(int i(0); i < ba.size();i++)
                  qDebug() <<  i << QChar(ba[i]) << static_cast<int>(ba[i]);
          

          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
          0
          • MucipM Offline
            MucipM Offline
            Mucip
            wrote on last edited by
            #10

            @J.Hilk said in Reading from SerialPort and convert it to QString?!:

            for(int i(0); i < ba.size();i++)
            qDebug() << i << QChar(ba[i]) << static_cast<int>(ba[i]);

            Hi,
            I used it and result:
            0 'A' 65
            0 ' ' 32
            0 ' ' 32
            1 '1' 49
            0 '4' 52
            1 '5' 53
            2 '0' 48
            0 '\xd' 13

            And Idicator shows 1450... This is correct! :)
            But How can I get the complate output like "A1450"???

            Regards,
            Mucip:)

            J.HilkJ 1 Reply Last reply
            0
            • aha_1980A Offline
              aha_1980A Offline
              aha_1980
              Lifetime Qt Champion
              wrote on last edited by
              #11

              @J.Hilk said in Reading from SerialPort and convert it to QString?!:

              @Mucip Well I just wanted to see, what is actually in that QByteArray
              You could use this function to "see" the content of your data:
              for(int i(0); i < ba.size();i++)
              qDebug() << i << QChar(ba[i]) << static_cast<int>(ba[i]);

              Easier would be to just convert the byte array to hex:

              qDebug() << ba.toHex();

              Qt has to stay free or it will die.

              1 Reply Last reply
              0
              • MucipM Mucip

                @J.Hilk said in Reading from SerialPort and convert it to QString?!:

                for(int i(0); i < ba.size();i++)
                qDebug() << i << QChar(ba[i]) << static_cast<int>(ba[i]);

                Hi,
                I used it and result:
                0 'A' 65
                0 ' ' 32
                0 ' ' 32
                1 '1' 49
                0 '4' 52
                1 '5' 53
                2 '0' 48
                0 '\xd' 13

                And Idicator shows 1450... This is correct! :)
                But How can I get the complate output like "A1450"???

                Regards,
                Mucip:)

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

                @Mucip said in Reading from SerialPort and convert it to QString?!:

                0 '\xd' 13

                I believe thats the culprit a carriage Return ist difficult to display in a QLabel and/or QLineEdit

                Also, seeing your index starting from 0 multiple times the text of the QLabel and QLineEdit are constantly overwritten. You'll need to construct a String out of your different received QByteArrays.
                I suggest something like this. If it always end with QChar(0x0D)

                //Member String
                QString str;
                
                void MainWindow::serialReceived()
                {
                    QByteArray ba;
                    bool finished(false);
                    ba= serial->readAll();
                    for(int i(0); i < ba.size();i++){
                         if(ba[i] != 0x0D)
                             str.append(ba[i]);
                         else finished = true;
                   }
                
                    if(finished){
                       ui->label_2->setText(str);
                       ui->plainTextEdit->insertPlainText(str);
                       str.clear();
                    }
                }
                

                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.

                MucipM 1 Reply Last reply
                0
                • VRoninV Offline
                  VRoninV Offline
                  VRonin
                  wrote on last edited by
                  #13

                  can you try:

                  void MainWindow::serialReceived()
                  {
                  QTextStream stream(serial);
                  const QString receivedStr = stream.readAll();
                  
                      ui->label_2->setText(receivedStr );
                     ui->plainTextEdit->insertPlainText(receivedStr );
                  
                  }
                  

                  Of course there is nothing here assuring you all data was received when the slot gets called

                  "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                  ~Napoleon Bonaparte

                  On a crusade to banish setIndexWidget() from the holy land of Qt

                  1 Reply Last reply
                  1
                  • MucipM Offline
                    MucipM Offline
                    Mucip
                    wrote on last edited by
                    #14

                    Hi,
                    No. Unfotunatelly same thing. I can see the data in plainTextEdit but not in lineEdit.

                    Regards,
                    Mucip:)

                    VRoninV 1 Reply Last reply
                    0
                    • MucipM Mucip

                      Hi,
                      No. Unfotunatelly same thing. I can see the data in plainTextEdit but not in lineEdit.

                      Regards,
                      Mucip:)

                      VRoninV Offline
                      VRoninV Offline
                      VRonin
                      wrote on last edited by
                      #15

                      @Mucip said in Reading from SerialPort and convert it to QString?!:

                      I can see the data in plainTextEdit but not in lineEdit

                      You are not setting the data in the lineedit, you are setting the string in a label and a plainTextEdit

                      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                      ~Napoleon Bonaparte

                      On a crusade to banish setIndexWidget() from the holy land of Qt

                      1 Reply Last reply
                      1
                      • J.HilkJ J.Hilk

                        @Mucip said in Reading from SerialPort and convert it to QString?!:

                        0 '\xd' 13

                        I believe thats the culprit a carriage Return ist difficult to display in a QLabel and/or QLineEdit

                        Also, seeing your index starting from 0 multiple times the text of the QLabel and QLineEdit are constantly overwritten. You'll need to construct a String out of your different received QByteArrays.
                        I suggest something like this. If it always end with QChar(0x0D)

                        //Member String
                        QString str;
                        
                        void MainWindow::serialReceived()
                        {
                            QByteArray ba;
                            bool finished(false);
                            ba= serial->readAll();
                            for(int i(0); i < ba.size();i++){
                                 if(ba[i] != 0x0D)
                                     str.append(ba[i]);
                                 else finished = true;
                           }
                        
                            if(finished){
                               ui->label_2->setText(str);
                               ui->plainTextEdit->insertPlainText(str);
                               str.clear();
                            }
                        }
                        
                        MucipM Offline
                        MucipM Offline
                        Mucip
                        wrote on last edited by
                        #16

                        @J.Hilk said in Reading from SerialPort and convert it to QString?!:

                        void MainWindow::serialReceived()
                        {
                        QByteArray ba;
                        bool finished(false);
                        ba= serial->readAll();
                        for(int i(0); i < ba.size();i++){
                        if(ba[i] != 0x0D)
                        str.append(ba[i]);
                        else finished = true;
                        }

                        Hi,
                        I solved the problem above like solution...
                        I checked the data one by one and add to QString.
                        Thanks.

                        1 Reply Last reply
                        0

                        • Login

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