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. Binary data in SerialPort

Binary data in SerialPort

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 4 Posters 3.7k Views
  • 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.
  • Y Offline
    Y Offline
    yasinn
    wrote on last edited by
    #1

    Hello everyone;
    I communicate Qt with fpga, ı send 8 bit binary data but I read that data in ascıı format. How can I read directly binary format, or how can ı that ascıı value into again binary data?
    Thanks.

    T 1 Reply Last reply
    0
    • Y yasinn

      Hello everyone;
      I communicate Qt with fpga, ı send 8 bit binary data but I read that data in ascıı format. How can I read directly binary format, or how can ı that ascıı value into again binary data?
      Thanks.

      T Offline
      T Offline
      Tirupathi Korla
      wrote on last edited by
      #2

      @yasinn
      Are you getting binary value in ASCII format??
      i.e., you are getting 10101010 when you read but as ASCII values..

      1 Reply Last reply
      0
      • Y Offline
        Y Offline
        yasinn
        wrote on last edited by
        #3

        Yes,
        let me explain again, I send 10101010 data from fpga and when I read from Qt for ex;

        QByteArray data= serial->readAll();
        QString s_data = QString(data);
        ui->textEdit->setText(s_data);

        I saw ascii characters in text edit. for ex,
        0_1514382778744_b5a26a72-6d4c-4dd2-96ea-51a34405d422-image.png that image.

        1 Reply Last reply
        0
        • Y Offline
          Y Offline
          yasinn
          wrote on last edited by
          #4

          sorry for adding but;
          when I send 00100101 data I saw "%" as ex, or
          when I send 00100110 data I saw "& " that symbol.

          How can I turn those symbol into binary

          aha_1980A 1 Reply Last reply
          0
          • Y yasinn

            sorry for adding but;
            when I send 00100101 data I saw "%" as ex, or
            when I send 00100110 data I saw "& " that symbol.

            How can I turn those symbol into binary

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

            @yasinn said in Binary data in SerialPort:

            sorry for adding but;
            when I send 00100101 data I saw "%" as ex, or
            when I send 00100110 data I saw "& " that symbol.

            How can I turn those symbol into binary

            Hello, the data is already binary, but you are interpreting them as ASCII characters (when you append the chars to a text edit).

            What do you actually want to do with the data you receive?

            Qt has to stay free or it will die.

            Y 1 Reply Last reply
            2
            • aha_1980A aha_1980

              @yasinn said in Binary data in SerialPort:

              sorry for adding but;
              when I send 00100101 data I saw "%" as ex, or
              when I send 00100110 data I saw "& " that symbol.

              How can I turn those symbol into binary

              Hello, the data is already binary, but you are interpreting them as ASCII characters (when you append the chars to a text edit).

              What do you actually want to do with the data you receive?

              Y Offline
              Y Offline
              yasinn
              wrote on last edited by
              #6

              @aha_1980
              firstly thanks for your reply, I send distance data in binary and I wanna read as decimal as result.
              for ex if I send 00000111 data , I wanna read 7.

              you said that " the data is already binary, but you are interpreting them as ASCII characters" , yes I know but how can I convert ıt into decimal ?

              aha_1980A 1 Reply Last reply
              0
              • Y yasinn

                @aha_1980
                firstly thanks for your reply, I send distance data in binary and I wanna read as decimal as result.
                for ex if I send 00000111 data , I wanna read 7.

                you said that " the data is already binary, but you are interpreting them as ASCII characters" , yes I know but how can I convert ıt into decimal ?

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

                @yasinn said in Binary data in SerialPort:

                @aha_1980
                firstly thanks for your reply, I send distance data in binary and I wanna read as decimal as result.
                for ex if I send 00000111 data , I wanna read 7.

                you said that " the data is already binary, but you are interpreting them as ASCII characters" , yes I know but how can I convert ıt into decimal ?

                There's no need to convert, the binary data 00000111 is already 7. The problem you might facing is, that each byte is stored as a char and usally these are used to encode text.

                Nevertheless, a char is an int and you can do arithmetics with it and compare it, etc.

                Qt has to stay free or it will die.

                Y 1 Reply Last reply
                2
                • Y Offline
                  Y Offline
                  yasinn
                  wrote on last edited by
                  #8
                  This post is deleted!
                  aha_1980A 1 Reply Last reply
                  0
                  • aha_1980A aha_1980

                    @yasinn said in Binary data in SerialPort:

                    @aha_1980
                    firstly thanks for your reply, I send distance data in binary and I wanna read as decimal as result.
                    for ex if I send 00000111 data , I wanna read 7.

                    you said that " the data is already binary, but you are interpreting them as ASCII characters" , yes I know but how can I convert ıt into decimal ?

                    There's no need to convert, the binary data 00000111 is already 7. The problem you might facing is, that each byte is stored as a char and usally these are used to encode text.

                    Nevertheless, a char is an int and you can do arithmetics with it and compare it, etc.

                    Y Offline
                    Y Offline
                    yasinn
                    wrote on last edited by
                    #9

                    @aha_1980 said in Binary data in SerialPort:

                    @yasinn said in Binary data in SerialPort:

                    @aha_1980
                    firstly thanks for your reply, I send distance data in binary and I wanna read as decimal as result.
                    for ex if I send 00000111 data , I wanna read 7.

                    you said that " the data is already binary, but you are interpreting them as ASCII characters" , yes I know but how can I convert ıt into decimal ?

                    There's no need to convert, the binary data 00000111 is already 7. The problem you might facing is, that each byte is stored as a char and usally these are used to encode text.

                    Nevertheless, a char is an int and you can do arithmetics with it and compare it, etc.

                    thaks for advice, but ı dont wanna do arithmatics with data, I just want to saw it as deciamal. I work on a radar project, I cant say "your target is 01010111 meters away from you " :)

                    Should I compare 255 characters for it ?

                    1 Reply Last reply
                    0
                    • Y yasinn

                      This post is deleted!

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

                      @yasinn said in Binary data in SerialPort:

                      thaks for advice, but ı dont wanna do arithmatics with data, I just want to saw it as deciamal. I work on a radar project, I cant say "your target is 01010111 meters away from you " :)

                      I'm sorry, but it seems you should really learn basic C programming - you will stuck soon again otherwise.

                      Given, that each byte you receive from the serial port is a distance in meters, you could do something like:

                      const QByteArray data = serial.readAll();
                      for (int i = 0; i < data.size(); ++i) {
                          QString text = QObject::tr("The target is %1 meters away").arg(int(data.at(i)));
                          ui->textEdit->append(text);
                      }
                      

                      Qt has to stay free or it will die.

                      Y 1 Reply Last reply
                      3
                      • VRoninV Offline
                        VRoninV Offline
                        VRonin
                        wrote on last edited by VRonin
                        #11
                            QByteArray data= serial->readAll();
                            QString s_data;
                            for (char singleByte : data)
                                s_data.append(ui->textEdit->locale().toString(ststic_cast<qint16>(singleByte))); //if it's unsigned change qint16 to quint16
                            ui->textEdit->setText(s_data);
                        

                        "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
                        2
                        • aha_1980A aha_1980

                          @yasinn said in Binary data in SerialPort:

                          thaks for advice, but ı dont wanna do arithmatics with data, I just want to saw it as deciamal. I work on a radar project, I cant say "your target is 01010111 meters away from you " :)

                          I'm sorry, but it seems you should really learn basic C programming - you will stuck soon again otherwise.

                          Given, that each byte you receive from the serial port is a distance in meters, you could do something like:

                          const QByteArray data = serial.readAll();
                          for (int i = 0; i < data.size(); ++i) {
                              QString text = QObject::tr("The target is %1 meters away").arg(int(data.at(i)));
                              ui->textEdit->append(text);
                          }
                          
                          Y Offline
                          Y Offline
                          yasinn
                          wrote on last edited by
                          #12

                          @aha_1980 said in Binary data in SerialPort:

                          @yasinn said in Binary data in SerialPort:

                          thaks for advice, but ı dont wanna do arithmatics with data, I just want to saw it as deciamal. I work on a radar project, I cant say "your target is 01010111 meters away from you " :)

                          I'm sorry, but it seems you should really learn basic C programming - you will stuck soon again otherwise.

                          Given, that each byte you receive from the serial port is a distance in meters, you could do something like:

                          const QByteArray data = serial.readAll();
                          for (int i = 0; i < data.size(); ++i) {
                              QString text = QObject::tr("The target is %1 meters away").arg(int(data.at(i)));
                              ui->textEdit->append(text);
                          }
                          

                          Thank u so much. Sorry for my ignorance..

                          aha_1980A 2 Replies Last reply
                          1
                          • Y yasinn

                            @aha_1980 said in Binary data in SerialPort:

                            @yasinn said in Binary data in SerialPort:

                            thaks for advice, but ı dont wanna do arithmatics with data, I just want to saw it as deciamal. I work on a radar project, I cant say "your target is 01010111 meters away from you " :)

                            I'm sorry, but it seems you should really learn basic C programming - you will stuck soon again otherwise.

                            Given, that each byte you receive from the serial port is a distance in meters, you could do something like:

                            const QByteArray data = serial.readAll();
                            for (int i = 0; i < data.size(); ++i) {
                                QString text = QObject::tr("The target is %1 meters away").arg(int(data.at(i)));
                                ui->textEdit->append(text);
                            }
                            

                            Thank u so much. Sorry for my ignorance..

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

                            @yasinn said in Binary data in SerialPort:

                            for (int i = 0; i < data.size(); ++i) {
                            QString text = QObject::tr("The target is %1 meters away").arg(int(data.at(i)));
                            ui->textEdit->append(text);
                            }

                            Thank u so much. Sorry for my ignorance..

                            Never mind! We all have started at the bottom... Good luck with your project.

                            Qt has to stay free or it will die.

                            1 Reply Last reply
                            0
                            • Y yasinn

                              @aha_1980 said in Binary data in SerialPort:

                              @yasinn said in Binary data in SerialPort:

                              thaks for advice, but ı dont wanna do arithmatics with data, I just want to saw it as deciamal. I work on a radar project, I cant say "your target is 01010111 meters away from you " :)

                              I'm sorry, but it seems you should really learn basic C programming - you will stuck soon again otherwise.

                              Given, that each byte you receive from the serial port is a distance in meters, you could do something like:

                              const QByteArray data = serial.readAll();
                              for (int i = 0; i < data.size(); ++i) {
                                  QString text = QObject::tr("The target is %1 meters away").arg(int(data.at(i)));
                                  ui->textEdit->append(text);
                              }
                              

                              Thank u so much. Sorry for my ignorance..

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

                              @yasinn

                              Thinking about the problem again, casting to uchar seems better so you also get the distances between 128 and 255 meters.

                              const QByteArray data = serial.readAll();
                              for (int i = 0; i < data.size(); ++i) {
                                  QString text = QObject::tr("The target is %1 meters away").arg(uchar(data.at(i)));
                                  ui->textEdit->append(text);
                              }
                              

                              Qt has to stay free or it will die.

                              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