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.4k 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.
  • raven-worxR raven-worx

    @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 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

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

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

      JKSHJ Offline
      JKSHJ Offline
      JKSH
      Moderators
      wrote on 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 last edited by
        #41

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

        JKSHJ 1 Reply Last reply
        0
        • ? A Former User

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

          JKSHJ Offline
          JKSHJ Offline
          JKSH
          Moderators
          wrote on 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 last edited by
            #43

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

            JKSHJ 1 Reply Last reply
            0
            • ? A Former User

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

              JKSHJ Offline
              JKSHJ Offline
              JKSH
              Moderators
              wrote on 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
              4
              • JKSHJ JKSH

                @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 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

                JKSHJ 1 Reply Last reply
                0
                • ? A Former User

                  @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

                  JKSHJ Offline
                  JKSHJ Offline
                  JKSH
                  Moderators
                  wrote on 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 last edited by A Former User
                    #47

                    @JKSH
                    Baud rate 115200

                    aha_1980A 1 Reply Last reply
                    0
                    • ? A Former User

                      @JKSH
                      Baud rate 115200

                      aha_1980A Offline
                      aha_1980A Offline
                      aha_1980
                      Lifetime Qt Champion
                      wrote on 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 last edited by
                        #49

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

                        1 Reply Last reply
                        0
                        • SGaistS Offline
                          SGaistS Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on 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
                          • aha_1980A Offline
                            aha_1980A Offline
                            aha_1980
                            Lifetime Qt Champion
                            wrote on 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 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
                              0
                              • ? A Former User

                                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 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
                                0
                                • jsulmJ jsulm

                                  @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 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
                                  0
                                  • ? A Former User

                                    @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 Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #55

                                    @davidlabib Looks like the slot isn't called.
                                    This code is broken:

                                    if( !port->bytesAvailable() )
                                        qDebug() << port->error(); ////////// I'm stuck here it seems that there is no data
                                        return;
                                    const QByteArray scannedData = port->readAll();
                                    

                                    It shoud be

                                    if( !port->bytesAvailable() ) {
                                        qDebug() << port->error(); ////////// I'm stuck here it seems that there is no data
                                        return;
                                    }
                                    const QByteArray scannedData = port->readAll();
                                    

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

                                    1 Reply Last reply
                                    2
                                    • ? Offline
                                      ? Offline
                                      A Former User
                                      wrote on last edited by A Former User
                                      #56

                                      @jsulm i have fixed it and still nothing

                                      1 Reply Last reply
                                      0
                                      • ? Offline
                                        ? Offline
                                        A Former User
                                        wrote on last edited by A Former User
                                        #57

                                        finally solved
                                        @Pablo-J-Rogina you were right it's lower level problem
                                        put this in the constructor
                                        and every barcode scan it will

                                        qDebug() << scannedData;
                                        

                                        Of course need modifying
                                        but here is the code

                                            QSerialPort* port = new QSerialPort( this );
                                            QSerialPortInfo::availablePorts();
                                            port->setBaudRate( QSerialPort::Baud115200 ); // possible something else, also check the manual
                                            port->setPort( QSerialPortInfo("COMX") ); // COM port - check Device Manager for connected port
                                            if( port->open(QSerialPort::ReadOnly) )
                                            {
                                                ui->label->setText("hi");
                                                    connect(port, &QSerialPort::readyRead, this, [port]() {
                                                          const QByteArray scannedData = port->readAll();
                                                          qDebug() << scannedData;
                                                          // ...
                                                    });
                                            }
                                        
                                        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