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. [PLEASE HELP] how to make a barcode receiver?
Forum Updated to NodeBB v4.3 + New Features

[PLEASE HELP] how to make a barcode receiver?

Scheduled Pinned Locked Moved Solved General and Desktop
57 Posts 9 Posters 14.3k Views 4 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.
  • R raven-worx
    21 Aug 2018, 06:47

    @davidlabib
    use the very first code (RS232).
    Then check the COM port of the scanner it is connected to (e.g. on Windows in the Device Manager).

    in your .pro file add QT += serialport

    QSerialPort example usage:

    QSerialPort* port = new QSerialPort( this );
    port->setBaudRate( QSerialPort::Baud115200 ); // possible something else, also check the manual
    port->setPort( QPortInfo("COM4") ); // COM port - check Device Manager for connected port
    if( port->open(QSerialPort::ReadOnly) )
    {
            connect(port, &QSerialPort::readyRead, this, [port]() {
                  if( !port->bytesAvailable() )
                       return;
                  const QByteArray scannedData = port->readAll();
                  // ...
            });
    }
    else
    {
        // check port->error()
    }
    
    ? Offline
    ? Offline
    A Former User
    wrote on 22 Aug 2018, 14:29 last edited by
    #35

    @raven-worx
    0_1534947972491_3255bdcc-2942-41cb-986a-e4f1bb6adf9c-image.png
    I'm using ubuntu now

    1 Reply Last reply
    0
    • S Offline
      S Offline
      SGaist
      Lifetime Qt Champion
      wrote on 22 Aug 2018, 20:00 last edited by
      #36

      Hi,

      It's QSerialPortInfo.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      1
      • ? Offline
        ? Offline
        A Former User
        wrote on 22 Aug 2018, 20:43 last edited by
        #37

        0_1534969744372_9c1d0188-4bd4-47a2-9e26-5799df5452cc-image.png

        i dosn't do any thing it always execute "else"
        QSerialPort::SerialPortError(DeviceNotFoundError)

        J 1 Reply Last reply 22 Aug 2018, 23:55
        0
        • S Offline
          S Offline
          SGaist
          Lifetime Qt Champion
          wrote on 22 Aug 2018, 20:53 last edited by
          #38

          And what is the error ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • R raven-worx
            22 Aug 2018, 06:51

            @JKSH said in [PLEASE HELP] how to make a barcode receiver?:

            Qt Serial Port works with serial ports. A USB port is not a serial port.

            thats not true. Of course QtSerialPort works with USB.
            USB = Universal Serial Bus

            The code above i've posted definitively works with a USB Barcode scanner and i used it myself already.

            K Offline
            K Offline
            kuzulis
            Qt Champions 2020
            wrote on 22 Aug 2018, 21:13 last edited by
            #39

            @raven-worx said in [PLEASE HELP] how to make a barcode receiver?:

            thats not true. Of course QtSerialPort works with USB.
            USB = Universal Serial Bus

            What? QtSerialPort works only with serial ports. It has nothing common with USB... Please don't confuse peoples. ;)

            1 Reply Last reply
            2
            • ? A Former User
              22 Aug 2018, 20:43

              0_1534969744372_9c1d0188-4bd4-47a2-9e26-5799df5452cc-image.png

              i dosn't do any thing it always execute "else"
              QSerialPort::SerialPortError(DeviceNotFoundError)

              J Offline
              J Offline
              JKSH
              Moderators
              wrote on 22 Aug 2018, 23:55 last edited by JKSH
              #40

              @davidlabib said in [PLEASE HELP] how to make a barcode receiver?:

              QSerialPort::SerialPortError(DeviceNotFoundError)

              Well, that means your program can't find a port called COM4. Read the comments in @raven-worx's code and think about what they are asking you to do.

              What is the name of the port that your scanner is connected to? https://www.cyberciti.biz/faq/find-out-linux-serial-ports-with-setserial/

              @raven-worx said in [PLEASE HELP] how to make a barcode receiver?:

              The code above i've posted definitively works with a USB Barcode scanner and i used it myself already.

              My apologies; I didn't read the codes or think of the scenario that @mrjj highlighted in his last post.

              If the barcode scanner implements RS232-over-USB, then you're right -- Qt Serial Port can indeed work with the scanner via the USB port.

              QtSerialPort works with USB.
              USB = Universal Serial Bus

              Even though they both have "serial" in their names, Universal Serial Bus is completely unrelated to old-school serial ports. The term "serial port" usually refers to an RS-232 port: https://en.wikipedia.org/wiki/Serial_port

              A USB device can be programmed to emulate serial port comms, but these are the minority. You cannot, for example, use Qt Serial Port to read your USB keyboard.

              Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

              1 Reply Last reply
              2
              • ? Offline
                ? Offline
                A Former User
                wrote on 23 Aug 2018, 03:46 last edited by
                #41

                @JKSH i didn't worked
                i tried form com 1 to com 18
                non of them worked

                J 1 Reply Last reply 23 Aug 2018, 04:01
                0
                • ? A Former User
                  23 Aug 2018, 03:46

                  @JKSH i didn't worked
                  i tried form com 1 to com 18
                  non of them worked

                  J Offline
                  J Offline
                  JKSH
                  Moderators
                  wrote on 23 Aug 2018, 04:01 last edited by JKSH
                  #42

                  @davidlabib said in [PLEASE HELP] how to make a barcode receiver?:

                  @JKSH i didn't worked
                  i tried form com 1 to com 18
                  non of them worked

                  What is the name of the port that your scanner is connected to? COMX is a Windows name. Linux names are different.

                  Read https://www.cyberciti.biz/faq/find-out-linux-serial-ports-with-setserial/ to find the name on your Ubuntu machine.

                  Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                  1 Reply Last reply
                  3
                  • ? Offline
                    ? Offline
                    A Former User
                    wrote on 23 Aug 2018, 04:46 last edited by
                    #43

                    same error
                    i tried from ttyS0 to ttyS5 didn't work

                    J 1 Reply Last reply 23 Aug 2018, 04:49
                    0
                    • ? A Former User
                      23 Aug 2018, 04:46

                      same error
                      i tried from ttyS0 to ttyS5 didn't work

                      J Offline
                      J Offline
                      JKSH
                      Moderators
                      wrote on 23 Aug 2018, 04:49 last edited by JKSH
                      #44

                      @davidlabib said in [PLEASE HELP] how to make a barcode receiver?:

                      same error
                      i tried from ttyS0 to ttyS5 didn't work

                      You didn't answer my question. What is the name of the port that your scanner is connected to?

                      Also, what does QSerialPortInfo::availablePorts() give you? http://doc.qt.io/qt-5/qserialportinfo.html#availablePorts

                      Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                      ? 1 Reply Last reply 23 Aug 2018, 05:51
                      4
                      • J JKSH
                        23 Aug 2018, 04:49

                        @davidlabib said in [PLEASE HELP] how to make a barcode receiver?:

                        same error
                        i tried from ttyS0 to ttyS5 didn't work

                        You didn't answer my question. What is the name of the port that your scanner is connected to?

                        Also, what does QSerialPortInfo::availablePorts() give you? http://doc.qt.io/qt-5/qserialportinfo.html#availablePorts

                        ? Offline
                        ? Offline
                        A Former User
                        wrote on 23 Aug 2018, 05:51 last edited by A Former User
                        #45

                        @JKSH ok i could find the right port and passed from

                        if( port->open(QSerialPort::ReadOnly) )
                        

                        now I'm stuck on

                        if( !port->bytesAvailable() )
                                          return;
                        

                        it always return
                        witch mean no bytes is available

                        J 1 Reply Last reply 23 Aug 2018, 06:03
                        0
                        • ? A Former User
                          23 Aug 2018, 05:51

                          @JKSH ok i could find the right port and passed from

                          if( port->open(QSerialPort::ReadOnly) )
                          

                          now I'm stuck on

                          if( !port->bytesAvailable() )
                                            return;
                          

                          it always return
                          witch mean no bytes is available

                          J Offline
                          J Offline
                          JKSH
                          Moderators
                          wrote on 23 Aug 2018, 06:03 last edited by
                          #46

                          @davidlabib said in [PLEASE HELP] how to make a barcode receiver?:

                          now I'm stuck on

                          if( !port->bytesAvailable() )
                                            return;
                          

                          it always return
                          witch mean no bytes is available

                          Did you choose the correct settings? How is your scanner configured for the following?

                          • Baud rate
                          • Parity
                          • Data bits
                          • Stop bits
                          • Flow control

                          Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                          1 Reply Last reply
                          0
                          • ? Offline
                            ? Offline
                            A Former User
                            wrote on 23 Aug 2018, 06:06 last edited by A Former User
                            #47

                            @JKSH
                            Baud rate 115200

                            A 1 Reply Last reply 23 Aug 2018, 06:21
                            0
                            • ? A Former User
                              23 Aug 2018, 06:06

                              @JKSH
                              Baud rate 115200

                              A Offline
                              A Offline
                              aha_1980
                              Lifetime Qt Champion
                              wrote on 23 Aug 2018, 06:21 last edited by
                              #48

                              @davidlabib

                              I guess you don't have permission to use the serial port.

                              Please type: ls -l /dev/<your-serial-port-name> in a terminal and post the output here.

                              Qt has to stay free or it will die.

                              1 Reply Last reply
                              1
                              • ? Offline
                                ? Offline
                                A Former User
                                wrote on 23 Aug 2018, 06:25 last edited by
                                #49

                                @aha_1980 yes i don't have
                                but i use sudo

                                1 Reply Last reply
                                0
                                • S Offline
                                  S Offline
                                  SGaist
                                  Lifetime Qt Champion
                                  wrote on 23 Aug 2018, 06:27 last edited by
                                  #50

                                  Don't develop as super-user.

                                  The command @aha_1980 will show the user and group affected to the device. Add your own user to that group, then log out and log in again and you will have access to the device.

                                  Interested in AI ? www.idiap.ch
                                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  1 Reply Last reply
                                  4
                                  • A Offline
                                    A Offline
                                    aha_1980
                                    Lifetime Qt Champion
                                    wrote on 23 Aug 2018, 06:28 last edited by
                                    #51

                                    @davidlabib Better add your user to the group dialout and reboot your computer.

                                    Of course sudo works, but may give new problems.

                                    As @JKSH wrote, not only baudrate is important.

                                    I'd suggest to use a terminal program first to verify your scanner works correctly. Then use the same parameters for your code.

                                    Qt has to stay free or it will die.

                                    1 Reply Last reply
                                    4
                                    • ? Offline
                                      ? Offline
                                      A Former User
                                      wrote on 23 Aug 2018, 12:00 last edited by A Former User
                                      #52

                                      solved PermissionError
                                      now iam stuck in this

                                         QSerialPort* port = new QSerialPort( this );
                                         QSerialPortInfo::availablePorts();
                                         port->setBaudRate( QSerialPort::Baud115200 ); // possible something else, also check the manual
                                         port->setPort( QSerialPortInfo("ttyACM0") ); // COM port - check Device Manager for connected port
                                         QSerialPortInfo::availablePorts();
                                         if( port->open(QSerialPort::ReadOnly) )
                                         {
                                             ui->label->setText("port opended sucssefully");
                                                 connect(port, &QSerialPort::readyRead, this, [port]() {
                                                       if( !port->bytesAvailable() )
                                                           qDebug() << port->error(); ////////// I'm stuck here it seems that there is no data
                                                            return;
                                                       const QByteArray scannedData = port->readAll();
                                                       // ...
                                                 });
                                         }
                                         else
                                         {
                                             ui->label->setText("Error");
                                             qDebug() << port->error();
                                             QSerialPortInfo::availablePorts();
                                         }
                                      }
                                      

                                      also it will execute this if i clicked a button what if the user didn't click

                                      jsulmJ 1 Reply Last reply 23 Aug 2018, 12:15
                                      0
                                      • ? A Former User
                                        23 Aug 2018, 12:00

                                        solved PermissionError
                                        now iam stuck in this

                                           QSerialPort* port = new QSerialPort( this );
                                           QSerialPortInfo::availablePorts();
                                           port->setBaudRate( QSerialPort::Baud115200 ); // possible something else, also check the manual
                                           port->setPort( QSerialPortInfo("ttyACM0") ); // COM port - check Device Manager for connected port
                                           QSerialPortInfo::availablePorts();
                                           if( port->open(QSerialPort::ReadOnly) )
                                           {
                                               ui->label->setText("port opended sucssefully");
                                                   connect(port, &QSerialPort::readyRead, this, [port]() {
                                                         if( !port->bytesAvailable() )
                                                             qDebug() << port->error(); ////////// I'm stuck here it seems that there is no data
                                                              return;
                                                         const QByteArray scannedData = port->readAll();
                                                         // ...
                                                   });
                                           }
                                           else
                                           {
                                               ui->label->setText("Error");
                                               qDebug() << port->error();
                                               QSerialPortInfo::availablePorts();
                                           }
                                        }
                                        

                                        also it will execute this if i clicked a button what if the user didn't click

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on 23 Aug 2018, 12:15 last edited by
                                        #53

                                        @davidlabib said in [PLEASE HELP] how to make a barcode receiver?:

                                        qDebug() << port->error(); ////////// I'm stuck here it seems that there is no data

                                        Do you mean the slot is called but bytesAvailable() returns 0? If so what does

                                        qDebug() << port->error();
                                        

                                        print out?

                                        "also it will execute this if i clicked a button what if the user didn't click" - yes, if user does not click the button it will not be executed.

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

                                        ? 1 Reply Last reply 23 Aug 2018, 12:27
                                        0
                                        • jsulmJ jsulm
                                          23 Aug 2018, 12:15

                                          @davidlabib said in [PLEASE HELP] how to make a barcode receiver?:

                                          qDebug() << port->error(); ////////// I'm stuck here it seems that there is no data

                                          Do you mean the slot is called but bytesAvailable() returns 0? If so what does

                                          qDebug() << port->error();
                                          

                                          print out?

                                          "also it will execute this if i clicked a button what if the user didn't click" - yes, if user does not click the button it will not be executed.

                                          ? Offline
                                          ? Offline
                                          A Former User
                                          wrote on 23 Aug 2018, 12:27 last edited by
                                          #54

                                          @jsulm said in [PLEASE HELP] how to make a barcode receiver?:

                                          Do you mean the slot is called but bytesAvailable() returns 0? If so what does

                                          qDebug() << port->error();
                                          

                                          print out?

                                          nothing

                                          jsulmJ 1 Reply Last reply 23 Aug 2018, 12:30
                                          0

                                          44/57

                                          23 Aug 2018, 04:49

                                          • Login

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