QT开发低功耗蓝牙BLE连接ECB02模块进行数据收发

欢迎入群共同学习交流
时间记录:2024/1/22

一、注意点

(1)pro文件中引入bluetooth模块
(2)安卓端运行时需要同步打开定位功能才能扫描到蓝牙设备
(3)mingw套件不能在Windows上运行,需要使用MSVC套件编译才能在Windows上运行

二、使用步骤

(1)设备蓝牙操作类QBluetoothLocalDevice
    2.1.1 hostMode方法获取蓝牙打开状态
    2.1.2 powerOn方法打开蓝牙
    2.1.3 setHostMode方法关闭蓝牙
(2)蓝牙设备搜索类QBluetoothDeviceDiscoveryAgent
    2.2.1 setLowEnergyDiscoveryTimeout方法设置扫描超时时间,如果设置为0,则一直进行扫描
    2.2.2 为QBluetoothDeviceDiscoveryAgent对象的deviceDiscovered信号绑定槽,每发现一台蓝牙设备便会触发一次此信号,携带参数QBluetoothDeviceInfo,每台蓝牙设备的信息类
    2.2.3 使用start方法,开始搜索蓝牙设备,参数可以传递QBluetoothDeviceDiscoveryAgent::LowEnergyMethod表示搜索低功耗蓝牙设备
(3)低功耗蓝牙控制器类QLowEnergyController
    2.3.1 使用静态方法createCentral创建蓝牙控制器对象,参数为QBluetoothDeviceInfo对象
    2.3.2 为serviceDiscovered信号绑定槽,每发现一个服务触发一次此信号,携带参数QBluetoothUuid
    2.3.3 为connected信号绑定槽,用于判断是否已成功连接到蓝牙
    2.3.4 使用connectToDevice方法连接蓝牙
    2.3.5 使用disconnectFromDevice方法来断开连接
    2.3.6 连接成功后调用discoverServices方法获取连接蓝牙下的所有服务
(4)低功耗蓝牙服务类QLowEnergyService
    2.4.1 使用QLowEnergyController对象的createServiceObject方法创建QLowEnergyService对象
    2.4.2 为stateChanged信号绑定槽,监听服务状态
    2.4.3 为characteristicChanged信号绑定槽,收到信息时会触发此信号,信息为携带的参数newValue
    2.4.4 为descriptorWritten信号绑定槽,监听描述符是否成功写入
    2.4.5 使用discoverDetails方法获取服务详情
    2.4.6 服务状态改变以后写入描述符激活notify,否则无法收到消息,使用characteristics方法获取服务下所有的特征对象
(5)低功耗蓝牙特征值类QLowEnergyCharacteristic
    2.5.1 遍历特征值对象列表,使用isValid方法判断是否可用
    2.5.2 使用descriptor方法创建描述符对象,参数传递QBluetoothUuid::DescriptorType::ClientCharacteristicConfiguration,表示描述符类型由客户端特征值自行配置
(6)低功耗蓝牙描述符对象QLowEnergyDescriptor
    2.6.1 使用isValid方法判断描述符对象是否有效
    2.6.2 使用QLowEnergyService类的writeDescriptor方法向蓝牙写入描述符,激活notify,参数第一个为描述符对象,第二个为QByteArray::fromHex(“0100”)
(7)使用QLowEnergyService类的writeCharacteristic方法写入数据

三、参考代码

(1)头文件

#ifndef MWIDGET_H
#define MWIDGET_H

#include <QWidget>
#include <QBluetoothDeviceDiscoveryAgent> //蓝牙设备搜索对象
#include <QBluetoothLocalDevice> //本机蓝牙操作
#include <QBluetoothDeviceInfo>
#include <QList>
#include <QListWidgetItem>
#include <QLowEnergyController> //蓝牙控制器对象
#include <QBluetoothUuid>
#include <QLowEnergyService>
#include <QLowEnergyCharacteristic>
#include <QByteArray>

//static const QLatin1String serviceUUID("0000FFF0-0000-1000-8000-00805F9B34FB");
//static const QLatin1String readUUID("0000FFF1-0000-1000-8000-00805F9B34FB");
//static const QLatin1String writeUUID("0000FFF2-0000-1000-8000-00805F9B34FB");

QT_BEGIN_NAMESPACE
namespace Ui {
    class MWidget; }
QT_END_NAMESPACE

class MWidget : public QWidget
{
   
    Q_OBJECT

public:
    MWidget(QWidget *parent = nullptr);
    ~MWidget();

private:
    Ui::MWidget *ui;
    QBluetoothDeviceDiscoveryAgent *deviceDiscoveryAgent;
    QBluetoothLocalDevice *localDevice;
    QList<QBluetoothDeviceInfo> *deviceInfoList;
    QList<QBluetoothUuid> uuidList;
    QLowEnergyController *control;
    QLowEnergyService *mService;
    QLowEnergyCharacteristic mCharacter;
    QList<QLowEnergyCharacteristic> charList;

private slots:
    void mDeviceDiscovered(QBluetoothDeviceInfo deviceInfo);
    void on_openLocalDeviceBtn_clicked();
    void on_closeLocalDeviceBtn_clic
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值