如何使用Qt创建蓝牙应用程序?

时间:2017-04-18 16:54:11

标签: c++ qt bluetooth

我是Qt框架的新手。这是我在实际应用程序中的第一个C ++实现。我在准备这个基于蓝牙的应用程序时遇到了问题。我也通过了Qt文档,但它没有用。代码是:                           CLASS HEADER

#ifndef MAINCLASS_H
#define MAINCLASS_H

#include <QObject>
#include <QBluetoothServiceDiscoveryAgent>
#include <QBluetoothServiceInfo>
#include <QBluetoothLocalDevice>

class MainClass : public QObject
{
    Q_OBJECT
public:
    explicit MainClass(QObject *parent = 0);

    ~MainClass();
    void startDiscovery(void);
signals:

public slots:
    void onDiscovery(const QBluetoothServiceInfo &serviceInfo);

private:
    QBluetoothServiceDiscoveryAgent *discoveryAgent;
    QBluetoothLocalDevice *bluetoothDevice;
};

#endif // MAINCLASS_H


                //  MEMBER DEFINITIONS


#include "mainclass.h"
#include <QDebug>


MainClass::MainClass(QObject *parent) : QObject(parent)
{
    bluetoothDevice = new QBluetoothLocalDevice();
    QBluetoothAddress bluetoothAddress = bluetoothDevice->address();

    discoveryAgent = new QBluetoothServiceDiscoveryAgent(bluetoothAddress);
    connect(discoveryAgent, SIGNAL(serviceDiscovered(QBluetoothServiceInfo)),
            this, SLOT(onDiscovery(QBluetoothServiceInfo)));
    discoveryAgent->setUuidFilter(QBluetoothUuid(QBluetoothUuid::ObexObjectPush));
    discoveryAgent->start();
    if(!discoveryAgent->isActive())
        qDebug()<<"Not active";
    if(discoveryAgent->error() != QBluetoothServiceDiscoveryAgent::NoError)
        qDebug()<<discoveryAgent->errorString();
}

MainClass::~MainClass()
{
    delete(discoveryAgent);
}

void MainClass::onDiscovery(const QBluetoothServiceInfo &serviceInfo)
{
    qDebug() << "Discovered service on"
             << serviceInfo.device().name() << serviceInfo.device().address().toString();
    qDebug() << "\tService name:" << serviceInfo.serviceName();
    qDebug() << "\tDescription:"
             << serviceInfo.attribute(QBluetoothServiceInfo::ServiceDescription).toString();
    qDebug() << "\tProvider:"
             << serviceInfo.attribute(QBluetoothServiceInfo::ServiceProvider).toString();
    qDebug() << "\tL2CAP protocol service multiplexer:"
             << serviceInfo.protocolServiceMultiplexer();
    qDebug() << "\tRFCOMM server channel:" << serviceInfo.serverChannel();
}

主要功能

#include "mainclass.h"

int main()
{

    MainClass obj;
}

这段代码没有显示周围蓝牙设备的列表。有什么建议吗?

0 个答案:

没有答案