Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Qt Bluetooth - no devices discovered.
Qt 6.12 LTS is out! See what's new in the release blog

Qt Bluetooth - no devices discovered.

Scheduled Pinned Locked Moved Solved General and Desktop
35 Posts 4 Posters 29.6k Views
  • 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.
  • J jenya7

    @jsulm
    this is h file

    class BT_DEVICE : public QObject
    {
        Q_OBJECT
    
        public:
        BT_DEVICE(QObject *parent = nullptr);
        void BLE_Scan();
    
    signals:
        void ScanFinished();
    };
    

    and cpp file

    BT_DEVICE::BT_DEVICE(QObject *parent) : QObject(parent)
    {
        connect(&bt_device, &Device::scanFinished, this, &BT_DEVICE::ScanFinished);
    }
    
    void BT_DEVICE::BLE_Scan()
    {
       scanning = 1;
    
       bt_device.startDeviceDiscovery();
    
       while (scanning) ;
    
       QVariant devices = bt_device.getDevices();
    }
    
    void BT_DEVICE::ScanFinished()
    {
        scanning = 0;
    }
    
    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #21

    @jenya7 said in Qt Bluetooth - no devices discovered.:

    while (scanning) ;

    Not related to your current problem: this is a no go in an event driven application! You are blocking the event loop! This means that no signals will be handled. Redesign this part of your app.

    Back to your current problem: I did a mistake above. BT_DEVICE::ScanFinished should be a slot of course.

    J 1 Reply Last reply
    0
    • jsulmJ jsulm

      @jenya7 said in Qt Bluetooth - no devices discovered.:

      while (scanning) ;

      Not related to your current problem: this is a no go in an event driven application! You are blocking the event loop! This means that no signals will be handled. Redesign this part of your app.

      Back to your current problem: I did a mistake above. BT_DEVICE::ScanFinished should be a slot of course.

      J Offline
      J Offline
      jenya7
      wrote on last edited by
      #22

      @jsulm
      yes. it was stupid of me to block. for now
      h

      class BT_DEVICE : public QObject
      {
          Q_OBJECT
      
          public:
          BT_DEVICE(QObject *parent = nullptr);
          void BLE_Scan();
      
      public slots:
          void ScanFinished();
      };
      

      cpp

      BT_DEVICE::BT_DEVICE(QObject *parent) : QObject(parent)
      {
          //for debug
          //connect(&bt_device, &Device::scanFinished, this, &BT_DEVICE::ScanFinished);
      }
      
      void BT_DEVICE::BLE_Scan()
      {
         scanning = 1;
      
         bt_device.startDeviceDiscovery();
      }
      
      void BT_DEVICE::ScanFinished()
      {
          QVariant devices = bt_device.getDevices();
      }
      

      Is it OK?

      jsulmJ 1 Reply Last reply
      0
      • J jenya7

        @jsulm
        yes. it was stupid of me to block. for now
        h

        class BT_DEVICE : public QObject
        {
            Q_OBJECT
        
            public:
            BT_DEVICE(QObject *parent = nullptr);
            void BLE_Scan();
        
        public slots:
            void ScanFinished();
        };
        

        cpp

        BT_DEVICE::BT_DEVICE(QObject *parent) : QObject(parent)
        {
            //for debug
            //connect(&bt_device, &Device::scanFinished, this, &BT_DEVICE::ScanFinished);
        }
        
        void BT_DEVICE::BLE_Scan()
        {
           scanning = 1;
        
           bt_device.startDeviceDiscovery();
        }
        
        void BT_DEVICE::ScanFinished()
        {
            QVariant devices = bt_device.getDevices();
        }
        

        Is it OK?

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

        @jenya7 said in Qt Bluetooth - no devices discovered.:

        Is it OK?

        Why did you comment out the connect?

        J 1 Reply Last reply
        0
        • jsulmJ jsulm

          @jenya7 said in Qt Bluetooth - no devices discovered.:

          Is it OK?

          Why did you comment out the connect?

          J Offline
          J Offline
          jenya7
          wrote on last edited by jenya7
          #24

          @jsulm said in Qt Bluetooth - no devices discovered.:

          @jenya7 said in Qt Bluetooth - no devices discovered.:

          Is it OK?

          Why did you comment out the connect?

          for debug. I still get the error.
          On Windows I get a different error - error: multiple definition of `Device::scanFinished()' in moc_device.cpp.
          first defined here device.cpp.
          I wonder how can it be - moc file is a generated file after build.

          jsulmJ 2 Replies Last reply
          0
          • J jenya7

            @jsulm said in Qt Bluetooth - no devices discovered.:

            @jenya7 said in Qt Bluetooth - no devices discovered.:

            Is it OK?

            Why did you comment out the connect?

            for debug. I still get the error.
            On Windows I get a different error - error: multiple definition of `Device::scanFinished()' in moc_device.cpp.
            first defined here device.cpp.
            I wonder how can it be - moc file is a generated file after build.

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

            @jenya7 said in Qt Bluetooth - no devices discovered.:

            I wonder how can it be - moc file is a generated file after build

            It is probably a remnant from previos version when scanFinished was declared as signal.
            Do a complete rebuild: delete build folder, run qmake and build.

            J 1 Reply Last reply
            0
            • jsulmJ jsulm

              @jenya7 said in Qt Bluetooth - no devices discovered.:

              I wonder how can it be - moc file is a generated file after build

              It is probably a remnant from previos version when scanFinished was declared as signal.
              Do a complete rebuild: delete build folder, run qmake and build.

              J Offline
              J Offline
              jenya7
              wrote on last edited by
              #26

              @jsulm said in Qt Bluetooth - no devices discovered.:

              @jenya7 said in Qt Bluetooth - no devices discovered.:

              I wonder how can it be - moc file is a generated file after build

              It is probably a remnant from previos version when scanFinished was declared as signal.
              Do a complete rebuild: delete build folder, run qmake and build.

              Deleted all from the build folder. Clean. Rebuild. I see new files created. The same problem.
              Renamed scanFinished for scanCompleted. Still the same problem.

              jsulmJ 1 Reply Last reply
              0
              • J jenya7

                @jsulm said in Qt Bluetooth - no devices discovered.:

                @jenya7 said in Qt Bluetooth - no devices discovered.:

                I wonder how can it be - moc file is a generated file after build

                It is probably a remnant from previos version when scanFinished was declared as signal.
                Do a complete rebuild: delete build folder, run qmake and build.

                Deleted all from the build folder. Clean. Rebuild. I see new files created. The same problem.
                Renamed scanFinished for scanCompleted. Still the same problem.

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #27
                This post is deleted!
                1 Reply Last reply
                0
                • J jenya7

                  @jsulm said in Qt Bluetooth - no devices discovered.:

                  @jenya7 said in Qt Bluetooth - no devices discovered.:

                  Is it OK?

                  Why did you comment out the connect?

                  for debug. I still get the error.
                  On Windows I get a different error - error: multiple definition of `Device::scanFinished()' in moc_device.cpp.
                  first defined here device.cpp.
                  I wonder how can it be - moc file is a generated file after build.

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

                  @jenya7 said in Qt Bluetooth - no devices discovered.:

                  On Windows I get a different error - error: multiple definition of `Device::scanFinished()' in moc_device.cpp.

                  Just realised: this is in Device class.
                  Please show Device code (header and cpp).
                  You probably defined scanFinished() in cpp file, you should not do that for signals!

                  J 1 Reply Last reply
                  0
                  • jsulmJ jsulm

                    @jenya7 said in Qt Bluetooth - no devices discovered.:

                    On Windows I get a different error - error: multiple definition of `Device::scanFinished()' in moc_device.cpp.

                    Just realised: this is in Device class.
                    Please show Device code (header and cpp).
                    You probably defined scanFinished() in cpp file, you should not do that for signals!

                    J Offline
                    J Offline
                    jenya7
                    wrote on last edited by
                    #29

                    @jsulm
                    I see. Now on Windows it compiles OK. On Linux the same 'vtable' problem.

                    jsulmJ 1 Reply Last reply
                    0
                    • J jenya7

                      @jsulm
                      I see. Now on Windows it compiles OK. On Linux the same 'vtable' problem.

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

                      @jenya7 said in Qt Bluetooth - no devices discovered.:

                      On Linux the same 'vtable' problem

                      Exact same code?
                      Do a full rebuild.

                      J 1 Reply Last reply
                      0
                      • jsulmJ jsulm

                        @jenya7 said in Qt Bluetooth - no devices discovered.:

                        On Linux the same 'vtable' problem

                        Exact same code?
                        Do a full rebuild.

                        J Offline
                        J Offline
                        jenya7
                        wrote on last edited by jenya7
                        #31

                        @jsulm
                        yes.
                        I've noticed in device.h at the beginning

                        class Device: public QObject
                        {
                            Q_OBJECT
                            Q_PROPERTY(QVariant devicesList READ getDevices NOTIFY devicesUpdated)
                            Q_PROPERTY(QVariant servicesList READ getServices NOTIFY servicesUpdated)
                            Q_PROPERTY(QVariant characteristicList READ getCharacteristics NOTIFY characteristicsUpdated)
                            Q_PROPERTY(QString update READ getUpdate WRITE setUpdate NOTIFY updateChanged)
                            Q_PROPERTY(bool useRandomAddress READ isRandomAddress WRITE setRandomAddress NOTIFY randomAddressChanged)
                            Q_PROPERTY(bool state READ state NOTIFY stateChanged)
                            Q_PROPERTY(bool controllerError READ hasControllerError)
                        
                        //and so on
                        

                        those Q_PROPERTY - do I need it? it's a QML related stuff.
                        I took the class from a QML project.

                        jsulmJ 1 Reply Last reply
                        0
                        • J jenya7

                          @jsulm
                          yes.
                          I've noticed in device.h at the beginning

                          class Device: public QObject
                          {
                              Q_OBJECT
                              Q_PROPERTY(QVariant devicesList READ getDevices NOTIFY devicesUpdated)
                              Q_PROPERTY(QVariant servicesList READ getServices NOTIFY servicesUpdated)
                              Q_PROPERTY(QVariant characteristicList READ getCharacteristics NOTIFY characteristicsUpdated)
                              Q_PROPERTY(QString update READ getUpdate WRITE setUpdate NOTIFY updateChanged)
                              Q_PROPERTY(bool useRandomAddress READ isRandomAddress WRITE setRandomAddress NOTIFY randomAddressChanged)
                              Q_PROPERTY(bool state READ state NOTIFY stateChanged)
                              Q_PROPERTY(bool controllerError READ hasControllerError)
                          
                          //and so on
                          

                          those Q_PROPERTY - do I need it? it's a QML related stuff.
                          I took the class from a QML project.

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

                          @jenya7 said in Qt Bluetooth - no devices discovered.:

                          those Q_PROPERTY - do I need it?

                          If you don't use them then you don't need them.

                          J 1 Reply Last reply
                          0
                          • jsulmJ jsulm

                            @jenya7 said in Qt Bluetooth - no devices discovered.:

                            those Q_PROPERTY - do I need it?

                            If you don't use them then you don't need them.

                            J Offline
                            J Offline
                            jenya7
                            wrote on last edited by jenya7
                            #33

                            @jsulm
                            oops. I did "Run qmake" then "Build" - and it's compiles, no errors.

                            now if I uncomment
                            connect(&bt_device, &Device::scanFinished, this, &BT_DEVICE::ScanFinished);
                            I get a run time exception

                            The inferior stopped because it received a signal from the operating system.

                            in devise.h

                            signals:
                                void scanFinished();
                            

                            in my h

                            public slots:
                                void ScanFinished();
                            

                            seems OK.

                            So this is wrong

                            Device::Device()
                            {
                                connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::finished, this, &Device::scanFinished);
                            }
                            

                            I connect a signal to a signal.

                            jsulmJ 1 Reply Last reply
                            0
                            • J Offline
                              J Offline
                              Jamie Biswas
                              Banned
                              wrote on last edited by
                              #34
                              This post is deleted!
                              1 Reply Last reply
                              0
                              • J jenya7

                                @jsulm
                                oops. I did "Run qmake" then "Build" - and it's compiles, no errors.

                                now if I uncomment
                                connect(&bt_device, &Device::scanFinished, this, &BT_DEVICE::ScanFinished);
                                I get a run time exception

                                The inferior stopped because it received a signal from the operating system.

                                in devise.h

                                signals:
                                    void scanFinished();
                                

                                in my h

                                public slots:
                                    void ScanFinished();
                                

                                seems OK.

                                So this is wrong

                                Device::Device()
                                {
                                    connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::finished, this, &Device::scanFinished);
                                }
                                

                                I connect a signal to a signal.

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

                                @jenya7 said in Qt Bluetooth - no devices discovered.:

                                I get a run time exception

                                Then run through debugger to see where and why exactly it is crashing...
                                I guess it is crashing inside ScanFinished() slot.

                                Connecting a signal to another signal is perfectly valid.

                                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
                                • Unsolved