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.0k 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.
  • 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