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
Forum Updated to NodeBB v4.3 + New Features

Binary data in SerialPort

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 4 Posters 3.8k Views 1 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.
  • 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