Qt for Android 使用BLE串口蓝牙发送数据

本文介绍如何使用Qt for Android配合BLE串口蓝牙实现数据发送功能。作者在毕设中遇到Qt蓝牙套接字不适用于BLE的问题,通过研究和改造找到一个适合的项目,实现了连接和发送数据的关键步骤。内容包括搜索设备、过滤非BLE设备、建立连接、配置服务、发送和接收数据的代码细节。
摘要由CSDN通过智能技术生成

最近搞毕设,买了个串口BLE蓝牙想配合Qt for Android做一个自制的遥控器,参考了很多qt蓝牙的文章,最后弄成apk发现连接不了我的蓝牙,折腾了好久发现Qt官方的蓝牙套接字只适用于SPP传输的蓝牙,而BLE蓝牙则有专门实现代码,说实话比蓝牙套接字复杂了好几百倍,而且官方的示例工程是一些有特殊功能的蓝牙,不太能移植到单单发送数据的串口蓝牙。由于我对蓝牙研究也不是很深,参考了很多大佬的博客,发现了一个比较好,功能相近的项目,下面是链接

Qt for Androidble蓝牙串口助手

但是进去后界面排版有点不好看,也没有源码可以提供,并且我只是要一个发送数据的功能,所以经过改造,实现了可以发送数据的功能了,下面贴下关键步骤的代码

下面是构造函数执行的操作,首先是建立一个搜索设备的服务类,设置好各种信号槽连接,然后开始搜索设备。

    //搜索设备
    m_deviceDiscoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
    m_deviceDiscoveryAgent->setLowEnergyDiscoveryTimeout(20000);	//设置超时时间
    connect(m_deviceDiscoveryAgent,SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), this,
            SLOT(addDevice(QBluetoothDeviceInfo)));//搜索到设备操作
    connect(m_deviceDiscoveryAgent, SIGNAL(finished()), this, SLOT(scanFinished()));//搜索结束
    connect(this, SIGNAL(returnAddress(QBluetoothDeviceInfo)), this, SLOT(createCtl(QBluetoothDeviceInfo)));				//开始连接目标设备
    connect(ui->bluemsg,SIGNAL(cursorPositionChanged()),this,SLOT(autoScroll()));	//信息一直在最下面显示

    m_deviceDiscoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod);	//开始进行搜索
    ui->blue_search->setEnabled(false);

当搜索到设备后会进入下列槽函数,这里对目标设备进行了过滤,去除了非BLE的设备,然后添加进ListWidget的列表中

void MainWindow::addDevice(const QBluetoothDeviceInfo &info)
{
    if (info.coreConfigurations() & QBluetoothDeviceInfo::LowEnergyCoreConfiguration)
    {//判断是否是BLE设备
        QString label = QString("%1 %2").arg(info.address().toString()).arg(info.name());//按顺序显示地址和设备名称
        QList<QListWidgetItem *> items = ui->bluelist->findItems(label, Qt::MatchExactly);//检查设备是否已存在,避免重复添加
        if (items.empty())
        {//不存在则添加至设备列表
            QListWidgetItem *item = new QList
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值