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. Problem with data read from USB port

Problem with data read from USB port

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 7 Posters 6.1k 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.
  • VRoninV VRonin

    the problem is here: serialBuffer += QString::fromStdString(serialData.toStdString());

    how does your sensor encode the data?

    P Offline
    P Offline
    pj0909
    wrote on last edited by
    #3

    @VRonin The sensor is based on capacitive technology. Any change in capacitance gives corresponding values.

    VRoninV 1 Reply Last reply
    0
    • P pj0909

      @VRonin The sensor is based on capacitive technology. Any change in capacitance gives corresponding values.

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

      @pj0909 said in Problem with data read from USB port:

      values

      This still does not answer my question. how are those values represented in binary format to the serial output? is it a 32 bit integer, a 64 bit double precision float, an ASCII encoded string?

      "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

      P 1 Reply Last reply
      0
      • VRoninV VRonin

        @pj0909 said in Problem with data read from USB port:

        values

        This still does not answer my question. how are those values represented in binary format to the serial output? is it a 32 bit integer, a 64 bit double precision float, an ASCII encoded string?

        P Offline
        P Offline
        pj0909
        wrote on last edited by
        #5

        @VRonin Sorry, I misinterpreted your question. The answer to your question is 64 bit double precision float.

        jsulmJ kshegunovK 2 Replies Last reply
        0
        • P pj0909

          @VRonin Sorry, I misinterpreted your question. The answer to your question is 64 bit double precision float.

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by
          #6

          @pj0909 Then you should use http://doc.qt.io/qt-5/qbytearray.html#toDouble without converting to string:

          bool ok = false;
          serialBuffer += sensor->readAll().toDouble(&ok);
          if (!ok) // error
          

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

          1 Reply Last reply
          2
          • VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by VRonin
            #7

            To add to @jsulm, you should also check that serialData contains 64 and only 64 bits of data (i.e. serialData.size()==8) otherwise use QDataStream

            void Dialog::readSerial()
            {
            QDataStream sensorStream(sensor);
            QVector<double> readValues;
            for(;;){
            sensorStream.startTransaction();
            double readValue=0;
            sensorStream >> readValue;
            if(sensorStream.commitTransaction())
            readValues.push_back(readValue);
            else
            break;
            }
            qDebug() << "data read: " << readValues;
            }
            

            P.S.
            If your sensor sends the data in little endian order, you'll have to set the QDataStream byte order http://doc.qt.io/qt-5/qdatastream.html#setByteOrder

            "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
            • P pj0909

              @VRonin Sorry, I misinterpreted your question. The answer to your question is 64 bit double precision float.

              kshegunovK Offline
              kshegunovK Offline
              kshegunov
              Moderators
              wrote on last edited by
              #8

              @pj0909 said in Problem with data read from USB port:

              The answer to your question is 64 bit double precision float.

              Then you need to read the data as binary, not as text! Something like this (warning: the code isn't really portable):

              QDataStream in(&serialData, QIODevice::ReadOnly);
              
              double value;
              in >> value;

              Read and abide by the Qt Code of Conduct

              1 Reply Last reply
              3
              • P Offline
                P Offline
                pj0909
                wrote on last edited by
                #9

                I will implement the suggestions in the code and will see the output from the sensor. Will let you all know if its working correctly or still there is a problem. Thank you for the suggestions.

                1 Reply Last reply
                0
                • P Offline
                  P Offline
                  pj0909
                  wrote on last edited by
                  #10

                  Finally I solved my problem. I set the floating point precision in addition to the suggestions given above and now I am reading the data as expected.

                  Thank you all for the suggestions.

                  1 Reply Last reply
                  0
                  • N Offline
                    N Offline
                    namduc
                    wrote on last edited by
                    #11

                    Hi all!
                    I have the same problem, I need to communicate with a USB card reader, but I don't recognize it when i plug it with my PC ( Win 7)
                    serialportinfo.hasProductIdentifier() and serialportinfo.hasVendorIdentifier() all return false;
                    Who can help me? Thanks!

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      kuzulis
                      Qt Champions 2020
                      wrote on last edited by
                      #12

                      What's relation between the serial ports and the USB card readers?

                      1 Reply Last reply
                      2
                      • N Offline
                        N Offline
                        namduc
                        wrote on last edited by
                        #13

                        Reader Card connect directly to the computer using the USB port
                        Are there any libraries supporting this?
                        Thanks!

                        aha_1980A 1 Reply Last reply
                        0
                        • N namduc

                          Reader Card connect directly to the computer using the USB port
                          Are there any libraries supporting this?
                          Thanks!

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

                          Hi @namduc,

                          there is exactly one: libusb

                          Regards

                          Qt has to stay free or it will die.

                          1 Reply Last reply
                          6

                          • Login

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