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

Problem with data read from USB port

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 7 Posters 5.4k 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